diff --git a/Assets/Art/VagWorldBold.asset b/Assets/Art/VagWorldBold.asset index ca04669..469c4a2 100644 --- a/Assets/Art/VagWorldBold.asset +++ b/Assets/Art/VagWorldBold.asset @@ -41,7 +41,7 @@ Texture2D: m_ColorSpace: 0 m_PlatformBlob: image data: 1048576 - _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0b0c0b07070501000000000000000000000000000000000000000406070a0b0c0a07070501000000000000000000000000000000000000000406070a0b0c0a0707050100000000000000000000000000000000000000000000020507080a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a08070502000000000000000000000000000000000000000000000000000000000000000000010507070b0c0d0c0a070604000000000000000000000000000000000000000000000000000000000000000000000000000001040607090a0b0c0c0b0b0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0d0c09070604000000000000000000000000000000000406070a0c0d0d0c0906050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0d0c0b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080a0b0b0c0c0b0908070501000000000000000000000000000000000000000000000000000000000000000000000000000000020507080d1113131313131313131313131313131313131313131313131313120f0a06050300000000000000000000000000000000000000000000020507080b0d0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b0c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090a0b0b0c0c0c0b0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000004060708080706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0c0c0c0b0a0907070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040707090a0b0c0c0c0b0a080605030000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0d0c0b08070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213161819171413110d0802000000000000000000000000000000070c101313161819171413110d0802000000000000000000000000000000070c101313161818171413110d080200000000000000000000000000000000000003090e1214151718181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818171514120e0903000000000000000000000000000000000000000000000000000000000002080d11131417191a19161312100c070000000000000000000000000000000000000000000000000000000000000000000406070d1113141517181819181817161414110e0907070501000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131416191a1919161312100c07000000000000000000000001070c10131416191a19181613120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10121316191a19181414110e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000010507090e121415161718191818161414110d0806030000000406070a0c0d0c0a070604000000000000000000000000000000000000000003090e1214151a1e1f20202020202020202020202020202020202020202020201f1e1c1713120f0b0600000000000000000000000000000000000002090e121415181919181414110e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131417191a19171313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607070c101314151717181919181817161414110e080706040000000000000000000000000000000000000000000000000000000000000000070c10131315151413100d0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070c1012131517181819191817161413110d08060401000000000000000000000000000000000000000000000000000000000000000000000000000000030608080d11131416171818191818161513120f0b0605020000000000000000000000000000000000000000000000000000000000000000060b10121316191a19181414110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12181c1f202325252421201e19130e09030000000000000000000001070c12181c1f202325252421201d19130e09030000000000000000000001070d12181c1f202325252421201d19130e09030000000000000000000000000000040a0f141a1e212124242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242422211e1a14100b050000000000000000000000000000000000000000000000000002080d13191d20212426262523201f1c18120b030000000000000000000000000000000000000000000000000000000001070c101314181d202022242525262524242321201e19181413110d08050200000000000000000000000000000000000000000000000000000000000000000000000001070c12181d1f20232526262523201f1c18120b030000000000000000060b12181c1f20232526262522201f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20232526262421201e19140d08020000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141a1e21222324252625242321201e1915130f0a070c10131317191a19161312100c070000000000000000000000000000000000050d141a1e2121272a2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2824201f1b17110a02000000000000000000000000000002080d141a1e20212526262521201e19140d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d13191d20212426262623201f1c18120b060000000000000000000000000000000000000000000000000000000000000000000000000004070d10131417181d1f202224242525262525242321201e19161313100c07000000000000000000000000000000000000000000000000000000040a0f12181c1f20212220201d18120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313181c1f2022232525262525242221201d191413110d08010000000000000000000000000000000000000000000000000000000000000000000002050a0f121515191d2021232424252525242321201f1b1714120e090300000000000000000000000000000000000000000000000000000000020a11171c1f20232526262421201e19140d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c23282c2d303232312e2d2a251e1a150e060000000000000000030b12181d23282c2d303232312e2d2a251e1a140e060000000000000000040c13181d23282c2d303232312e2d29251e1a140d05000000000000000000000000060e151b1f252a2d2e3031313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131302e2d2a261f1c160f070000000000000000000000000000000000000000000000040c13191e252a2d2e31333332302d2c28231c150c0900000000000000000000000000000000000000000000000000040a0f12181d1f2024292c2d2f31313232323131302e2d2a252421201e1914110e0802000000000000000000000000000000000000000000000000000000000000000000030b12181d24292c2d3032333332302d2c28231c150c090100000000020a11171d23292c2d30323333322f2d2b27221b140b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000080c141c23282b2d2f323333312e2d2a251e19130c0500000000000000000000000000000000000000000000000000000000000000000000030a0f13191d2021262b2d2e303132323231302e2d2a25221f1b1512181c1f202326262623201f1c18120b030000000000000000000000000001090f171f252a2d2e3437393939393939393939393939393939393939393939393939393835312d2b27221b140b05000000000000000000000000050c13191f252a2d2e313333312e2d2a251f19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d2e31333332302d2c28231d17110a02000000000000000000000000000000000000000000000000000000000000000001070c1013181d20202324292c2d2f30313232323232312f2e2d2a2523201f1c18120f0a040000000000000000000000000000000000000000000000070f161b1d23282c2d2e2e2d2c29241f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181c1f2023282c2d2f303132323232312f2d2c292421201d19130f0a0400000000000000000000000000000000000000000000000000000000000003090e12151a1f212224292c2d2f303132323231302e2d2b2722211e1a140f0b0600000000000000000000000000000000000000000000000000080c141c23282b2d2f323333312e2d2a251e19130c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d23292e34383a3d3e3f3e3a3936302b2620180f08000000000000050d151d24292e34383a3d3e3f3d3a3936302b261f180f08000000000000050d161d24292e34383a3d3e3f3d3a3935302a251f170f080000000000000000000007101820262b31363a3b3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3b3a36312c2721191108000000000000000000000000000000000000000000050e161e24293036393a3e3f403f3d3a38342e271e1b120b0200000000000000000000000000000000000000000003090e151b1d24292c2d2f35393a3c3d3e3f3f3e3e3d3c3b3a3630312e2d2a25201e1914100b05000000000000000000000000000000000000000000000000000000000000040d151d24292f35393a3d3f40403f3c3a38342e271e1b130b030000020b141c22282f34383a3d3f40403f3c3937332d261d17110a020000000000000000000000000000000000000000000000000000000000000000000000000000010a121a1e262e34383a3c3f403f3e3b3936302a251e170e060000000000000000000000000000000000000000000000000000000000000000060b151a1e252a2d2e31373a3b3d3e3e3f3f3e3c3b3936302e2b27201d23282c2d30323332302d2c28231c150c080000000000000000000000010a131b212931363a3b40444646464646464646464646464646464646464646464646464645423d3937332d261d170e0500000000000000000000050e171e252a30363a3b3e40403e3b3a363029251e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e24293036393a3e3f403f3d3a38342e28221c140b03000000000000000000000000000000000000000000000000000000000003090e12181d1f24292c2d302f35383a3c3d3e3e3f3f3f3e3d3c3b393630302d2c28231d1b150f0b0400000000000000000000000000000000000000010a101921272c2e34383a3b3b3a39352f2b27221b140b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151a1d23282c2d2e34383a3b3d3e3f3f3f3e3d3c3a39352f2d2c29241e1b150e09030000000000000000000000000000000000000000000000000000040a0f141a1e20262b2e2f2f35393a3c3d3e3f3f3f3e3d3b3937332d2d2a251f1b17110a02000000000000000000000000000000000000000000010a121a1e262e34383a3c3f403f3e3b3936302a251e170e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f272f3439404446494b4c4a4746413a37312a211a110800000000050e171f272f3539404546494b4c4a4746413a37312a211a110800000000050f171f282f3539404546494b4b4a4746413a363129211911080000000000000000071019222a32373b4246484a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4846423b38332b231a110800000000000000000000000000000000000000050e17202830353a4146474a4c4d4c4946444039302d241d140b0000000000000000000000000000000000000000060b141a20262b2f35393a3e404547484a4b4b4c4b4b4a49474642413e3a3936302d2a251f1c160f0a04000000000000000000000000000000000000000000000000000000040d161f272f3539404547494c4d4c4c4946444039302d251d150b00020b141d262d3339404547494c4d4c4b4946443f382f27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000a131c242c30383f4446494c4d4c4b4746413b36302920170f060000000000000000000000000000000000000000000000000000000000020a111720262b3036393a3f424748494a4b4c4b4b494746413c3b37322b282e34383a3d3f403f3d3a38342e271e1a120a010000000000000000000a131c252d333b4246484d5152535353535353535353535353535353535353535353535352514f4a46443f382f2920170d040000000000000000050f17202930363b4246484b4c4c4b4746423b35302820170e050000000000000000000000000000000000000000000000000000000000000000000000000000050e1720282f353a4146474a4c4d4c4a46454039332d261d150c03000000000000000000000000000000000000000000000000000001070d141a1d24292c2f35393a3d40404547484a4a4b4c4c4b4b4a49474641403d3a38342e2b27201b160d080200000000000000000000000000000000010a131c232b32383940454648484745403937332d261d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b141a1f262b2e34383a3d404446484a4b4b4c4c4b4a494745413e3a39352f2b26201a150b06000000000000000000000000000000000000000000000003090e151b1f252a2d31373a3c3f414547494a4b4b4c4b4b494846443f3b3a36312b27221b140b0801000000000000000000000000000000000000000a141c242c30383f4446494c4d4c4b4746413b36302920180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313940454a51535658585754524c47423c332c231a11070000040d172029313940454b51535658585754524c46423c332c231a10070000040d172129313a40454b51535658585754524c46423b332b23191007000000000000030c19222b343c43474d535457575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575755534d48443d352c231a0b020000000000000000000000000000000000020d172029323a41454c5254575959585653514a423f362f261d12090000000000000000000000000000000000020a11171f262b3137394045474a4b515355575858595857575654524d4e4b4746413b3936302c27211b150c0600000000000000000000000000000000000000000000000000020b162028313940454b515356585959585653514a423f372f271d12090a141d262f383f444b5153565859595855535049413e332d261d140a00000000000000000000000000000000000000000000000000000000000000000000000008111c252e363e424a5053565859595754524c46413a322921170c02000000000000000000000000000000000000000000000000000000040b141c222831373a4146474c4d53555657585958575654524c4947433c3734394045464a4c4d4c4946444039302c241c130a000000000000000007101c252e373f454d53545a5d5f60606060606060606060606060606060606060606060605f5e5b57535049413b32291f160c01000000000000020b172129323a41464d52545859595854524d46413a322920170d02000000000000000000000000000000000000000000000000000000000000000000000000030c172029323a41454c5254575959595653514b443f382f261e150a00000000000000000000000000000000000000000000000000040c13181f252a2f35383a4045474a4c4b51535557575858595858575654524d4d494645403937322c272119140d0500000000000000000000000000000009131c252e353d43484b5153545553514b46443f382f271e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171f252a3137394045464a4a515355565858595858575554524c4a4745413a37322b261f17110a020000000000000000000000000000000000000000050d141a20262b30363a3c4347484c4c52545657575858585756545350494846423b37332d261d19130c04000000000000000000000000000000000008111c262e363e424a5053565859595754524c46413a322a21180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f29323b434b51545c6063656564615e56534d453e352c23190d04010c161f29333b434b51545c6063656564615e56534d453e352c22190d03010c161f29333b434b51555c6063656564615e56534d453d352b22190c0300000000000b151e2b343d464e53575e61636464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463615f57544f473d352c1d140a000000000000000000000000000000000008141f29323b444c52565e616466666563605c54504841382f251b0d03000000000000000000000000000000050c141c232831373c43474b515357555d60626464656565646463615e565b5754524c4746413b38332b272017110a0300000000000000000000000000000000000000000000000a141d28323a434b51555d60636566666563605c54514941392f241b0d111c262f38424a50555c60636566666562605b5350443f382f261b11060000000000000000000000000000000000000000000000000000000000000000000005101a232e37404850545c606265666664615e56524c443b33291e140a0000000000000000000000000000000000000000000000000000050e161d262d333c43474c525459575f6163646565656463615e5655544e474240444b5153565959595653514a423e362e251c1108000000000000040f19232e37404951575e61676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6864605b534c443b31281d12070000000000000a141d29333b444c52575e6164666664615e56524c443b32291e14080000000000000000000000000000000000000000000000000000000000000000000000000a151e29323b444c52565e616466666563605c55504a423830261c11060000000000000000000000000000000000000000000000070d161d24293136394045474b51535659555d6062636465656565656462615e565a5653514b47433d38322a251e170e0800000000000000000000000000050e1b252e3740474f54545c606161605d55535049413930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b141c222831363c42474b515356545c60626364656565656462605d565754514c47433c373128231c140c04000000000000000000000000000000000000060f171f252a32373b4246484e535559565d60626364656565646361605b5354534d46443f382f29241e160d0600000000000000000000000000000005101a232e38404850545c606265666664615e56524c443b332a1e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313b444c555c60666d707172716d68625f5750473e352b1f160c07131d28313b454d555d60666d707172706d68615f574f473e342b1f150b08131e28313b454d555d60676d707172706d68615e574f473d342b1e150b0000000007121c27303d464f585f62696e7071717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171706e696360594f473d2f261c1106000000000000000000000000000000020e1925303b444d565d60686d71727372706d66625a534a41372d1f150b0100000000000000000000000000050e161e262e343c42464e53555d606467676d6f707172727171706f6e696a6764615e5654524d48443d373228231c150c0400000000000000000000000000000000000000000006111b262f3a444c555d60676d70727373726f6d66625b534b41362d1f1617222d38424a545b60676d70727373726f6c65615a504941382d22170b040000000000000000000000000000000000000000000000000000000000000000000b16212c354049525a61666d6f727372716e68615e564d453b30261c1106000000000000000000000000000000000000000000000000050e1620282f383f444e53565e616569696e7071717272716f6e6867626058534e4a51545c606365666563605c5450483f372e231a0b0200000000000a16212b35404a525b62696e7377797979797979797979797979797979797979797979797979797875706c655e564c43392f24180d010000000006111c262f3b454d565e61696e717373716e69615e564c443b3025190e050000000000000000000000000000000000000000000000000000000000000000000006111c26303b444c565d60686d71727372706d67605b544a42382e23170c040000000000000000000000000000000000000000000710191f282f353b42464b5153555d60636669676d6f70717172727271706f6e68696663605c54544e48443d363029201a11090000000000000000000000020d17202d37404952596063666d6e6e6d6764605b534b43392e23180c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171d262d333b42464d53545c606367666d6e707172727271706f6d686864605d55544e47423c342e261e160e06000000000000000000000000000000020a1117212930363c43474d5254585f626669686d6f707172727271706e6c6565615e57535049413d352f281f18100700000000000000000000000000000b17222c35404a525a61666d6f727372716e68615e564d453b30271c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434c565e676d73797c7e7f7d7a756e69615a50473d31281d130d18242f3a434d575e676d73797c7e7f7d7a756e6961594f473d31271d120d19242f3a434d575e676d73797d7e7e7d7a756e6960594f463d30271d12070000000c18232e39424f59606a6f767b7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7b77706b60594f42382d22170b00000000000000000000000000000005111e2a36414d565e686d747a7d7f807f7c79716c645c53493f31271d1207000000000000000000000000060f17202830383f444d53585f62676d7174777a7b7d7e7e7f7e7e7d7c7a787674716d6866615e56544f47433d342e261e160d0400000000000000000000000000000000000000000b17222d38414c565d676d73797d7f807f7f7c79726d645d53483f31281d1c28333f4a545b666c72797c7f807f7e7c78716c605b53493f332720150a000000000000000000000000000000000000000000000000000000000000000004101c28333e47525b636c71787c7f807f7e7a746d685f574d42382e23170b0000000000000000000000000000000000000000000000030c162028323a424a50585f62686d7275787b7c7d7e7f7e7e7c7a77746f6a625f57545c60666d70727372706d66615a51493f352c1d140a00000000030f1b27323d47525c636d727b80848586868686868686868686868686868686868686868686868584827d776e685e554b4035291d1004000000000b17222d38424d575e686d757b7e7f7f7e7b756d685e564c41362a21160b000000000000000000000000000000000000000000000000000000000000000000000c17232e38424c565e686d747a7d7f807f7d79726c665c544a3f342821160b0000000000000000000000000000000000000000071119222b313a41454d53555d6064676d707376787a7b7d7d7e7f7f7e7e7d7c7a787673706d66626058544f46413b322c231b12090100000000000000000009141f29333f49525c636b6f75797b7b7a76716c655c554b40342821160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820292f383f444d53575f62666d707477797b7d7e7e7f7f7e7d7c7a7774716d67625f58534d443f38302820170f0600000000000000000000000000020b141b2227333b42464e53575e61666a6f7275787a7c7d7e7e7f7e7e7c7b7975726e6964605b534f45413a312a2219110800000000000000000000000004101c28333e47525c636c71787c7f807f7e7a746d685f574d42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b555e686e797f85898b8b8a86827b706c61594f433a2f2418111d2935404b555e696e798085898b8b8a86827b706b61594f43392f2418111d2935414c565e696e798085898b8b8a86817b706b60584e42392e23180c000004101c2834404a54606b6f7c83878a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a88837d706b60544a3f33281c0f0300000000000000000000000000000714202d3946525e686e7a81868a8c8c8b89847e746e645b5143392f23180c0000000000000000000000060f182129323a424a50575f616a6f74797e818486888a8b8b8c8b8a8a89878583817e7a77736e68636059544e443f3830281f160b02000000000000000000000000000000000000030f1b27333f49535d686d798085898b8c8c8b89847f746f645a5043392f241f2b3844505b666c787f85898b8c8c8b88847e746c655b50443d32271b0f04000000000000000000000000000000000000000000000000000000000000000714202c38444f59636e737e84898b8c8c8a86817a6e695f544a3f34281c1003000000000000000000000000000000000000000000000a151e28323a444c545b606a6e747a7f828588898a8b8c8b8a898784807c766e6a615c666d72797d7f807f7d79716c635b51473e2f261b110600000007131f2c38434f59636e737f868d9092989393939393939393939393939393939393939393939892918e8a827a6e675d5145392c201409000000030f1c28333f4a545e696e7a81878b8c8c8b87817a6e685e52463e33281c1004000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545e686e7a81868a8c8c8c89857f786d665c50443d32271b1004000000000000000000000000000000000000060f19232b343d434b51575e61676d71757a7d7f828586888a8a8b8b8c8b8b8a89878583807d79746f6a636059524c443d352d241b13090000000000000000020e1a25303b45515b636e737c8286878886837e776d675c51453d32271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018212a323b424a50575e61696e74797d80838688898b8b8c8b8b8a888784817e7a746f6a625f57504a423a322921180f060000000000000000000000000a141d262d333e454d52585f62696e73777b7f828487898a8a8b8b8b8a898785827f7b76706c656059514c433c342b231a110800000000000000000000000814202d3944505a636e737e84898b8c8c8a86817a6e695f544a4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d676e7a838c9297989899938f867e706b60554b4035291d13202c3945515d676e7b838c9297989899938f867d706b60554b4035291d13202c3945525d686e7b838c9298989899928e857d706a60544b4034281c10040006121f2c3844515c666f7d8690949697979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797969590877d70665b5044382b1f1206000000000000000000000000000713202c38444f59616e7a848e929999999896918b80746d62554b4034291c1004000000000000000000040e18212a333b444c545c60696e757c81858a8e91969597979898989797969892908e8a87837f7b75706b626058504a423931281d140a00000000000000000000000000000000000005121f2b3744505b656d7a838d92979899999897918b81746c62554b4035292a36424d57606c78818c92979899999896918b81776c60584e43372b20150a000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b73808a919698999999928e847b6e665c5044382b1f120600000000000000000000000000000000000000000006111c26303a444c565e666c727c81868c8f92979697989898979696918d88827b716c676d787f85898c8c8c89847e726d63594f41382d22170b0000000915222f3b4854606b73808c92999d9fa2aa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9b949083796d6053473b31251a0e02000006121f2b3844505b666e7b848e939a99999a938e847a6e61594f44382c201407000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666e7a838e929999999897928b81786d60594f44382c21160a0000000000000000000000000000000000030d17212b353d464e555d60696e74797e8286898c8f91979596979898989898979597928f8d8985817c766f6b615e564f473f372d251b12080000000000000005111e2a36424d57626d7380898f92989993908a81796d60594f44382c1b110600000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a333c444c545b60696e757b8085898d909299969798989898979596918e8a86817c756e69605c544c443b332921180d040000000000000000000006111b262f383f4450575e616a6f757b8084888c8f9196959697989898979697928f8c87837d78706b605d554e463d352c231a1007000000000000000000000a1623303c4955616c73808a919698999999928e847b6e665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606d798390959fa2a9aba49f9892877d70675d5145392c201e2a36414c56606d798390959fa2a9aba49f9892877d6f675d5145382c1f1e2a36424d57606d7a8390959fa2aaaba39f9792867c6f665c5145382c1f1306000713202d3a4653606d788491989fa6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a7a0999184786c605346392d201306000000000000000000000000000916222f3b4854606b76828f969fa3aba6a9a19e928b7f72675c5145382c1f13060000000000000000030c16202a333b454d565e666d737b82878e92989a9da0a8a3a4a5a5a4a4a3aaa29f9d9a9a93908c86827d766f6a605c544b43392f261c11060000000000000000000000000000000004101c2834404b55606c77828f959fa2a9a6a6a9a19e938b7e71675d5145392c2d3a46525e69737f8c939ea1a9a6a6a8a09e938c80736a6054473c32261b0f00000000000000000000000000000000000000000000000000000000000005121e2a36424d5763707d8a929ea0a8a6aba39f969083786d6053463a2d2013070000000000000000000000000000000000000000000c17232e38424c565e686d787f868e92989c9ea1a9a4a4a5a5a4a8a09e9a948f867e716d79828c929798999896918a7f726b6153493f33271b0f030004101c2834404b55636f7c89929fa3abacaeb4acacacacacacacacacacacacacacacacacacacb4aeacaba69f958c7f7366574d42362a1e120500000613202d394653606c788390969fa4acaca49f968f82766b6155483c2f2316090000000000000000000000000000000000000000000000000000000000000004111d2935414c55606d788390959fa3aba6a9a19e938d80746b6054483d32271b0f010000000000000000000000000000000009141f29333d474f5860676d737b80858a8f9298999c9ea1a9a3a4a4a5a5a5a4a3a9a29e9c9997928e89837d756e68615951493f372d241a0f060000000000000714202d3a46525e69727f8c929c9fa3a49f9d938e81746b605448382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000030d18212a343c464e565e666c727b81878d92979a9d9fa3aba4a5a5a5a4a3a8a09e9b98928e88827b726d665d564d453b332920160c010000000000000000020c17222d384149505a61696e757c81868d9196999c9ea1a8a3a4a5a5a5a4a9a29f9c9a93908a837d756d675f584f473e352c22190e05000000000000000005121e2a36424d5764707d8a929ea0a8a6aba39f969083786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d6873808d959fa7adb3b5afaaa2999185796d6053473a2d20202d3946525e6874808d95a0a7adb3b5afaaa2999184796d6053473a2d20202d3a46525e6974818e95a0a7aeb4b5afa9a2989184796d6053463a2d201307000a1724313d4a5764707d8a96a1aab0b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aba096897c6f6256493c2f231609000000000000000000000000000a1623303d495663707c89949fa8aeb5b3b2ada59e9185796d6053473a2d20140700000000000000000a151e28323b454d575e686d787f868f939a9fa2aaaaacb2b0b1b1b2b1b1b0b3aeaba9aca49f9d99928f89837c736d665d554b42382d22170b0000000000000000000000000000000006131f2c3845515c67717e8b949ea7adb3b3b2b2ada59e9285796d6053473c3135404b55616e7b86929fa5adb3b3b2b2aca59f93877c6f62584e43372b1c120700000000000000000000000000000000000000000000000000000000000714212d3a46535e697783909da4acb2b3b5afa8a0958a7e7164574b3e2e23180c000000000000000000000000000000000000000003101c28343f4a545e686d7a828c92999fa3aaabadb3b0b1b2b1b1b2acaaa69f9892887e74818e949ea1a9a6a8a19e93887d70655b5044372b1f12050006131f2c3845515c6775828f9ca4aeb5b8babfb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbab8b7b0a79e918478695e53463a2d21140700000b1724313e4a5764717e8a959fa8afb6b6afa89f948a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000613202c3945515d67727f8c959fa7aeb4b3b3ada59d92897d7063594f43382c1e1308000000000000000000000000000000020e1a26313b454f59606a6f7980868d92989b9fa3aaa9abadb3b0b0b1b2b2b1b1b0b3adaba9a9a29f9a949089817a706b625b51493f362c21180b0200000000000814212e3b4754616e7b86929fa4acaeafaca59d93897d706353493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333c464e585f686e787f868e93999ea1a9aaacaeb4b1b1b2b2b1b0b2acaaaaa39f9b938f867f786d685f574d453b32281e130800000000000000000a141e27333f49535b606c717b81888e92999ea0a8a8abadb2b0b1b1b2b1b1b3adabaca49f9c959089817a6f6a60594f473e342b20170b02000000000000000714212d3a46535f697783909da4acb2b3b5afa8a0958b7e7164584b3e2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929fa7b1babec0bbb4aba1978c7f7265594c3f2e23212e3a4754616d7a86929fa7b1babec0bbb4aba1968b7f7265584c3f3225212e3b4754616e7b86929fa8b1babec0bbb3aaa0968b7e7165584b3e3225180b000d1a2734404d5a6773808d9aa8b2bcbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb2a8988b7e7165584b3e3225180b000000000000000000000000010e1a2734414d5a6774808d9aa6b0bbbfbfbdb9ada197897d7063564a3d3023170a0000000000000006111c26303a444d575f696e7a828c92989fa4acaeb4b7b8bdbdbebebfbebdbdbebab8b6b6afacaba39f9b94908780786d675d544a3f33281c12070000000000000000000000000000000713202d3a4653606d7984919ea6b0babebfbfbeb9ada1978b7f7265584e43373845515d6774808d98a3aeb9bebfbfbdb9afa4998f82766a5f5347392e23180c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87959fabb9bdbfc0bbb1a79c8f827569544a4034281c10040000000000000000000000000000000000000006121f2c3844505c666d7a838f949fa3abaeb4b8b9bebdbebfbebdbdb9b7b0aaa29a92877f8b939ea6adb3b3b2ada49a9083786c605346392d201306000713202d3a4653606d7985929facb8bfc5c6cad0c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d0cbc7c5c2b9ada196877b6e6154483b2e21150800020f1c2935424f5c6875828f9ba7b1bbc0c0bbb0a69b8e8175685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a85929fa7b1babfbfbeb9aea49d9083766b6054483a2f24190d01000000000000000000000000000005121e2a36424d57606b707c848d92999fa2aaacaeb4b5b8b9bebdbdbebebfbebebdbeb9b8b6b3adaba69f9c938e857d726d625b51483e332a1d140a00000000000d1a2633404d596673808c98a3aeb8babbb9afa59b8f8275655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000007121d27313b454e585f6a6e7a828c92989fa4abadb3b6b9babfbebebfbebebdbdb9b7b4aeaca59e98928c827a6e695f574d443a2f24190d0400000000000006111c26303844505b656c737e858e939b9fa3abacb2b5b7b9bdbdbdbebebebdbebab8b6afaca7a09d938e847c706b61594f463d32291d140a000000000000000815222e3b4855616e7b8895a0acb9bdbfc0bbb1a79c8f827669554b4035291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8a98a2aeb9c2caccc6bdb3a99d9083766a544a40342825313e4b5864717e8b99a3aeb9c3caccc5bdb2a89c8f8376695c5043362925323f4b5865727e8b99a3afbac3cacbc5bcb2a89c8f8276695c4f4336291c10000e1b2835414e5b6874818e9ba7b4c1cecacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfbfb2a5998c7f7266594c3f3326190c00000000000000000000000004101d2a3743505d6a7683909da9b6c2cbcfc9beb3a9998c807366594d4033261a0d000000000000000c17232e38424c565f696e7b848f949fa3aaafb6babfc4c5c8cecacbcbcbcad0cac6c5c3c0bbb9b5afaca69f99938d82796d665b5044392e23180c000000000000000000000000000005121e2a36424d5764717e8b96a1adb8c2cad0cfc9beb3a99d9083776a5f53473a3a4753606d7985929faab4bfcacfcec9c0b5ab9f94887c6f62544a4034281c1004000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a7b1bcc9cecbc3b8ab9e928578665c5144382c1f120600000000000000000000000000000000000005111e2a36424d57606d78828f959fa6aeb4babfc5c6c9cfcbcbcbcec9c5c2bcb4aca399928b919ba5afb9bebfbdb6aca095887c6f6255493c2f221609000815222e3b4855616e7b8898a2aebac7d1d3d6dbd2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dcd6d3d2c9bdb2a995897c6f6256493c2f2316090003101c28343f4a546b7885919eabb8c2ccccc2b7ab9e9184786b5e5145382b1e120500000000000000000000000000000000000000000000000000000000000713202c38444f5965727f8c97a2adb9c2cbcfc9c0b8ab9f95897c6f63564c4135291d110400000000000000000000000000000714212d3a46535f69707d8691969fa3abaeb4b9babfc2c4c6c9cfcacbcbcbcbcbcfcac6c5c2bebab8b0aba59e9792877f726d625a50453b2f261b110600000000101d2a3643505d697683909caab4bfc7c7c0b8ab9f9285796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434d575f6a6f7c848f949fa2aaafb5b9bec3c5c7cbd1cbcbcbcbcec8c5c4bfbab8afaaa39f948f847b6e695f564c4135291f160c0100000000000b17232e3842505a606c77808a92989ea5acafb5b9bdc2c4c5c9cfcacbcbcbd0cac6c5c0bbb9b1aca59e9691867d706b61584e443b2f261c11060000000000000b1824313e4b5764717e8a97a7b1bcc9cecbc3b8ac9f928579675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99aab4bfcbd6d7cfc4b8ac9f928579665c5144382c2734404d5a6773808d9aabb4bfcbd6d7cfc4b8ab9e9285786b5f5245382c2734414d5a6774808d9aabb5c0ccd6d7cec4b8ab9e9184786b5e5245382b1f12000e1b2734414e5a6774808d9aaab4bfc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bdb2a8988b7e7265584b3f3225180c00000000000000000000000005111e2b3844515e6b7784919eaab7c4d1dacfc0b4a79a8d8174675a4e4134271b0e00000000000003101c28343f4a545e686e7b8491969fa6aeb4bbc0c7cad0d1d4d3d2d0cfcececfd0d2d2d2ccc8c6c0bbb9b0aba49f948f82786c60544a4034281c1004000000000000000000000000000714212d3a46535f697683909da8b2bdcad6dbdacfc5b8aca095887b6f6255483c414c5564717e8a98a2aebcc6d0dad9d2c7bdb0a69a8d8174665c5144382c1f1307000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1becdd9d2c6b9ada19786796d6053463a2d2013070000000000000000000000000000000000000714202d3a46525e69727f8c949fa7b0babfc6cbd0d2d5d3cec8c5c4c1c0c1c2beb4aba39f989ba3adb7c1cacfc7beb1a7988b7e7265584b3f3225180c000916222f3c4955626f7c8895aab4bfcad6dfe2e7dfd8d4d1d0cececececececececececececececed0c8bcb1a795887c6f6255493c2f2216090006121f2c3844505c667986929facb9c5d2d2c5b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000916222f3b4854606b7784919da9b3becbd7dad4c7bcb1a79b8e8174685d5245392c20160a0000000000000000000000000004111d2935414c56616e7b859298a1a8aeb4babec5c7cbd1d1d2d5dad7d7d8d8d8d7dbd6d2d1cfcac6c2bbb7afa9a199928b7f726c61574d41382d22170b00000000121e2b3845515e6b7884919eabb7c4d1d3c6baada297877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b555f696f7c8591969fa6aeb4bbc0c7cacfd2d3d7dcd8d8d8d7d9d4d2d0cbc7c1bcb4aea69f9691847b6e685d52453f31281e13080000000003101c28343f4a54616c73808d929fa2aaafb9bbc0c7c9ced1d2d5dad7d8d8d8dbd6d3d2ccc8c3bcb8afa8a09892867d706a60564d42382d22170b0200000000000c1925323f4c5865727f8b98a5b2becdd9d3c6baaea298867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cfdbdfd3c6baaea29886796d6053463a2d2834414e5b6774818e9aa7b4c1d0dbdfd2c6b9ac9f9386796c605346392d2835414e5b6874818e9ba7b4c1d0dbdfd2c5b8ac9f9285796c5f5246392c1f13000c1825323f4b5865727e8b98a3aeb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b3aba096897d6f6356493c3023160900000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b4a89b8e8175685b4e4235281b0f000000000005101a242c3844505c666d7a849196a0a8b0babfc6ccd2d5d2d0cac6c5c3c2c1c1c2c3c5c7cbd1d2d1cbc7c2bdb5afa69f948b7f72665c5144382c1f1206000000000000000000000000000815222e3b4855616e7b88959fabbac4cfdce6e1d4c8bcb1a7998c807366584e4345515d6775828f9caab3beced8e2e3d9d0c2b8ab9e9285796d6053463a2f24180d010000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d6cabeb3a994877a6d6154473a2e211407000000000000000000000000000000000004101c2834404a54616e7b86929fa6b0b9c2cbd1d6dcd3ccc7c3bdb8b7b4b3b4b5b8bab4aeaca5a7adb5bfc9d6d9d0bfb3a6998c807366594d4033261a0d000916222f3c4955626f7c8895a2afbbd0dbe7e6ddd4cdc8c4c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb8aca095877a6d6154473a2e211407000713202d3a4653606d798699a3afbbc7d3d3c7baaea39886796c605346392d2013060000000000000000000000000000000000000000000000000000000005111d2935414c5663707c8996a0acbbc5d0dde4d8cdc2b8ac9f92867a6d6054473d32271b0f010000000000000000000000000613202c3945525d6875818e97a2aab2babfc6cad0d3d7dcdedfdfdcdad8d7d6d6d6d8dbdfdedbd6d3cdc7c1bbb3aba39f93887e71695f53493f33271b0f03000000121f2c3945525f6c7885929fabb8c5d2d6cabeb3a994877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000020c16202c3845515d676e7b859297a1a8b0babfc6ccd2d6dadcd6d3d2d0cfcfd1d2d5dadcd6d3cfc6bfbab0a8a09691847a6d605a50433a2f24190d0000000006121f2b3844505c66707d8a929ca4aeb3bcc1c7cbd1d5d9ddd8d4d2d1cfcfd1d2d5d9ddd8d4cec8c1bab2aaa29892867c6f695e544a3f33281e130800000000000d192633404c5966737f8c99a6b2bfccd9d6cabfb4aa94877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a9b3becad5d7cec5b8ab9f928578665c5144382c2733404d5a6673808d99aab3becad5d7cec5b8ab9e9285786b5f5245382c2734414d5a6774808d9aaab4bfcad5d7cec4b7ab9e9184786b5e5145382b1e12000814212e3b4754616e7b86929fa3aba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7a9a1999184786d6053463a2d20130700000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000c17222b37434e58606d78828f96a0a8b2bac2cbd0d7cfc9c6c5bfbab8b6b5b4b4b5b7b9bbc0c4c6c9cfd3d0c7c0bbb0a69e9185796d6053463a2d20130700000000000000000000000006131f2b37434e5866737f8c99a7b1bcccd6e0eee4d9cec3b7aa9e9184776a5f53474754606d7a86929facb9c5d0dfeaebdfd2c6b9ada1978a7d7063554b4035291d11040000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8dacfbaada094877a6d6154473a2e211407000000000000000000000000000000000006121f2c3844515c6673808d98a3aeb8c2cbd7dcdad1cac1bbb7b2acaaa8a7a7a9acaeb4bab9b2b3b8bfc7d0dbd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2dfd4cbc3bcb8b6b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4aea59d908377685e5246392d201307000713202d3a4653606d798693a0b5c0cbd7d7cbbfb49f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000713202d3946525d6875818e9ba8b2bdcdd7e1e9e0d3c7baaea2988b7f7265584e43382b1e13080000000000000000000000000714212d3a4754606d7a86929fa9b3bcc4cbd1d6dbe0dfdcd7d3d2d0cdcbcac9c9cacbced2d3d6dbdfd8d3cdc5bdb5afa49a92867b6e655b5044372b1f160a000000121f2c3945525f6c7885929fabb8c5d2dbd0baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e58606d79839097a1a9b2bac2cad0d7ddd8d3d0cbc7c5c3c2c3c4c5c9cfd2d7e0d8d1cbc2bab2a8a0968f82756c62554c4135291c11060000000713202d3a4653606d7884919ea4aebabec5ced3d7dcd9d4d2ccc8c6c4c2c3c4c5c9ced3d6dbd9d4ccc3bcb4aaa29892857b6e665b50443a3025190d02000000000d192633404c5966737f8c99a6b2bfccd9dbd0baaea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a2adb9c1c9cbc5bcb2a89c90837669544a40342824313e4a5764717d8a98a2aebac2c9cbc5bcb2a89c8f8276695c4f43362925313e4b5864717e8b98a2aebac2c9cbc5bcb1a79c8f8275695c4f4236291c0f000714202d3946525e68737f8c92999a9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a9792877d70665c5044382c1f120600000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000005111c28333b4754606a73808c949fa8b2bac4ccd6d1cbc5beb9b8b4aeaca9a9a8a7a8aaacafb5b8b9bec4c7cdd2ccc2b9ada197897c6f6356493c302316090000000000000000000000000815222e3b4754606a7784919daab7c2cddde8f2eaded2c5b8aca096887c6f6255494b5564717e8a99a3aebac7d3e0eceee2d6cabeb3a99b8e8175675d5145392c2013080000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e21140700000000000000000000000000000000000713202d3a4653606d7985929eaab4bfcad4dddbd1c8bfb8b0aaa8a09d9b9a9a9c9fa3aaaeb3bcc4c3c9d0d9e2d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e4d8cdc3b9b1abaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7aaa29f938b7e7164564c41362a1d1105000713202d3a4653606d798693a0acb9d1dcdcd1b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86929facb9c3cedfe9efe2d6cabfb4aa9d9083776a6054473a2f24190d010000000000000000000000091623303c4956636f7c8999a3aebbc5ced7dcdfdad5d2d1cbc7c5c3c1bfbdbcbcbdbec1c5c6cad0d8e0dfd6cfc7c0b6aca2989082786c6053463d32271b0f030000121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e21150b0c0c0c0b0a0807050200000000000000000000000000000000000000000000000000010d1925303a47535f6a74808d95a0a9b3bbc4ccd6dbdad5ccc7c6bfbab8b6b5b6b7b9bdc4c6ccd7dddcd7ccc4bab2a89e948b7e71675d5145382e23170c0000000a1723303d4a5663707d8996a0acb6c0cad0d7e0d8d3cdc8c7c0bbb9b7b6b6b7b9bdc4c6cad0d7ded5cec5bcb4aaa1978f82786c60564c41362a1e1308000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929ea6b0b9bdbfbbb3aaa1968b7f7265584c3f2e23212d3a4754606d7a85929fa6b0b9bebfbab3aaa0968b7e7165584b3e3225212e3a4754616d7a86929fa6b0b9bebfbab3aaa0958b7e7164584b3e3125180b0005111e2a36414d56606c777f868b8d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8a857e706b61544a3f34281c100300000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000814212d3945505a626f7c87929fa6b0bac4ccd6cfc7c0bbb3adabaaa29f9d9c9b9b9c9d9fa3ababadb2b7bcc2c7ccc9beb3a9978b7e7164584b3e3125180b0000000000000000000000030f1c28333f4a54626f7c8895a0acb8c5d1deebf9ede1d4c8bdb2a8998d807366584e515d6775828f9babb4bfcbd7e3eff2e6dacfc5b8ac9f92867a6d6053473a3025190d0100000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e21140700000000000000000000000000000000000a1723303d4a5663707d8997a1adbcc6d0dce0d3c9bfb6aea69e9c96918e8d8e8f92989fa2aab2bac4cfd8e2e6d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e0d4c8bcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a98928c81756c6156443a3025190d01000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000007131f2c38444f5965727f8c98a3aebac7d3e0ecf3e7dbd0c6b8aca095897c6f62564c4135291d110400000000000000000000000a1723303d4a5663707d8996abb4bfcbd7dbd6d3cfc9c6c5c0bbb9b6b4b2b0b0afb0b2b4b8babfc6ced2dbe1d9d1c7beb4aa9f948a7d7064584e43382c1f13070000121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e21161818191818161414110e0806030000000000000000000000000000000000000000000005111d2935414c56626f7c87929fa7b1bbc5cdd6ded6cfc9c2bbb7b4aeacaaa9a9abadb2b6bbc1ccd2d9ded6ccc3bab0a69e92857a6d60544a3f34281c100300000d1a2633404d596673808c99a8b2bdc8d6dbd9d4ccc7c3bcb8b6afacaba9a9aaacb2b8babfc6ced5ddd7cfc6bcb3a99f948b7f72685e52463a3024190d010000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d67727f8c949ea6adb2b5aea9a2989184796d6053463a2d20202c3945515d67727f8c949fa6adb3b4aea9a1989184786d6053463a2d20202d3946525d6873808c949fa6adb3b4aea9a1989183786d6053463a2d20130700020e1925303b44505b656c737b7e8181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181807e79706c61594f42382e23170c0000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000a1723303c4955616c76839099a3afb8c2ccd5cec5bdb5afa9a19e999892908f8e8e8f9092999a9ea1a9abb0b9bbc0c7beb3a9978b7e7164584b3e3125180b000000000000000000000006121f2b3844505b6673808d9aa8b1bdc8d4e1edf9f1e5d9cec3b7aa9e9184776a605453606d7a86929facb8c5d1dce7f3f7ece0d3c6baaea2988a7e7164564c41362a1d110500000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e21140700000000000000000000000000000000000d1a2633404d596673808c99a9b3beced8e2d8cec1b7aea49c948f888481808182868c9298a1a8b2bdc6d1dce7d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd1c4b8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8a857f786c605a504532291e130800000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000915222f3b4854606b7784919daab4bfcbd7e3eff8ede2d4c8bcb1a79b8e8174685d5245392c20150a00000000000000000000000916222f3c4955626f7c8899a3aebac7d2d0cac6c5beb9b8b5afaca9a7a5a4a3a3a3a5a8acaeb4bcc0c8d1d9e3d9d0c6bcb0a69d9083776a6054483b2e2215090000121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e212325252625252321201e1913120f0b0600000000000000000000000000000000000000000713202d3946525e6875818e99a3afb9c3cdd6ded5cdc4beb9b0aaaaa39f9d9c9c9ea1a8aaafbbc0c7d0d9ded5ccc1b9ada2978c7f73665c5044382c1f120600000e1b2834414e5b6774818e9aa7b4c1cedad5cec8c2bbb7b1acaca49f9e9c9c9ea0a8acaeb4bcc3cbd5ded8cec5bbb0a69f92857a6d61564c4135291d11050000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55606c78828f949ea1a9aba39f9792867c6f675c5145382c1f1d2935414b55606d78828f949ea1a9aba39f9792867c6f665c5144382c1f1d2935414c56606d78828f949ea1a9aaa39f9792867c6f665c5044382b1f1206000008141f27333f49535b60696e72747575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757474716d67615a50473d30261c11060000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000007131f2c38434f5964717e8a959fabb5c0cad4d0c5bcb4aba39f97928c888583828181828486898d91979c9fa6acafb5b9b9ada297897c706356493d3023160a00000000000000000000000613202d394653606c7884919eabb8c3ced9e5edecedeaded2c5b9aca096887c6f62555564717e8a98a3aebac7d3e2edecedefe2d6cabfb4aa9c8f8275685e5246392d20140900000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfdcdcd0c6bcafa59c928c827c7775747476797f859196a1abb4bfcbd7e3d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd0c3b6aa9d908382828282828282828282828282828281807e7a736c665b50483e3420170c0200000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000004111d2935414c56636f7c8995a0acbcc6d1dce7f3fef0e4d9cec3b8ac9f92867a6d6054473d32271b0f01000000000000000000000714202d3a4753606d7a86929facb9c1c5c4bebab8b3adababa39f9d9a9897969697989b9fa2aaaeb6bfc7d1dce2d7cec2b8aca095897c6f6256493c31251a0e0200121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2e303132323231302e2d2a25201f1c17110c060000000000000000000000000000000000000714212e3a4754616d7a86929fabb5c0cbd5dfd5ccc3bbb3ada69f9c9892908f9091969b9ea5afb5bdc7d2ddded6cabeb3a99e9185796d6053463a2d20130700000e1a2734414d5a6774808d9aa7b3c0cfcfc9c3bcb8b0aba7a09d9a93918f909196999fa2aab1b9c3ccd5e0d6cdc2baada2978d8074685d5246392d2014080000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3944505b666d79828b9196979899928e857d706a60554b4034281c18242f3a44505c666d79828b9197979899928e857d6f6a5f544a4034281c1924303a44515c666d7a828c9297979898928e857d6f6a5f544a3f34281c10030000020b17222d38414950575e616567686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686764605d5550473e352c1e150a000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000915222f3b4854606b7783909da7b1bdc7d1d6cabfb4aaa299928c85807c797676757475777a7d80848a90949b9fa4abacaca59f9285796d6053473a2d2014070000000000000000000004101c2834404b5563707d8996a1adb9c5d5dfe4e0dfe0e4e1d5c9bdb2a89a8d807367585d6775828e9baab4bfcbd6e3e0dfe0e4e7dbd0c5b9ac9f92867a6d6154473b31261a0e02000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000005111e2b3844515e6b7784919eaab7c4d1ddd6cbbfb4aa9e938c80756f6a686767676d727c849199a3aebac7d2ddd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7575757575757575757575757575757473716d68605b544a3f362d220e050000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000713202c3945525d6875818e9ba7b1bccfd8e2edf8f5f5eae0d3c6baaea2988b7e7265584e43372b1d13070000000000000000000006131f2c3845515d6776828f9ca5afb8b9b7b3aeaba9a19e9a9992908e8c8a89898a8b8e92989da4adb5bfcad4dee0d4c8bcb1a79a8d817467574d42362a1e120500121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b3a3b3d3e3f3f3f3e3d3b3936302d2b28221c17110a03000000000000000000000000000000000b1825313e4b5864717e8b99a3afbdc7d1ddd6cdc3bab2a9a19e948f8a8683828384888f939fa4abb5c0ccd7dfdbcfc5b9ada1978a7d7063574a3d2e23180c00000c1925323f4c5865727f8b98a6b0bcc5c4beb9b1aca69f9c95908b8784838384878c9298a0a7b1bac3d0d9dfd6cabeb3a99f92867a6d6154473b3025190e0200000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28333f4a545d676d787e84888a8b8a86817b706b60584e43392e2318131d28343f4a545d676d787f85898a8b8a86817b6f6b60584e42392e2318131e2834404a545d686d787f85898a8b8986817a6f6a60584e42382e23170b0000000006111b262f383f444d5254585a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5753514b433e352c231a0c03000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000003101c28343f4a54636f7c8995a0acb9c2cfd9d3c6baaea29892877f79736f6d6669686869676d7074797e83898f93999ea09f9c938c7f72675c5145382c1f13060000000000000000000006131f2c3845515c6774818e9aa9b2bdc9d5ddd8d4d2d4d8ddd9cec4b7ab9e9184786a60606d7986929facb8c5d0dcd8d4d2d4d8dde0d3c7bbafa3998b7f7265574d42362a1e1205000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000006131f2c3946525f6c7985929facb8c5d2dfd3c7baaea3988e81756e625f585a555d606a6f7c86929fabb5c0ccd7d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716868686868686868686868686868686764605d56504a42382d241b10000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3cedfeaebe9e8e9ebe2d6cabfb4aa9d9083776a6054473a2f24180d0100000000000000000004101d2935404b5563707d89939ea5abacaaaaa29f9b97928e8a8683817f7d7d7c7d7f81868d929ca3adb8c2ccd8e3d9cec3b7ab9e918478695e53463a2d21140700121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e615448424647494b4b4c4b4b494746413d3938332d28231c150c060000000000000000000000000000000e1b2834414e5b6774818e9aabb5c0cfd9d9cfc4bbb2a8a097918a827d79777676787c828b9399a4afbbc3cdd9e1d5c9beb3a99a8d817467544a4034281c1004000915222f3c4855626f7c88949faab4b9b8b3ada7a09d948f89837f7b787676777b7f869095a0a8b2bec7d2dddbd0c5baaea2988b7f7265564d41362a1e110500000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d38424b555d666d72787c7e7e7d7a756e6960594f463d30271d120c17232e38424c555d666d72787c7e7e7d7a746e6960594f463c30271c120c18232e39424c565d666d72787c7e7e7d7a746e6860584e463c30261c110600000000000a141d262d333b4246484b4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b47454039312c231a110800000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000006121f2c3844505c6674818e9ba7b1bccbd4d2c6baafa59f92867d736d6762605c545b5b555d6063666d71767c82878d919692908a81776c60554b4034291c1004000000000000000000000713202d3a4653606d7985929fabb8c4cfd9d2ccc8c6c8ccd2d9d2c5b9aca196897c6f6264717d8a98a2aebac6d3d2ccc8c6c8ccd2d9d7cbc0b5ab9c908376695f53463a2d21150a000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000006121f2b3844505c667986939facb9c6d2dfd2c5b8ac9f92867a6d615c534e4d4b51585f6a73808d99a4afbbc7d4d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5754524c443f382f261c1209000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000007131f2c38434f5965727f8b98a3aebac7d3e0e3dfdcdbdcdfe3dbd0c6b8aca095897c6f62554b4135291d1104000000000000000000000c18242f394854606b74818e939b9e9f9d9a98928e8985817d7a7674727170707072757a808c919ca6b0bbc7d3dfded2c5b9aca196877b6e6154483b2e21150800121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154484d52545658585958585654524d4a46443f38342e261e17110a0200000000000000000000000000101d2a3743505d6a7683909da9b6c3d1dcd1c7bdb2a9a09691857d76706d6669696a6f757f87939fa7b1bcc8d4e3dacfc4b7aa9d918477665c5144382c1f1206000815212e3a47535f6a76839098a2aaacaba9a19e959089827d77726e696969696e737b839096a0acb6c0ccd8e1d6cabfb4aa9d908376685e5246392d20140700000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3a434b545c60656c6f7171706d68615e574f473d342b1e150b06111c26303a434c545c60666c6f7171706d67615e574f473d342a1e150b07121c27303a444c545c60666c6f7171706d67615e564e463d342a1e140a000000000000020b141b222730363a3b3f4142424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241413e3a39352f281f1a11080000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000713202d3a4653606d7985929eabb8c3cddecfc3b6aa9e938a7d706b605c5553504a4e4e4b5153545c60646b6f757b80848686837e746c655b5043392f23180c0000000000000000000004111d2935414c5664707d8a97a2adbac6d6d0c7c0bbb9bbc0c7d0d5c9bdb2a89a8d8073656775818e9baab4bfcad0c7c0bbb9bbc0c7d0d8d1c7b7ab9f94887b6e6155483c32261b0f000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798699a4afbbc7d4dacec1b4a79b8e8174685e5247434140454e58616e7b87939facb9c6d2d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584f4f4f4f4f4f4f4f4f4f4f4f4e4d4b4745413a332d261d140a00000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000915222f3b4854606b7784909daab4bfcbd6ded7d2cfcecfd2d7ded4c8bcb1a79a8e8174675d5145392c20150a0000000000000000000007121d2c38444f59606d78818a8f9192918e8a85817d7974706d6767656463636465686d747f8c949fabb7c3d0dde1d5c9bdb2a8978a7d7064574a3d3124170a00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e615455575e6163646565656463615e565753504a443f383028231c140c03000000000000000000000000111e2b3744515e6a7784919daab7c4d0d7cbc0b5aba19791847b706b63605c54585f626d727f8c95a0acb8c7d2dddfd2c5b9ac9f9286786d6053463a2d2013070006121f2b37434e58626f7c8692989e9f9f9c97918b837d76706b65615e57575e61696e7a84919aa4afbbc8d4e0dbd0c6b8ab9f95877a6e6154473b2e21140800000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115080707070706060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28313a424a50535b6062646563605d56534d453d352b22190c03000a151e28313a424a50545b6062646563605d55524d453d352b22180c03000b151e28323a424a51545b6062646563605d55524d443d342b22180c0200000000000000020a11171f252a2d2e32343535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534312d2c29241d160d08000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000091623303c4956636f7c8997a1adb9c6d2d8ccc0b6ac9b8e81756b615959595959595959595959595959596063696e73777a7976716c605b53493f31271d1207000000000000000000000613202c3945525d6875828f9ba9b3becad2c7beb6afacafb6bec4cdcec4b7ab9e9184786c6d7985929facb8c5d0c7beb6afacafb6bec6cfd3c7bcb0a6998c7f7266584e43372b1b11060000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0b5c0ccd7d7cabdb1a4978a7e7164564c413731353c46525e697783909daab6c3d0d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b424242424242424242424241403e3a39353028221c140b0200000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000004111d2935414c56636f7c8995a0acbcc6d0dcd3ccc6c3c2c3c6ccd3d9cdc3b8ac9f92867a6d6054473c32271b0f0100000000000000000001101c27333d45515c666d757d82858684817d7974706d6663605d555957565657565d606d76828f9ca9b5c2d0dce5dacebfb2a5988c7f7265594c3f3226190c00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e615f6267696e707172727271706e686763605b54504a423d342e261e150d030000000000000000000000111e2b3844515e6b7784919eaab7c3cdcac2bbafa39991857b6e69615953514a4e535b606c7883909dabb5c0ccd7e0d3c7bbafa399887b6e6155483b2e22150800030f1b26313c47535f6a707d868e9192928f8b857e78706b63605954524d4d53575e686f7d87939facb9c6d2dde2d4c7bcb1a7978a7d7164574a3e3124170b00000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115141414141413120f0b06060300000000000000000000000000000000000000000000000000000000000000000000000000000000020b161f2830383f444950535557585754524c46423b332b231910070000030c161f2830383f444a50535657585754514c46423b332b231910070000030c162028303940444a50535657585654514b46413b322b2219100600000000000000000000060b141a1e2021252728282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828272420201d18120c0400000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000c1926333f4c5966727f8c99a9b3becad6d4c8bbafa49a897c7066666666666666666666666666666666666666666666676d6c6664615a534d453c33291f1409000000000000000000000714212d3a4754606d7a86929facb9c5d0ccc0b6aca49fa4acb2bbc4cfc5b9ada196897c6f707d8a98a2aebac6ccc0b6aca49fa4acb4bcc6d1cdc2b7aa9d9184776a5f5347382d22170b0000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9d2ddd4c8bbaea195887b6e6255483b30262a36424d566774818e9aa7b4c1cdd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e353535353535353535353534312d2c29241e17110a020000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000713202c3945525d6874818e9ba7b1bcced8d3cac1bbb6b5b6bbc1cad3d3c6baaea2988b7e7265584e43372b1d1307000000000000000000000b16212834404b545c606c707578797774706d6763605c5453514b4c4a4a494a4c525b63707d8996aab4bfcbd6e3dacdc0b4a79a8d8174675a4e4134271b0e00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e626a6f74787b7c7e7e7f7e7e7c7a7874706c66605c544f443f3830271f150d0300000000000000000000101c2936434f5c6976828f9ca7b1bbc3c0b8b0a69f92877d70695e574f4644404347505b65717e8a99a4afbbc7d4e0d7cbc0b5ab95897c6f6256493c2f23160900000a15202b37434e58616b707b81848685827e79726d666159544f48464242464d56606b76828f9cacb6c0ccd8e4d8cdc0b3a79a8d8074675a4d4134271a0e01000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21212121212121201f1c1715130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e262e34383f4446494b4b4a4745413a3631292119110700000000040d161e262e34383f4446494b4b4a4745413a3630292119110700000000040e161e272e34383f4446494b4b4a4745413a3630292019100700000000000000000000000002090e121415181b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a181413100d07010000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00030f1b27333f49536875828f9ba8b5c2cfdad2c6b9ac9f9386797373737373737373737373737373737373737373737373737272706e68625f574d453b30251a0e02000000000000000005111e2a36424d5665717e8b98a3aebac7d4c8bbafa49a939aa1a9b2bec9c9bdb2a89a8d807475818e9baab4bfcac8bbafa49a939aa3aab4bfcbd1c5b8aca095887c6f6253493f33271b0f0300000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c7baada094877a6d6154473a2e212530404d5a6673808d99a6b3c0ccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e3d3d3d3d3d3d3d3d3c3c3a38352f2d282217110a02000000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3ced4cbc1b8b0aaa8aab0b8c1ccd6cabfb4aa9d9083776a6054473a2f24180d01000000000000000000050c18232e39424b51596164686b6c6a6763605c5553504a4745403f3e3d3d3d414653606d798698a3aebac7d3e0dbcec1b4a89b8e8175685b4e4235281b0f00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6f757c818487898b8b8c8b8b898784817d78726d666059504a423931271f150c030000000000000000000b1825323e4b5865717e8b95a0a9b1b8b7afa69e938c7f736b60574d453e3834373f4953616d7a86939facb9c6d2dfdcd1bcafa396897d706356493d3023160a0000040f1b26313c464f5961696e7478797876716d67605c544f48443d3a36363b444f5964717d8a9aa4afbbc8d4e0dbcfc2b5a89c8f8275695c4f4236291c0600000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2e2e2e2e2e2e2d2d2b2822221f1b150f07000000000000000000000000000000000000000000000000000000000000000000000000000000040c141c23282d3337393c3e3e3d3a39352f2a251f170f07000000000000040c151c23282d3338393c3e3e3d3a39352f2a251f170f07000000000000040c151c23282d3338393c3e3e3d3a39352f2a251f170e07000000000000000000000000000000020507080c0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0e0b0706040100000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0005121f2b3744505b657784919daab7c4d0ddd2c5b9ac9f92867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7a766e695f574d42362a1e120500000000000000000714202d3a46525e6976828f9caab4bfcbd2c6b9ac9f93869197a1adb9c6cfc4b8ab9e9184787985929fabb8c5d0c6b9ac9f93869298a3aebac7d3c8bcb1a7998d8073655b5044372b1f120700000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b494949494949494949494847454039393327221b140b020000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000006131f2b38434e5865727f8b98a2aebac7d5cdc3b9b0a69e9b9ea6b0bbc6d2d0c6b8aca095887c6f62554b4035291d11040000000000000000000007121d27303940454f55575c5e5f5e5b5753514b46443f3a39352f313033383f46525e697985929facb8c5d2dfdbcec2b5a89b8f8275685c4f4235291c0f00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b727c82878d91969697989898979696918e8a847f78706b605c544b433931271e150a0000000000000000000713202d3a4653606d78839097a0a7ababa59d948f81786c60594f453b332c282d3846525d687885929eabb8c5d1ded5c9bcafa296897c6f6356493c302316090000000a15202a343e474f575e61676b6c6c6965605d55504a423d38332d2a2a323d4754606d7a86939facb9c6d2dfddd0c4b7aa9d9184776a5e51442d22170b00000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b3a3a3a3a3a3a3a3a3938332d2e2b272019100a020000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b22272b2d2f3132302d2c29241e1a140d050000000000000000030a11171c22282b2d2f3132302d2c29241e1a140d050000000000000000030b12181c22282b2d2f3132302d2c29241d19140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000613202d394653606c7985929facb8c5d2dfd3c7baaea398928c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b8a87827b6e695e52463a2d20140700000000000000000814212e3b4754616e7b87939facb9c6d1cfc2b5a89c8f8285919eabb8c4cfc6b9ada197897d7d8a98a2aebac6cabeb3a99b8e8186929facb9c5d2cec3b7ab9e9184786c605346392e23180c00000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655856565656565656565656565553514b49443e332d261d140a0000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c6053462e23170b0000000000000000000000000000000000000000000000000815222e3b4754606a7783909daab4bfcad4c8bcb1a79e938f939eaab6c3ced4c8bcb1a79a8e8174675d5145392c20150a00000000000000000000000b151e272e343e44494a4f5253514e4a4645403a38342e2c2d30363a3d44485059616e7b8798a3aebac7d3e0dbcfc2b5a89c8f8275695c4f4236291c0f00121f2c3945525f6c7885929fabb8c5d2d4c7bbaea194887b7f878f939a9ea1a9a4a5a5a5a4a8a19e9a96918b847d736d665d554b433930261c1106000000000000000006121f2c3844515c666e7b8590959c9e9e9b938e82796d665b50473d332926252a36414d566b7784919eaab7c4d1ddd6cabeb3a995887b6f6255483c2f221509000000040e18222c353e454d53545b5e5f5f5c5853514b443f38302c27201e202c3945525d687784919eaab7c4d1ddded2c5b8ab9f9285786c5f493f33271b0f03000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544847474747474747474746443f3c3b37322b221c140a01000000000000000000000000000000000000000000000000000000000000000000000000000000060b11171b1f202224252421201d19130e09030000000000000000000000060c11171c1f202324252421201d19130e09020000000000000000000000070c11171c1f202324252321201d18130e080200000000000000000000000000000000000000000000000000000000000000000000000000030506080a0b0b0c0c0b0a09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000714212e3a4754616d7a8798a3aebac7d3e0d7cbbfb4aaa39f9999999999999999999999999999999999999999999999999999989a938f857b6e6154483b2f24180d0100000000000006121e2b37424d5765727f8c99a4afbbc7d4c8bcb1a7988b7f808d9aa9b3bec9c9beb2a99a8d80818e9baab3becac6baada297897d828f9ca8b5c2cdd2c5b9ada196897c6f63544b4034281c1004000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716563636363636363636363636362605d555550443f382f261b110600000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c604a3f34281c10030000000000000000000000000000000000000000000004111d2935414c55626f7c8995a0acbcc6d0d1c4b8ab9f958f828f9ba7b1bcc8d4cdc3b8ac9f92857a6d6053473c32261b0f0100000000000000000000030c151d232833393c3d42454644413d3a38342e2b2d30363a3b4246484f545a626b73808c99aab4bfcbd6e3dbcec1b5a89b8e8275685b4f4235281c0f00121f2c3945525f6c7885929fabb8c5d2ddd0c3b7aa9d90838c92999fa4acadb2b1b1b2b1b1b2adaba8a19e96918780786d675d554b42382e23170e050000000000000004101c2834404a545f696e7b838b8f91918e8981796d675d544a3f3530323330353b46525e687885929fabb8c5d2ded2c6b9ada297877a6e6154473b2e2114080000000006101a232c333b4246484e5153524f4b47454039342e261e1c16121d2935414c566976838f9ca9b6c2cfdcdfd2c5b9ac9f928679655b5044372b1f1205000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61545454545454545454545453504a4947433d342e261c13090000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213161818171413110d0801000000000000000000000000000000060b0f1213161818171413110d0801000000000000000000000000000000060b0f1213161818171413110d070100000000000000000000000000000000000000000000000000000000000000000000000305060b0f12131517171819181817161413100c0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000815222e3b4855616e7b8894aab4bfcbd6e3dcd1c6bcb4aeaca6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a5aca49f978d817467554b4035291d10040000000000000814212e3a47535f697783909dabb5c0ccd1c4b8aca095877b7d8997a1adb9c6cfc4b8ab9e918585929fabb8c5d0c5b8ab9f9285787e8b98a7b1bcc8d4c9bdb2a89a8e8174665c5145382c1f1307000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e717070707070707070707070706f6f6d6764615a504941382d22170b00000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f938679665c5044382b1f1206000000000000000000000000000000000000000000000613202c3945515d6774818e9ba7b1bcced8ccc0b6ac9d90837c8895a0acb8c7d2d3c6baaea2988b7e7165584e43372b1d12070000000000000000000000030b121821282d30313538393734302d2c2d30363a3b4246474d52545960636c717d87929facb9c5d0dce7dacdc1b4a79a8e8174675b4e4134281b0e00121f2c3945525f6c7885929fabb8c5d2ded1c5b8aca09590959fa3abafb6b9bdbebebfbebebdb9b8b2aca8a099938d81796d675d544a3f342820160c02000000000000000c18232e39424d575f696e787e828584817c746d675d554b42383a3d3f3f4041464c56616e7a8797a2adbac6d3ded1c5b8ab9e928578695e52463a2d201407000000000008111a212931363a3b41454645433e3a39352f2a26201d19130d19242f424f5c6875828f9ba8b5c2cedbe0d3c7baaea39986796c605346392d201306000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e616161616161616161616160605b5456544e4640382e251b0d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090b0b0a0707040100000000000000000000000000000000000000030606090b0b0a0706040100000000000000000000000000000000000000030606090b0b0a070604010000000000000000000000000000000000000000000000000000000000000000000000060b0f1213171b1f20212324252525242422201f1c181413110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000915222f3c4855626f7b8895a2aebbd0dce7e2d8cfc6bfbab9b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6afa99e918478675d5145392c2013060000000000000815222f3b4855626e7b88959fabbdc7d2d0c3b6aa9d9083777985929eabb8c5d0c6b9ada197919297a2adbac6cabfb4aa9b8e81757b8795a0abb8c4d1cfc4b8ab9e9285796d6053463a2f24180d010000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d9cdc0b3a69a8d807c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7a76706c605b53493f33271c1106000000000713202d3a4653606d798693a0acb9c6d3d3c6b9aca09386796d6053463a2d201307000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3ced4c8bbafa49a8c7f7784919dacb6c0ccd6cabfb4aa9d9083776a5f5347392f24180d01000000000000000000000000070c171c202324292b2c2b272c3036393b4246484d5254575e61656b70767e869299a3aebbc7d3e2e5d9ccbfb2a6998c7f7366594c403326190d00121f2c3945525f6c7885929fabb8c5d2ded4c8bcb1a7a09da0a7aeb5bbc0c7c9cfcbcbcbcfc9c5c4bdb9b2aba49f938f82796d665c50443e32281e13080000000000000007121c27303c454d575f666d71767878756f6b605c554b43404446494b4c4d4c52565e68727f8b98a9b3becad6dccfc2b6a99c8f827669564d42362a1e1105000000000000080f171f252a2d2e343830363a3b3d3d3b3a36312d29241e191b2835424e5b6875818e9ba8b4c1cedbdfd2c5b9ac9f928679655b5044372b1f1205000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6d6d6d6d6d6d6d6d6d6d6d6d6c6668626058524a40372d1f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d11171b1f2022272b2d2e303132323231312f2d2c292320201d18130f0a03000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000916222f3c4955626f7c8895a2afbbd1dce8eae1d8d1cbc7c5bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbfbfbfbfbfbfbfbfc0b9aca196867a6d6053473a2d201407000000000006131f2b37434e586673808c99a7b1bcd0d5c9beb3a9998c807374818e9aa9b3becac9beb3a9a19e9fa2a9b3becac7baaea2988a7d717783909daab6c3cfd2c6b9ada2978a7d7064554b4035291d11040000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5dacec1b5a89d928d89898989898989898989898989898886837d746c655b5044382e23170b000000000713202d3a4653606d798693a0acb9c6d3d3c6baada093877a6d6054473a2d21140904010000000000000000000000000000000000000006131f2b37434e5865727e8b98a2aebac6d5d2c6b9ac9f93877b737f8c9aa4afbbc8d4d0c5b8ab9f95887c6f62554b4035291d100400000000000000000000000000050b101416171b22282d33383a4146474d5254575e6165696e72777d838b9298a3abb5bfcbd7e3e1d4c8bdb2a8978a7d7164574a3e3124170b00121f2c3945525f6c7885929fabb8c5d2ded9cec3b9b1acaaacb1bbbfc6ccd2d5dad5d6d8dad5d2cec9c3bdb5afa69e948f82786d605a50443a3025190d04000000000000000b151e2a333c454d545c6065696b6b68636059514b43424a51535658595a565e61686e7a85929eabb8c5d0dbd4c8bcb1a7998c7f7366594c403025190e0200000000000000050d141a1e232c33383b424648494a4846423b3935302924202935414c566975828f9ca8b5c2cfdbdfd2c5b8ac9f9285796c5f493f33271b0f03000d192633404c5966737f8c99a6b2bfccd9d5c8bbaea295887c7a7a7a7a7a7a7a7a7a7a7a7a7a7977746f6a635c52493f31271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0c0a07060401000000000000000000000000000000000000000000000000000000000000030606090c0d0c0a0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c13191b22272b2d2d3337393b3d3e3e3f3f3e3d3c3a38342f2d2c29241d1b150e090300000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000815222f3b4855626e7b8895abb5c0cbd7e3e2d8cfc6bfbab9b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b8babfc5ceccccd2c9bdb2a894877a6e6154473b2e21140800000000000815222e3b4754606a7784919eaab7c3cdd2c6b9ada197897c6f707d8a97a2adbac6cfc4bbb3adababadb3bbc5d0c5b8ac9f92867a6d73808c99a8b2bdc9d5cabeb3a99b8e8175675d5145392c2013080000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd1c5b9aea49d9a96969696969696969696969696969992908a81776c60544a3f34281c10030000000713202d3a4653606d798693a0acb9c6d3d4c7baaea194877b6e6154483b2e211a14110d080501000000000000000000000000000000000815222e3b4754606a7783909daab4bfcad6cbc0b5ab9c8f83766e7b87939facb9c6d1d4c8bcb1a79a8d8174675d5145392c20150a0000000000000000000000000000020a111720262b33393d44484c5254575e6165696e72767b7f848990949fa3aab4bdc6d1dce7ded1c5b8aca096877b6e6154483b2e21150800121f2c3945525f6c7885929fabb8c5d2dedfd5cbc3bcb8b7b8bcc3cbd1cfcbc9c8c8c9cdd1d2d5dad5d0c7c0bbb0a69e948d80746c61564c41362a20150a00000000000000030c18212a333b424a5053585c5e5e5b56544f45404850545c606365666668686d727a839097a1adb9c6d2d8cfc6b8ab9f95887b6e6255483b2f221509000000000000000000050f1b252d353e44484d5254565655534d4746413a352f2d2e3945525d687784919daab7c4d0ddddd1c4b7aa9e9184776b5e51442d22170b00000d192633404c5966737f8c99a6b2bfccd9d6c9bcb0a4988e88878787878787878787878787878684817c736e635b5143392f24180c0000000000000000000000000000000000000000000000000000000000000000000000000001070c10131417191a19171413110d08010000000000000000000000000000000000000000000000000000060b0f121316191a19161313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e24292d3337393c3f4446484a4a4b4c4b4b4a494745403d3a39352f2b26201a140b06000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000815212e3b4854616e7b8799a3afbbc7d4e0dcd1c6bdb4aeaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3acaeb4bcc5d0dbd7cbbfb4aa94877a6e6154473b2e2114080000000003101c28343f4a54626f7c8996a0acb9c5d4d1c4b8ab9e9185786c6d7985929fabb8c5d0cdc4beb9b8b8babec5cdcbc0b5ab9b8f8275676f7c8896a1adb9c5d2cfc5b8ac9f92867a6d6053473a3025190d0100000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e1d6cac0b6aea8a6a3a3a3a3a3a3a3a3a3a3a3a3a3aba39f9c938b7f72665c5044382b1f12060000000713202d3a4653606d798693a0acb9c6d3d6c9bcafa396897d706356493d322a25201d1913110d08020000000000000000000000000004111d2935414b55626f7c8995a0acbcc6d0d3c7bbafa3998b7e72697683909cabb5bfcbd7cdc3b8ab9f9285796d6053473c32261b0f01000000000000000000000000030b141c222832373e44494f54565e6165696e72767b7f83878c91959c9fa6aeb4bcc6cfd8e3e3d7ccc0b5ab9d918477695e53463a2d21140700121f2c3945525f6c7885929fabb8c5d2dee7ddd5cec8c5c3c5c8cbc7c5c2bebcbbbbbdc0c4c5c9cfd7d9d2ccc1b8b0a69d928a7e71685e52463c32261b0f0300000000000000060f18212930383f44464b5052514e4948433f48505a61666d7072727374767a7f8590959fa9b3bec9d5d1c6bcb1a79d908376695f53473a2e2114080000000000000000030d17212d373f474f55575e616363615f5754524c45413b3a3a404b55606d7a86939facb9c6d2dfdccfc3b6a99c908376695d5043362a1d0600000d192633404c5966737f8c99a6b2bfccd9d8ccc0b5aaa098959494949494949494949494949a93918e8780736d62554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000060b12181c1f20232626262421201d19130c070100000000000000000000000000000000000000000000020a11171c1f202325262623201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151c23282f35383f44464949505354565758585857575553514b4a4745403a37312a261f17110a0200000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000713202d3a4653606d7986929facb9c5d2dfd7cbbfb4aba39f9696969696969696969696969696969696969fa2aab4bfcad6d3c7baaea398877a6d6054473a2d2114070000000006121f2b3844505c6674808d9aa8b2bdc8d4cbbfb4ab9b8e8174656675818e9baab4bfcad6cfc9c6c4c5c6cad0d3c7bbafa3998b7e71646a7884919eabb7c4d0d3c7baaea2988b7e7164564c41362a1e110500000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2dcd2c8c0b9b5b3afafafafafafafafafafafafafb5afaca59e9185796d6053463a2d2013070000000713202d3a4653606d798693a0acb9c6d3d8cbbfb2a5988c7f7265584e443c36312c2924201d19130f0a0400000000000000000000000613202c3945515d6774818e9aa7b1bcced8d2c5b9ac9f92867a6d65727e8b99a3aebbc7d3d3c6baaea2988b7e7165584e43372b1d12070000000000000000000000030d151d262d333c43475055596063686d72767b7f83878b90939a9da0a7abb0babfc6ced8e1e8dad4c7bbafa4998d807366574d42362a1e120500121f2c3945525f6c7885929fabb8c5d2deebe7dfd9d4d1d0cfc6bfbbb9b5b1afaeafb0b3b8b9bdc4cbd1d8d7cac1b8aea49e92857a6d61584e43372b1f15090000000000000000060f171e262e34383a3e434545423c3b3c46505a626c70797c7e7f808183868b91979fa7b1bbc5cfd2cbbfb4aa9f958a7d7064574d42372b1e1206000000000000000009141f29333f4951596163696e70706e6966615d56524c4846464a515d67727f8b99a4afbbc7d4e0dacdc1b4a79a8e8174675b4e4134281b0e01000d192633404c5966737f8c99a6b2bfccd9ddd1c6bcb2aaa4a2a0a0a0a0a0a0a0a0a0a0a0a0a49f9e9a938b7f72675d5145392c1f1306000000000000000000000000000000000000000000000000000000000000000000020a11171d23292c2d30323333312d2c29241e18120b030000000000000000000000000000000000000000060b141c22282b2d30323332302d2c28231d150c0900000000000000000000000000000000000000000000000000000000000000000000000000000000000611191e272e343a414549505355535b60616364656565646462605c555753514b47433c363128231c140c04000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0006121f2c3844515c667884919eabb7c4d1ded3c7baaea399928989898989898989898989898989898989899298a2aebac6d3d2c5b9ac9f9286796c605346392d201306000000000713202d3a4653606d7985919eabb8c3ced3c7baaea3998a7d706464707d8a98a2aebac6d3dad5d2d1d2d3d6dbd2c5b9ac9f92867a6d616774818d9aaab4bfcad6cabfb4aa9c8f8276685e5246392d20140900000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2e4dad2cac5c1c0bcbcbcbcbcbcbcbcbcbcbcbcbcc0bbb9ada197897c6f6256493c2f2316090000000713202d3a4653606d798693a0acb9c6d3dccfc3b6a99c9083766a60564e46423b3935302d2a251e1b160c07000000000000000000000714212d3a4754606d7a86929facb8c3cdd6cabfb4aa9c8f827568616d7a86929facb9c5d0d6cabeb3aa9d9083766a5f5347392f24180c00000000000000000000020b151f272f383f444e535a61646b70757a7f83878b90939a9c9fa4acacb1b7bbc2cbd0d8e0e3ddd6cabfb4aa9f93877b6e6155483b31251a0e0200121f2c3945525f6c7885929fabb8c5d2deebf1eae4dbd3cac2bdb5aeaca8a4a3a1a2a3a6abadb2babfc6cfd8d3cac0b9ada1978e81746a5f53473c31261a0e000000000000000000060c141c23282b2d32363838353037434e58626d717e84898b8c8d8e9092999ea1a9b1b9c2cdd0c7c0baaea3989083766c6155453c31261a0e0200000000000000020e1a25313b45515b626b70777b7c7d7b78736d68605d56545353545c606d7984919eabb5c0ccd7e2d6cabeb3a9988b7f7265584c3f3225190c00000d192633404c5966737f8c99a6b2bfccd9e5d8cdc4bcb5b0aeadadadadadadadadadadadb6afacaca49e9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000020b141c22282f34383a3d3f403f3d3a39352f29231d150d040000000000000000000000000000000000030a11171d262d3338393c3f403f3d3a38342e271e1b120b0200000000000000000000000000000000000000000000000000000000000000000000000000020a1117232b303940444c51535b606266656c6e707171727271706f6d676764605d55534e46423b342e261e160e060000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0004101c2834404a546976828f9ca9b5c2d0dbd2c5b9ac9f92867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d86929facb8c5d2d0c4b7aa9d918477655b5044372b1f120500000004101d2935404b5563707d8997a1adb9c6d5d2c5b9ac9f92867a6d60606d7985929facb8c5d0dce1dfdededfe2d8ccc0b6ac9c8f8276685d63707d8a98a2aebac6d3d0c5b9ac9f92867a6d6154473b31261a0e00000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2ece4dcd6d1cecdc9c9c9c9c9c9c9c9c9c9c9c9d1cbc7beb3a9978a7e7164574b3e3124180b0000000713202d3a4653606d798693a0acb9c6d3dfd2c6b9ac9f93877c6f685f58534d4745413a3936302b272018120b030000000000000006131f2b37434e5865727e8b98a2aebac6d5d3c7baaea2988a7e71645e6875828f9caab4becad6d0c5b8ab9f95887c6f62554b4035291d10040000000000000000000a141d273139424a50585f626c70777d82868b90939a9c9fa4acacafb6b8bcc3c7cdd6dce2e2d9d2ccc0baaea2988e8175695f53463a291f14090000121f2c3945525f6c7885929fabb8c5d2deebf2e5dcd3c9c1b8b0aba39f9c98969595969a9ea1a9aeb4bdc6ced8d6cabeb3a99f93877c6f62574d42372b1b1106000000000000000000020a11171c1f2025292b2b282e3a47535f6a717f8a91969899999b9d9fa3abadb3bbc2cbcac4beb6afa49f92867c6f625a5044332a1f1509000000000000000005121e2a36424d57626d727d8387898988847f7a736d686461606061666d74808d96a0acbdc7d2dddfd3c6baada297897c6f6256493c2f23160900000d192633404c5966737f8c99a6b2bfccd9e5dfd6cdc6c0bcbbbababababababababababac0bbb9b6ada197897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000020b141d262d33394045474a4c4d4c4a4745413a342f271f160d04000000000000000000000000000000030c151c23282f383f4446494c4d4c4946454039302d241d140b010000000000000000000000000000000000000000000000000000000000000000000000020c141c2328353d424a51555d60656c6f7376797b7d7d7e7f7e7e7d7c7a7774706d67625f58534d443f38302820180f0600000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000c18232e404d596673808c99aab3becad6d3c7baaea399877a707070707070707070707070707070707a8698a2aebac6d3cfc2b5a89c8f82756953493f33271b0f0300000006131f2c3845515d6774818e9ba9b3bec9d5cfc2b5a99c8f8276675d5d6775828e9baab4bfcbd6e3ebebebece0d4c8bbafa49a8b7f726556606d7985929facb8c5d2d4c7bbafa3998b7f7265574d42362a1b1106000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2eeeee7e1dddad9d6d6d6d6d6d6d6d6d6d6d6d6dcd7cfbeb1a5988b7e7265584b3f3225180c0000000713202d3a4653606d798693a0acb9c6d3e0d4c7bbafa49990837a6f6a615e5754524c4746413a383228231c150c030000000000000815222e3b4754606a7783909daab4bfcad6d2c5b8ac9f92867a6d605664717e8a98a2aebac6d3d4c8bcb1a79a8d8174675d5145392c1f1409000000000000000006111c262f39434b545b606a6f767d83898f92999c9fa4acacafb6b9bbc0c7c8ced3d8dee1dbd6d0c7c0bbaea49f92867b6e61574d42362a170d030000121f2c3945525f6c7885929fabb8c5d2deebeae0d4cac1b7afa69f99928f8b8988888a8d91969fa3abb4bcc6d0dacfc5bbafa49a8f8275695f5347382d22170b0000000000000000000000060b101213181d1f1e222f3b4855626e7c87929ea1a8a5a6a7a9acafb5b9bec4cdc5beb9b2aca49f928b7f726a5f53473e3321180e0300000000000000000714212d3a46535e69727f8a9095969696918c85807a74706e6d6d6e7178808d929da8b2bdd0d9e3ded2c5b8ab9f9285796c605346392d20130600000d192633404c5966737f8c99a6b2bfccd9e5e8dfd8d1ccc9c8c7c7c7c7c7c7c7c7c7c7d2ccc8c6beb3a9988c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000a141d262f383f444b5153565959595754514c45403931281f160c0100000000000000000000000000020b151e262e343e424a5053565859595653514b423f372f261d130900000000000000000000000000000000000000000000000000000000000000000000020b141e262e343f474f545c60676d72787c7f838587898a8b8b8b8a8a888684817d7a746f6a615f57504a423a322a21180f06000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000071723303d4a5663707d8998a2aebac6d3d7cbbfb4ab988b7e716663636363636363636363636364707d8a97aab4bfcad6cabeb3aa998c7f7366594c402d22170b000000000714202d3a4753606d7985929fabb8c4cfd4c8bcb1a7988b7f7265555564717e8a98a3aebac7d3e0ecf8f8ecdfd2c6b9ac9f93877b6e61545c6775828f9babb5c0ccd7cbc0b5ab9d908376695f5346382d22170b000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2ede4dcd6d1cecdcacacacacacacacacacacacad1cbc7bdb2a8978a7e7164574b3e3124180b0000000713202d3a4653606d798693a0acb9c6d3e3d7ccc0b5aba09590837c746e6964605d5654524c47433d342e271e150b000000000004101d2935404b55626f7c8895a0abbcc6d0d6cabeb3a99b8e8275675d53606d7985929fabb8c4cfd8cdc2b8ab9f9285796d6053473b31261a0e02000000000000000b17222d38424b555c666c737c838a90959b9fa3abacafb6b9bbc0c6c8ccd2d4d9dfe0dad5cfcac3bdb5afa59d928b7e71695e53453b31261a05000000121f2c3945525f6c7885929fabb8c5d2deebe2d8cec2b8afa59e949086827e7c7b7c7d80848c9299a3aab4bfcbd6d8ccc0b6ac9e93887b6e6153493f33271b0f030000000000000000000000000306070b10111d2935414c556874818e99a3adb2b2b3b4b6b9bbc0c7c9d0c5bbb3ada9a19a938c80736d62584e43352c220f060000000000000000000815212e3b4854616e7b86929da0a7a8a19e98928c85817d7b79797b7e838d929da4aebac4cee2e0d4c8bcb1a79b8e8174665b5044382b1f120600000d192633404c5966737f8c99a6b2bfccd9e5f2e9e3ddd8d6d5d3d3d3d3d3d3d3d3d3d3ddd8d4cfc0b3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000006111c262f38424a50555c606365666664605d55514b433a31281e1308000000000000000000000000000a141d2630383f4450545b606365666563605c54514941382f251b0d030000000000000000000000000000000000000000000000000000000000000000000a141d2630383f44515960666d727a7f84888c909298969798989897979993918e8a86817c756e69605c544c443c332a21180f050000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000713202d3a4653606d7985929fabb8c3ced9d1c3b7aa9d9083786d6059565656565656565658616c76828f9ca9b6c2d0d3c6baaea298897d7063564a3d3023170600000004111d2935414b5564717e8a98a2aebac6d6d1c5b8aca095887b6e615553606d7a86929facb8c5d1dce7f3f6e9dcd0c3b6a99d908376695e525564717e8b99a4afbbc7d4d1c7b8ab9f95887b6e6153493f33271b0f030000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2e4dbd2cbc5c2c0bdbdbdbdbdbdbdbdbdbdbdbdbdc0bbb6aca096887c6f6255493c2f2216090000000713202d3a4653606d798693a0acb9c6d3e8ddd2c7bdb1a7a0959086807b75716d6865615e56544e44403930271c12070000000006131f2c3845515d6774818e9aa7b1bcced7d3c6baada2978a7d706455515d6774818e9ba9b3bec9d5d3c6baada2978b7e7164574d42362a1e1205000000000000030f1c28333f4a545c676d787f8790959da0a7acaeb5b9bbc0c6c8ccd2d4d8dde0dcd6d3cfc9c5beb9b1aba49f928d80746c62574d4233291f1409000000121f2c3945525f6c7885929fabb8c5d2dee7dbd0c6bcb0a69e938e827b7571706e6f7073797f879298a3aebac1cfd8d2c7beafa5998d8073655b5044372b1f1205000000000000000000000000000000000613202c3945515d677885919eabb5bdbfc0c1c3c5c7cbd1d2c7bdb3a9a29e96918880736e635b51463c31231a10000000000000000000000c1926323f4c5965727f8c99a3acb1b2acaaa29f98928e8a878686878b90959da4aeb6c0ccd6e0d7cec5b8aca095897c7063544a3f33281c0f0300000d192633404c5966737f8c99a6b2bfccd9e5ece4dcd6d1cecdcccccccccccccccccccccccccfc9bfb4ab998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000b17222d38424a545b60676d70727372706d67605c554c433a2f24190d04000000000000000000000006111c262f38424a505a61666c6f727372706d66625b534b41372d1f150b010000000000000000000000000000000000000000000000000000000000000006111c262f38424a505b626b6f787f858c9196999d9fa2aaa4a4a5a5a4aba49f9e9a98928e88827b736d665e564d453c332a21170c0300000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000006131f2c3845515c6775818e9ba7b1bcc8d4d1c5b8aca0958c7f726b6159514b4a4a4b5158606a717e8a949fabb7c3d0d2c5b8ab9f9285796d6053463a2d2013070000000613202c3945515d6775828f9baab4becad6d0c4b7aa9d918477695f53515d6775828f9babb5bfcbd7e3efede0d4c8bcb1a7998c7f7266564d54616d7a86939facb9c6d2d4c7bcb1a7998c7f73655b5044372b1f12060000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2dcd2c8c0bab5b4b0b0b0b0b0b0b0b0b0b0b0b0b0b5afaca49e9184786c605346392d2013060000000713202d3a4653606d798693a0acb9c6d3dfe3d9d0c3b9b1a7a099928d86827e7a76726d68626058514a42392e23180c050000000714202d3a4753606d7985929fabb8c3cdded2c5b8ab9f9285796d60534b5563707d8997a1adb9c6d2d6cabeb3a99c908376695f53463a2d2114090000000000010c161f2b3844505b666d79828c92999fa7acb1b9bbbfc6c8ccd2d4d8dde0dcd7d3d0cbc7c4bdb9b3ada7a099938c80786c605a50453b3121170d03000000121f2c3945525f6c7885929fabb8c5d2dee2d6cabfb4aa9f948e81776e696563626263666d737d86929fa5afbdc6d1d9d0c1b8ab9e9184786c605346392d201306000000000000000000000000000000000714212d3a4754606d7a8797a1adbdc7cfccced0d2d4d7d7ccc0b5aba297928c847d736e635c52493f342a201108000000000000000000010e1b2834414e5b6774818e9aabb4bcbdb9b3aeaaa29f9b9794999399989da0a7aeb6c0c8d2dedbd0c5bcb0a69d9083776b605442382d22170b0000000d192633404c5966737f8c99a6b2bfccd9e5e4dad2cac5c1c0bfbfbfbfbfbfbfbfbfbfbfbfbfbeb9aea3998a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b666c72797d7f807f7d7a736d675d554c41352920150a00000000000000000000071017222d38424a545c606c71787c7f807f7c79726d645d53493f31271d1207000000000000000000000000000000000000000000000000000000000000071017222d38424a545c606d727d848c92989ea0a8a9acaeb4b0b1b2b1b1b5afacaaaaa39f9a948f867f786d685f574d453c33291e150b00000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000004101c2834404b5563707d8995a0acb8c2cfd4c8bcb1a79f92877d706b605d555656545c606a6f7c86929fa6b0bbc7d3c8bcb1a79b8e8175665c5145382c1f13060000000714212d3a4754606d7a86929facb8c5d0d6cabeb3a9998d807366574d4b5564717e8b99a3aebbc7d3e0edeaded1c5b8aca095887b6e615548525e687683909ca9b6c3ced8cdc2b7aa9e9184786c605346392e23170c0000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2d6cbc0b6aea9a7a4a4a4a4a4a4a4a4a4a4a4a4a4aba39f9a938a7e71655b5044372b1f12050000000713202d3a4653606d798693a0acb9c6d3dfebe2d5cbc3b9b1aba39f99928f8b86827f7a756f6a605c544a40342821160b000005111d2935414c5664717e8a98a2aebac6d5d5c9beb3a99b8e8174675c514653606d7985919eabb8c3ced9d0c5b7ab9f94887b6e6155483b31261a0e020000000007121d2a36424d57606c78828f949fa3abb1b8bcc3c7cbd1d4d8dde0ddd8d4d1cbc7c5bfbab8b2ada9a29e9590877f746c665b50483f33291f0f0600000000121f2c3945525f6c7885929fabb8c5d2dee0d3c7baaea2988f82786d655f57565555545c606b707e8a939eabb4bfcbd7d2c5b9ada196887c6f6255493c2f221607000000000000000000000000000000000814212e3b4754616e7a8794a8b2bdc8cfd3d6dbdfe0e0d4c7bbafa49992857f7a706b635c524a40372d22180e00000000000000000000020f1b2835424e5b6875818e9ba8b4c1c9c5bebab3aeaba7a3a1a49fa4abaaacb1b9c0c8d2dadbd6cabfb4aa9f948a7d7064594f442f261c11060000000d192633404c5966737f8c99a6b2bfccd9e5dcd2c8c0b9b5b3b3b3b3b3b3b3b3b3b3b3b3b3b2b3ada69f92867a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c787f85898c8c8c8a8680796d675d51453d32271b0f030000000000000000050e192228333f4a545c666d747e84898b8c8c89857e746f645b5143392f24180c0000000000000000000000000000000000000000000000000000000000030d192228333f4a545c666d747f8791959fa2aaacb2b6b8babfbdbebebebdc0bbb9b7b4aeaca69e98928c827a6e695f574d453b30271d1207000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000c18232e394854606b7783909da7b1bdc7d1cec3bbafa39992867d736d6764636364666d727c859298a2aeb8c2cccec6b8aca095897c7063544b4034281c1004000004101d2935404b5564717e8a98a3aebac7d3d2c6b9ada197897c6f6356494754606d7a86929facb9c5d1dce8eaddd0c3b7aa9d908477695f53474c5666727f8c99a8b2bdc8d4d2c5b9aca096897d7063544a3f34281c100300000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd1c5baaea49d9a979797979797979797979797979699928f887f726c6153493f33271b0f030000000713202d3a4653606d798693a0acb9c6d3dff4e7ddd5cbc3bdb4aeaba39f9c99928f8b86827c746d665c51443d33271c1004000713202d3946525e6875828f9caab3becad6d2c6b9ada197897d7063554b44505c6674808d9aa8b2bdc8d4d3c7bbb0a6998c807366574d42362a1e1205000000010d18242f3a46525e69727f8c949ea6afb5bdc2c8cdd3d7dce0dfd9d4d2ccc8c6c0bbb9b4aeaca9a19e97928c837d726d605b544a3f362d21170d0000000000121f2c3945525f6c7885929fabb8c5d2ded8ccc0b6ac9f92867b6e665c534d4948494a5059616c75818e99a3aebac7d3d5c9bdb2a9998c7f7266594c3f2f24180d010000000000000000000000000105070714202d3a4753606d7a8696a0acb9bec5c6cad0d2d5d9d2c6b9ac9f93867d736d686059524a40382e251b100600000000000000000000020f1c2835424f5b6875828e9ba8b5c1ced0cac5bebab8b4b0b5afacafb5b7b8bcc3cbd2dad7d0cabfbaaea2988f82766c6155473d321d140a000000000d192633404c5966737f8c99a6b2bfccd9e1d6cac0b6aea9a6a6a6a6a6a6a6a6a6a6a6a6a6a5a9a19e948d8073685e5246392d2013070000000000000000000000000000000000000000000000000000000004111d2935404b55606c78818c929798999998928d83796d60584e43372b1f130600000000000000030c17202b343d44505b666d78818a919698999897918b81746d62554b4035291d1004000000000000000000000000000000000000000000000000000000010b151f2b343d44505b666d78818c9299a0a8aeb3b9bdc3c5c6cad0cbcbcbd2ccc7c6c4bfbab8b0aaa39f948f847b6e695f574d42392e23180d040000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000007121d2c38444f5964717e8a959fabb5c0cbd7cbc0b5aba298928780797471706f7174797f869297a2aab4bfcad0c6bcb0a69d9083776b605442392e23180c0000000613202c3945515d6775828f9baab4bfcbd6d1c5b8ab9e9285796d60534645525d6876828f9cabb5c0cbd7e3e1d5c9bdb2a8998c807366574d424855626e7b8896a0acb9c5d2d5c9bdb2a89b8e8175665c5044382c1f120600000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5dbcec2b5a99d928d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8986827d726d635a5041382d22170b000000000713202d3a4653606d798693a0acb9c6d3dff2ebe5ddd5cfc6bfbab5afacaba39f9c99928e8981786d60594f44382c201407000714212e3a4754616d7a86929facb9c5d0dbd1c5b8ab9e9285796d6053463f4a54626f7c8896a0acb8c5d1d8cdc2b7aa9e918477695f53463a2d21140700000004101d2935404b55616e7b86929fa6b0bbc0c7cfd4d9e0e1dbd6d3cdc8c7c0bbb9b5afacaaa39f9b96918c857f786f6b625b504a42382d241b0f050000000000121f2c3945525f6c7885929fabb8c5d2ded4c8bbafa49a8d8073695e544a413d3b3c3f44505a616e7b86929facb9c5d2dacfc2b5a89b8f827568554b4135291d11040000000000000000000002080d11131419202c3945515d677784919ea6adb3b8babec4c5c9ced4c7bbafa49992877e716c62594f453b31251a13090000000000000000000000020f1b2835424e5b6875818e9ba8b4c1cedbd6d0cac6c5c1bdc0bbb9bbc0c3c5c8ced5d6d3cec5bebaada39f92867b6e615a5044352b210b02000000000d192633404c5966737f8c99a6b2bfccd9ddd1c5b9aea49d9a999999999999999999999999999897928c82786d60564c41362a1d1105000000000000000000000000000000000000000000000000000000000613202c3945515d67737f8c939ea1a9a6aaa29f958e81756a6054473b2e221508000000000000000a151e29323d46505a606c78818e939ea1a8a6a9a19e938b7f72675d5145382c1f130600000000000000000000000000000000000000000000000000000007121d27313d46515b606c78818e939fa3abb1babec5c9ced2d3d6dbd7d8d8ddd7d4d2d0cbc7c1bcb4aea69f9691847b6e695e544b4034281f160c0100000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000101c27323d4955616c76839099a3afbbc2ccd1c7bdb4aaa299928d85817e7c7c7e80858c9298a2a9b3bcc5d0cbbfb4aa9f948a7d7064594f4430271d12070000000714202d3a4753606d7986929facb9c5d0d7cbc0b5ab9b8e8175665c5044414c5665717e8b99a3afbbc7d4e0ded2c5b9aca196887c6f6255493c47535f6a7784919eaab7c4cfd9cec4b8ab9f9285796d6053463a2d20130700000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5dacdc0b4a79a8d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7a76706b635b51483e2f261b1106000000000713202d3a4653606d798693a0acb9c6d3dfe8e0dad5d2d1d1cbc7c0bbb9b5afacaba39f9b938e81756b6055483c2f231609000b1825313e4b5864717e8b99a3afbbc7d7d5c9bdb2a89a8d8074665c5044384754606a7784919daab7c2cdd8d2c5b9aca096887b6e6155483b2e2215080000000613202c3945515d6774818e98a2aeb8c1cbd1d9e1e4e0d7d0cac6c3bcb8b6afacaba39f9c98928e8a847f79726d66605951443f382f261c1209000000000000121f2c3945525f6c7885929fabb8c5d2ded2c6b9ac9f93877b6e61574d42382f2f2e343e46525e6875818e9bacb6c0ccd8d1c4b8ab9e918478675d5145392c201306000000000000000000040c13191d202125282935404b5566737f8c949ea1a9abadb3b7b9bdc4caccc0b5aba39992887e716b61574d42362a21160b0000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedae1dbd6d3d2ced2ccc7c6c7ccd2d2d1d0d0cac7c1bcb4aea49c918a7e71695f53483e3323190f00000000000d192633404c5966737f8c99a6b2bfccd9dacec1b5a99d928d8c8c8c8c8c8c8c8c8c8c8c8c8c8b89857f786d665c51443a3025190d01000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929fa5adb3b3b4aea79e93897c6f6256493c2f23160900000000000006111c26303a444e58616c73808d939da5acb2b3b3ada59e9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000c18242f39434e58626d74818e939da5afb5bdc3cad0d5d9dbd6d3d2d0cfcfd1d2d5dadcd6d3cec6bfbab0a8a19691847b6e665c51453e31281d130700000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000b16212d3945505a626f7c87929fa6b0bac4cdcfc6bcb4aba39f97928e8a89898a8d91979fa2aab3bbc5cecbc2baaea3989082766c6155473d321e150b000000000a1724303d4a5763707d8a98a3aebac7d3d3c7bbafa3998a7e7164544a3f3a4754616d7a86929facb9c5d1dcded1c4b7ab9e9184786a5f53473b434e586773808d9aa9b3becad6d3c6baada297897c6f6356493c3023160900000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71717171717171717171717171706f6d67636059514940362c1d140a00000000000713202d3a4653606d798693a0acb9d0dbe6ded6cfc9c5c4c3c5c8cbc7c5c0bbb9b5aeaca59d93897d7063564a3d3023170a000e1b2835414e5b6874818e9babb5c0cbd7d2c5b9aca196897c6f63544a3f37434e5866737f8c99a7b1bcc7d4d4c8bdb2a8988b7e7165584b3e3225180b0000000714202d3a4753606d7a85929faab4bfcad7dce3e2dbd2cec5bebab8b1abaca49f9c99928f8b86817d79726d67605c544f473f332d261d140a00000000000000121f2c3945525f6c7885929fabb8c5d2dccfc3b6a99c908376695e53453b302622232a36414d5663707d8a9aa4afbbc8d4d2c5b9ada196877a6d6054473a2d2114070000000000000000080e161e25292d2e3235352f3a4653606d79828c92979b9fa2a9aaacb2babec5c7bdb4aba39a93877d70695e53463d33271c100300000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9e4dad2cac5c1c0bdc0c2c3c4c5c5c5c4c2bfbab8b0aaa29f918c7f736c61574d42362c22110700000000000d192633404c5966737f8c99a6b2bfccd9d9cdc0b3a69a8d808080808080808080808080807f7e7c79726d665c544b4032281e130800000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a2adb9bebfbfbaafa59a8d8073675a4d4034271a0d0100000000061017232e38424c56606a717e8a929ca5afb9bdbfbeb9ada1978a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000004101d2935404b55606a727f8b939da5afbbc0c7cfd6dbd7d3d0cac6c5c3c2c3c4c5c9ced2d6dbd8d0cbc2bab2a9a1969083786d60594f433a2f24180d03000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000005111d28333e4754606a73808c949fa8b2bbc4cccec6bdb5aea9a19e9a979696979a9ea1a9aeb4bcc5cdcbc2b9afa59f92867b6e62594f44352b210c03000000000d1a2733404d5a6673808d99aab4bfcbd7d2c5b9ac9f92867a6d6054473a3946525e6876838f9cabb5bfcbd7d5c9bdb2a89a8d807367584e43373d495663707c8997a2adbac6d3d6cabeb3a9988b7e7265584b3f3225180c00000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9d0dbd3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716564646464646464646464646363605d55544f4740372e241a0b0200000000000713202d3a4653606d798693aab3becad6e0d6ccc4bdb9b7b7b8bcc3cbd1cbc7c5bfbbb9afa59b8e8175685b4e4235281b0f00111e2a3744515d6a7783909daab7c3d1dcd1c4b7ab9e9184786c60534639323c4855616e7b88959fabb8c6d1d9cec0b3a69a8d8073675a4d4034271a0d0000000b1825313e4b5864717e8b98a2aebcc5d0dce8e2d9d0c8c0bcb3adaba7a09d9a938f8b86827e7a75706d66605d55514a423d3428221c140b0200000000000000121f2c3945525f6c7885929fabb8c5d2d9ccc0b3a6998d807366574d4233291e151925303b4754606d7a86939facb9c6d2d5c9bdb2a895887c6f6255483c2f2215090000000000000008111a20283035393a3f4242403d45515c676d787f858a8f9297999ea0a8aeb4bcc5c6bdb4aca49992857b6e61594f44382c20150900000000000000000000000c1825323f4b5865727e8b98a5b1bed2dddcd2c8c0b9b5b3b0b3b5b7b7b8b8b8b7b5b4aeaca69e98928a7f736d635a50453c31241a100000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b73737373737373737373737372726f6d67605c544b42392e20160c0200000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a9b3becacfcac1b6a99d9083766a5d5043372a1d1004000000040e182228343f4a545e686f7c86929fa4aeb7c0c9cec9beb3a9998c807366594d4033261a0d00000000000000000000000000000000000000000000000000040e19222c3945515d676f7c87929fa5afb7c1cbd1d9dbd6ccc7c6bfbab8b6b5b6b7b9bdc4c6cacfd7dcd6ccc4bbb2a89f958d80746b61554b4035291f1409000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000c17222b37434e58606d78829096a0a9b2bac3cbcfc6bfbbb3adaba7a4a3a2a4a7abadb3babfc6ceccc2b9b1a79e938c7f726a5f53473e3323190f00000000000f1c2835424f5b6875828e9ba8b5c1d1dccfc2b6a99c8f8376685d52453936414c5665727e8b99a3aebbc7d3d2c5b9aca196897c6f6356493c323a4653606d7985929fabb8c5d0dbd0bfb3a6998c807366594d4033261a0d00000000000000000000000000000000030c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407020000000000000000000000000000000713202d3a4653606d798693a9b3becad6d6cabfb4aa93867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655857575757575757575757575654514b48443d352e251c12080000000000000613202d394653606c798698a2aebac6d3dacfc4bab2adabaaacb1b9c3ccd7d3d1cbc7c0b7aa9d9084776a5d5144372a1e1100121f2b3845525e6b7885919eabb8c4d1d4c8bcb1a7998d8073655b5044372d3a46535f697683909dabb5bfcbd7cec1b5a89b8e8175685b4f4235281c0f000004101c2834404a546774818e9aaab4beced7e2e6dcd0c7beb6aea9a29f9a95908c87837e7a76716d6863605c54514b444039302b2217110a020000000000000000121f2c3945525f6c7885929fabb8c5d2d7cabdb0a4978a7d7164574a3e3124170c14202c3945525d687784919daab7c4d0dacfbcb0a396897d7063564a3d3023170a00000000000007111a232c323a4146474c4e4f4d49464b555c666d72797e8285898c91969fa2aab4bcc6c6beb5aba2978f82756b6055483c31261a0f02000000000000000000000a1723303d4a5663707d8996acb6c0ccd8d6cac0b6aea8a6a3a6a8aaababacabaaa8aaa29f9b938f867e736d635b51483e332a1f12080000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6666666666666666666666666563605c55504a423930271d0e050000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1d0dad1c4b7ab9e9184786b5e5145382b1e12050000020b16202a343c44505c666d7a849198a3aeb6c0c9d5dacfc1b4a79a8e8174675b4e4134281b0e000000000000000000000000000000000000000000000000000a15202b37434e58606d79849199a3aeb7c0c9d7dcd7d0cac1bbb7b4aeaca9a9a9abacb2b8b9bec5cdd3dcd6cdc4bab1a79d928a7d70675d51453b30251a0e020000000000000000000000000000000000000000000407121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000050f1b27323c44505c666d7a849197a1a8b1b9c0c8cecbc5beb9b8b4b1afafb1b4b8b9bec4cad0c7c0bbb0a79f958e81756d62574e42352c21110700000000000f1c2935424f5c6875828f9ba8b5c2cfd1c8bcb1a7988c7f7265564c4135303a4754616d7a86929facb9c2cecbbfb4ab9e9184786c605346392d3844505c6675818e9baab4bfcad1cdc0b3a69a8d8073675a4d4034271a0d0000000000000000000000030608090d10111926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114110f0b07060401000000000000000000000613202d394653606c798697a2adbac6d3d3c7baaea298867a6d6053473a2d2026333f4c5966727f8c99a5b2bfcfdaccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b4a4a4a4a4a4a4a4a4a4a494745413a38322b231c130a0000000000000006121f2b3844505b667885929fabb8c5cfd0c9bdb2a8a19e9da0a7b1bac3cbd4d9d7d1c4b8ab9e9185786b5e5245382b1f1200111e2b3844515e6b7784919eaab7c3cdd1c5b8aca095887c6f6253493f332a36424d5765727f8b99a3aebbc7d2ccc0b6ac9b8e8175685b4e4235281b0f000006121f2c3844515c667784909daab7c3d0dde9ded4cabeb5ada49d97928d88837f7b76726d6864605d5653504a45403a342e271e19100600000000000000000000121f2c3945525f6c7885929fabb8c5d2d5c9bcafa296897c6f6356493c30231609111d2935414c566976838f9ca9b6c2cfd7cabdb0a4978a7e7164574a3e3124170b0000000000030c19232c353e444c5254585b5b5a5653504b545c60676d7175797c7f848b9298a2aab4bfcac7bdb3a99e94897d7063584e43372b1f1206000000000000000000000815222f3b4855626e7b889aa4afbbc8d4d1c5b9aea49d9a97999c9d9e9f9f9e9d9c9a98928e89827b716c635b514940362c21180e000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615959595959595959595959585653514b443f3830271e150b000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbd2c5b8ab9f9285786c5f5245392c1f120600000a141d28323c46505a606d78829096a1aab4bfc8d2dbdbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000030f1b27323a47535f6a73808d96a1abb5bfc9d2dbd7cec5bebab0aaaaa29f9d9c9c9ea1a8abadb3bbc1cad2dbd6ccc2b9aea49e9184796d60574d42362a1e140800000000000000000000000000000000000000050b1014161f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000a152028343f4a545e686e7b8591969fa7afb8bdc3c8cecac6c5c1bdbcbcbdc0c4c6c9cfc9c4beb6afa69f959083796d605b51453c31231a100000000000000e1b2734414e5a6774808d9aa8b2bdc3c4c1b8aca095887b6e6255483b2f2d3946525e6875828f9ba7b1bcc3c2baaea3998c8073655b5044372b343f4a5464717e8a98a2aebac2c4c3bbb0a6988b7f7265584c3f3225190c000000000000000000040a0f1215151a1d1e1e26333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211e1d1c181413100d0701000000000000000006121f2b3844505b667885929fabb8c5cfcfc5b8ac9f928579675d5145382c1f25323f4b5865727e8b98a9b3bec9d0cabeb3aa988c7f7265594c3f3226190c000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e3e3e3e3e3e3e3e3e3d3c3a39352f2c272119110a0100000000000000030f1c28333f4a546a7683909da9b3bdc3c4bfb9ada196919095a0a8b1b9c1c8ced0ccc3b7aa9d9084776a5d5144372a1e11000f1c2935424f5c6875828f9ba7b1bbc3c4beb3a99d9184776a5f5341382d26313b4754616d7a86929fabb5c0c4c2bbafa49a8c7f7366594c403326190d00000713202d3a4653606d7986929facb9c5d2dfe3d8cdc2b8ada39b928d85807b77726e6965615e5654524c46443f38352f28231c150c070000000000000000000000121f2c3945525f6c7885929fabb8c5d2d5c8bbaea295887b6f6255483c2f2215090d19242f424f5b6875828e9ba8b5c1ced7cabdb1a4978a7e7164574b3e3124180b00000000000b151e2b353e474f565e616568686763605b544e50555d6064666d6f73787e869298a2aebac6d0c5bbb0a69c8f82766a5f53473a2e211408000000000000000000000713202d3a4653606d7986939facb9c6d2cec1b5a89d928d8a8d8f9091929292918f8d8a86817c756e69615a514940372e241b0f06000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544d4d4d4d4d4d4d4d4d4c4b4946454039342e261e150c03000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060006111c262f3a444e58616c74808d949fa8b2bcc6d0dae3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000006131f2b37434e58626f7c87929fa8b2bdc6d1dbd7cdc5bcb3aea69e9c9892908f909196999ea2a9b0b8c1c9d2dcd4cbc0b9ada1968d8073695e52463b3025190e000000000000000000000000000000000001080d171c2023242c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000040c17232e38424c565f696e7b8490959da5acb2b8bdc3c5c9cfcdcac9c9cacdd0cac6c4beb9b2aca49f948f837a6d675d51493f332a2011080000000000000a1724313d4a5764707d8a96a0abb3b6b7b6afa69d908377695f53473a2e2a36414c5663707d89959faab2b7b6b0a79f92867b6e6153493f33272e3a4753606d7985929fa8b1b6b7b6b2a99f94887c6f6255483c2f2215090000000000000001080d151b1f212227292b2b2b333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2b2b2a282520201d18120c0400000000000000030f1c28333f4a54697683909ca9b3bdc3c3bdb3a99d9083776a554b4035291d23303c4956636f7c8997a1adb9c1c4c1baaea298897d7063564a3d3023170a000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e383838383838383838383735322d2c29241e160d0800000000000000000b17222d3f4c5966727f8c97a1abb3b7b7b4aea49e9184849096a0a7afb8bdc2c3c1bab0a69b8e8174685b4e4135281b0e000b1825313e4b5864717e8b95a0a9b1b7b7b4ada1978c7f7265584e432f26202d3946525e6875818e99a4afb6b7b6b0a79f93877c6f6255483c2f22150900000714212e3a4754616d7a8799a3afbbc7d4e0dfd3c7bbb0a69b918b817a736e6a65615e5754524c4745413a38342e2f2d2b27221b140b0700000000000000000000121f2c3945525f6c7885929fabb8c5d2d4c7bbaea194887b6e6155483b2e221508081b2835424e5b6875818e9ba8b4c1ced7cabeb1a4978b7e7164584b3e3125180b0000000007121d27303d474f5961686d72757573706c666058504b5153545c6062666c717c86929facb8c5d2cdc1b7ab9f94887b6e6255483b2f2215070000000000000000000006131f2c3845515c677885919eabb8c4d1cdc0b3a69a8d807d808284848585858482807d7a756f6a615e57504840372e251c120900000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544840404040404040403f3f3c3a38342e28231c150c0300000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200060f17222d38424c565f6a717e8a929da6b0bac4ced8e2e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000815222e3b4754606a75828f99a3afbac4cfd8d9d0c5bbb3aaa29f948f898583828384878c92979ea6afb7c1cad4ddd5c9bdb2a89f92867b6e61564c41362a1c1106000000000000000000000000000000040c131921282c2f30353845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000006111c26303a444d575f696e7b838e939da0a8acb2b8b9bdbfc1c2c3c3c2c2c0bfbab8b3ada8a09a938d827a6d685d554b40372d21180e000000000000000713202d3a4653606d78849199a1a9aaaaa9a59e948b7e7164574d42372b25303a4854606b76839098a1a9aaaaa69f958c8073695e5241382d222c3945515d6773808d969fa7aaaaaaa8a0978f82766a5f53473a2e211508000000000000040c131920262b2e2f3336373838383f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a3838383735322d2c29241d160d08000000000000000b17222d3f4c5966727f8c97a2abb3b7b7b3aba2978c7f7366594c402f2418202d3a4653606d7985929ea6afb6b7b6afa69f92857a6d6053473a2d201407000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b454545454545454545454544423f3a39352f281f1a1208000000000000000614212d3a4754606d7a859299a1a9aaaaaaa29f928a7e7b8490959ea5acb1b5b6b6b0a89f948a7d7063574a3d3024170a000713202d3a4653606d78839197a0a7aaaaaaa39e92857a6d6054473c32211d2a36414c56626f7c87939fa5a9aaaaa69f958e81756a5f53473a2e21150800000815222f3b4855626e7b8895abb5c0cbd7e3ddd0c4b7ab9f948b7f746d68625f5754524d4746413a393a3c3f403f3c3937332d261d191007000000000000000000121f2c3945525f6c7885929fabb8c5d2d5c8bcafa295897c6f6256493c2f2316070f1b27333f49536975828f9ca8b5c2cfd7cabdb0a4978a7e7164574a3e3124170b000000000c18232e39424f59616b707a7f8182807d786f6a625a5245474a5053545b606a73808c99a6b3bfccd3c7bbb0a6998c7f7366594c402e23180c0000000000000000000004101c2834404b55697683909ca9b6c3cfcdc0b3a79a8d807473757778787978777573706d67626058534d453e362e2518120b0300000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b383838383838383838383735312d2b28231c140c06000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ac9f9285796c5f5246392c1f13040d182128333f4a545d686f7c86929fa4aeb8c2ccd6e0eae8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000005111e2a36414c56626f7c88939eabb5c0ccd6ddd2c7bdb3a9a298928a827d79767676787b7f858f949ea5afb8c2ced7dacfc4baaea3988e8174685e5246382d22170b0000000000000000000000000000040d161e242933383c3d414445525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000a151e28323c454d575f696e79818991969ea0a8abadb2b3b4b5b6b6b6b5b3b4aeaca9a19e96918880786d685d564c43392f251b0f060000000000000006121f2c3844505c666f7d8792979b9d9e9d9a938f82786c6053463c31261e2c38444f59626f7c8691979c9d9d9b948f83786d60564d422f261b2935404b55606d798490959b9d9e9d9b9691857b6e61584e43372b1f12060000000000040d161e242931373a3c404344454545454c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154474545454544423e3a39352f281f1a11080000000000000614212d3a4754606d7a859299a2a9aaaaa9a19992857a6d6154473a2e21141f2c3844515c66727f8c949ea5a9aaa9a59e948c8073675d5145392c201306000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716558525252525252525252525251514f4c4745413a312c241a12080000000000000613202c3945525d68707d8792979c9d9d9c98928c80736e7b838e939da0a8a9aaa9a69e968f82766b6155483c2f2316090006121f2c3844505c666e7c8591959b9d9d9c98928a7e71675d5145392c201925303a47535f6a73808d929a9d9e9d9b948f837a6d60584e43372b1f120600000916222f3c4955626f7c8895a2afbbd1dce8dccfc2b6a99c8f82766d605d56534e4746423b3a3c404547494b4c4c4946443f382f2b221911070000000000000000121f2c3945525f6c7885929fabb8c5d2d6c9bcb0a396897d7063564a3d2f24180d121f2b3744505b657683909da9b6c3d0d6c9bdb0a3968a7d7063574a3d3024170a00000004101c2834404b54606b707d858b8e8e8d89837c716c635b514a4244464a5058626f7c8895a2aebbc8d8cdc2b6a99c8f827669544a4034281c1004000000000000000000000c18232e424e5b6875818e9ba8b4c1cecec2b5a89b8f827568696a6b6c6c6b6a696763605d55544e46423b332d2c28231c150c06000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615448454545454545454545454444413e3a38342e261e1810060000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ac9f9285796c5f5246392c1f130b161f2a333c44505b666d7a849198a2aeb6c0cad4dee8f2e8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000714202d3946525e6875818e9ba5afbdc7d1ded7ccc0b5aba29792867d75706d666969696e737a828e939ea6b0bcc6d0dbd7cbbfb4aa9f92867a6e61544a3f33281c0f03000000000000000000000000030c1620282f353e44484a4e5051525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000030c16202a333c454d575e676d747d848b91969a9ea1a8a6a8a8a9a9a9a8a7aaa29f9c97918b847d746d665d564c433a31271d1309000000000000000003101c28343f4a54606b707d858b8f9091908e8982796d665b5044382a1f1c27333d47535f6a707d848b8f90908e8a827a6d665c51443b301d18242f3945515d676e7b838a8e9091908e8a847c6f695f53463c31261b0f0300000000030c161f282f353c4347484d505151525252525966727f8c99a5b2bfccd8d3c7baada094877a6d61545252525251504f4b47454039312c241a120800000000000713202c3945525d68707d8792979c9d9d9c9792877d70685d5246392d20131c2834404a54606d78828e939a9d9d9d9a938e82786d60554b4035291d1004000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655e5e5e5e5e5e5e5e5e5e5e5e5e5d5c5854524c433e362c241a0d04000000000004111d2935414c56616b707d858c8f90918f8c867f736e696e79818a9195999c9d9c9a948f847a6d61594f44382c2014070003101c28343f4a545f6a6e7c838b8f90918f8c867f726c61554b4135291d131e2b37434e58606d7881898d9091908e89827a6d685d52463c31261b0f0300000815222f3b4855626e7b8895abb5c0cbd7e3d9ccbfb2a6998c7f73665b524c47423c3c3f4347484b51535658595856535049413d342b23190d0400000000000000121f2c3945525f6c7885929fabb8c5d2d8cbbfb2a5988c7f7265554b4035291d1216202d394653606c7985929fabb8c5d2d6cabfb4aa95897c6f6256493c2f23160900000006131f2c3845515c666f7d8792979b9b9a9590877e736d605c544d443f3f4753606d7a8693a0adb9c6d3d1c5b8ab9e928578665c5144382c1f120600000000000000000000071a2633404d596673808c99a6b3bfccd0c3b7aa9d9084776a555d5e5f5f5f5e5c5a5754514b47434544423e3a38342e271e180f060000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154525252525252525252525251504e4a46443f38302a22180f0500000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ac9f9285796c5f5246392c1f0a141d28313c46505a606c78828f96a0aab4bfc8d2dce6f0f4e8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000814212e3b4754616e7a86929facb9c1cfd9e0d4c7bbafa49992857c706c63605c54575e61686d78818e949faab4bfcad6dcd1c6bbaea3998c7f73665b5044382b1f12060000000000000000000000000a151e28323a41454f55575b5d5e5e5f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000040e18212a333c454d555c606b70787e84898e919697999b9c9c9d9c9b9a9898928f8a857f79706b605c544c443a31281f150b010000000000000000000c17232e38424f59606b70797e82838483817d756d675d544a3f33281816212b37434e58606b707a7f828483817d776d685d544b4032291f121d2935414b555e696e787d81838483817e786f6a5f574d42342a20150a00000000000b151e28313a41454e53555a5c5e5e5e5e5e5e5e66727f8c99a5b2bfccd8d3c7baada094877a6d615e5e5e5e5e5e5d5b5853514b433e362c241a0e050000000004111d2935414c56616b707d858c8f90908f8b857d706b61564c4135291d1118232e3944505c666d7981898d9091908d8981796d665c5143392f24180d01000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716b6b6b6b6b6b6b6b6b6b6b6b6b6b6a6865605d5650483e362c1f160c0100000000010d19242f3a434f59616b707a7f828484827f7a726d645e676d757d84898d8f908f8d89827a6d685e52473e33281c100400000c17232e38424e585f6a6e787e82848483807b726d625a50433a2f24180f1b26323c44505c666d747c80838483817d766d685d564c41342a20150a0000000815212e3b4854616e7b8799a3afbbc7d4e0d9ccc0b3a6998d8073665a5048464647494b4e5355555c606365666562605b534e463d352b1f160c01000000000000121f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275675d5145392f241c2027333f4953626e7b8898a2aebac6d3d3c6baaea298877b6e6154473b2e2114080000000713202d3a4653606d79849199a1a9a8a7a099928b80746d665e57504a464753606d798693a0acb9c6d3d2c6b9ada19786796d6053463a2d201307000000000000000000000b1825323e4b5865717e8b98a4b1bed1d2c5b8ab9f928578675d515252525252525252525252525251514f4b46444039302a21180f0500000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615e5e5e5e5e5e5e5e5e5e5e5e5e5d5b5753504a423c342a21170d03000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c20111b262f3a434e58616c73808d949fa8b2bcc6d0dae4eef8f4e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000006121e2b37424d5766737f8c99a3aebbc7d3e1d5c9beb3a99f93877d706a615a53504a4d52565e666d78829098a2aebac6d0dbd7cbbfb5ab9e9184786c605346392d201309000000000000000000000006111c26303a444c52596163686a6b6b6b6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000060f18212a333b434b515960666d71787c8184888a8c8e8f90908f8f8d8b8985827d79726d676059504a423a32281f160d030000000000000000000006111c26303d474f5960676d727577777674706b605d554b42382d22170f1b26313c464f5960686d7276777775706c655d564c42392e20170d18242f3a434d575e666c717577777775716d665f584e453b3122180e040000000007121d27303a434c52585f6266696a6b6b6b6b6b6b6b727f8c99a5b2bfccd8d3c7baada094877a6d6b6b6b6b6b6b6b6a6865605d5550483e362c20160c02000000010d19242f3a444f59616b707a7f828484827f7a706b61594f443a3024190d121c28343f4a545d676d757c81838483817c756d675d544a4031281d120700000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7878787878787878787878787878787775726d68615a50483e31281d1207000000000008131e28313e474f5961686d7276777776726e68625b555d606c70787c80828383817c756d685e564c41352c21160b00000006111c26303c464e575f666d7175777776736e69625b51483e31281d130a152028343f4a545c606a6f7476777774706b615d564c433a2f22180e030000000713202d3a4653606d7986929facb9c5d2dfddd0c3b6aa9d9083776c615a545353545658585f6266676d6f7273726f6c6560584f473d31281e1308000000000000121f2c3945525f6c7885929fabb8c5d2ded2c5b8ab9f92857a6d60554b40352e2a2c323a44505b65727f8c99aab3becad6d2c5b8ac9f9285796c605346392d2013060000000b1824313e4b5764717e8a96a1abb3b5b1aba39f928c81786e69605b54525359626e7b8895a1aebbc8d4d6cabeb3a993877a6d6054473a2d211407000000000000000000000a1623303d495663707c8996abb5c0cbd3c6baada297877a6d605e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5d5c5853514a423c332a21170d03000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a6864605c544e463c33291f1409000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c2017222d38414c555f6a707e88939fa6b0bac4ced8e2ecf6fff4e8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000814212d3a47535f697784909dabb5bfcbd7dfd2c6b9ada1978d80736b60585046443f42464c545c666e7b86929faab4bfcad6dcd1c6b9ada196897c706356493d31261a0e02000000000000000000000c17232e38424c565d606b707477787878787885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000060f182129313940454f545c60656c6f74787b7e80818283838382807f7c7975716d66605c554f443f38302820160d040000000000000000000000000a151e2b353d474f555d6065686a6b6a67636059514b433a2f261c110a15202a343d474f565d6065696a6a6863605b534c443a30271d0e07131d28313b454d545b6064686a6b6a6864605c544e463c332a1f100600000000000c18232e39434c565d606a6f73767778787878787878787f8c99a5b2bfccd8d3c7baada094877a78787878787878787775716d67615a50483e32281e13080000000008131e28323e474f5961686d7276777775726d6761594f473e32281e13080b17232e38424b555d606b6f7476777674706b605d554b42392e1f160c0100000916222f3c4955626f7c8895a2afbbc8d5ded2c5b8ab9f928584858585858585858585858585858484827f7a716c615a5043392f24180d0100000000010c161f2c353e474f565d6065696a6a6966615e56514b515a61656c7073767776746f6b615d564c443a30231a1005000000000a151e2a333c454e545c6064686a6a6966615e5751493f362c1f160c040c17232e38424a50586062676a6b6a68636059524c443a31281e10060000000006121f2c3844515c667784919eaab7c4d1ddddd1c4b8aba0958a7e716c64616060616265686a6f7276797c7e7f7f7c786f6a60594f433a2f24190d010000000000121f2c3945525f6c7885929fabb8c5d2ded3c6baaea2988b7e71675d5145403936383c444d57606c7884919eaab7c4d0dbcfc3b6a99c908376665b5044382b1f12060000020f1b2835424e5b6875818e9ba8b2bdc1bdb5aea49c938e827b716c66615e60636b73808c99a6b3bfccd9d3c7baaea29886796d6053463a2d201307000000000000000000000815222e3b4855616e7b8899a3afbbc7d4cabeb3a995887b6f6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a6864605c544e453c33291f1409000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b7878787878787878787878787878777774716d665f584e453b31251a0e020000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c182127333f49535d676e7c86929aa4afb8c2ccd6e0eaf4fefff4e8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000815222e3b4855616e7b8895a0acbdc6d1dcd7cbbfb4ab9e9185796d60594f463e3834363a424a545f6973808c98a2aebac6d3dfd5c9bdb2a89a8d807467574d42362a1e120500000000000000000003101c28343f4a545d686d767d8183848585858487939facb9c6d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000060f171f272f343d424a50535b606367696e717375757676767574726f6d6664605c54514b433d342e261e160d0400000000000000000000000000030c19232b353d434b5153585c5d5e5d5b56544f45403a31281d140a040e18222b353d444c5254585c5d5d5b57535049413a32281e150b010c161f29333b424a5053575b5d5e5d5b5753504a423c342a21180e000000000004101c2834404b555d686d757c808384848585858585858485929fabb8c5d2deded1c4b8ab9e9184858585858585858483817e79706c615a50443a3025190d01000000010c16202c353e474f565d6065696a6a6965605d554f473e352c20160c0206111c263039434b51596063676a6a6a67636059514b433930271c0d040000000916222f3c4955626f7c8895a2afbbc8d5dfd3c6baada29792919191919191919191919191919191908f8b857e716c61554b4035291d10040000000000040d1a232c353e434c5254595c5d5e5c5954524c44414550535b606366696a6967636059524c443a32281e11080000000000030c18212a333c424a5053585c5d5e5c5954534d453f372d241a0d040006111c2630383f444e54565a5d5e5d5b56554f46413a32281f160c000000000004101c2834404a546875828f9ba8b5c2cdd9e0d4c8bcb1a79f92867e76716e6d6d6e6f7275787b7f8386898b8c8b89837c706b60564c4135291d11040000000000121f2c3945525f6c7885929fabb8c5d2ded6cabeb4aa9e9184796d605a514a464244464e565e69717e8b96a0acb9c5d2d6cbbfb4aa9a8d807467544a3f33281c0f03000004101d2a3743505d6a7683909da9b6c3cfc6bfbbada59d9490857e78716e686d6f747d86929facb8c5d2dfd2c5b8ac9f928579675c5145382c1f1306000000000000000000000713202d3a4653606d7986929facb9c5d2d0bdb0a3968a7d78787878787878787878787878787878787775716d665f574e453b30251a0e030000000d192633404c5966737f8c99a6b2bfccd9ded1c4b8ab9e918585858585858585858585858585858483817d786f6a5f574d42362a1e13080000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f53462d221f29333b44505b656d79849198a2acb6c0cad4dee8f2fcfffff4e8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000030f1c28333f4a5465727f8c98a7b1bccfd8e0d3c7baaea3998c7f72675d51473d342c282a2f39424d57606d7a86929facb8c4cfdadacfc4b7ab9e918478695f53463a2d21140700000000000000000006121f2c3844505c666d7a828a8e9091919191919399a4afbbc7d4dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000050d151d232930383f4449505356575f6164666869696a6968676563605c5453514b4540393028231c150c04000000000000000000000000000000071119232b31394045474b4f5051504e4948443d352f281f160b0200061019232b323a4145474c4f51504f4a46443f382f2820160c0300040d1720292f383f44464a4e5051504e4b46443f38302a22180f06000000000006131f2c3845515c676d7a81888d8f9191919191919191919298a2aebac6d3dfdfd2c6b9ada197919191919191919191908e8b857e716c61564c41362a1d110500000000040d1a232c353e444c5254595c5d5d5c5854514c433e352c231a0e0400000a141e27313940454f54565a5d5e5d5a56544f45403931281e150b000000000916222f3c4955626f7c8895a2afbbc8d5e2d6cabeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d9b9792887e71675d5145392c20130600000000000008111a232c313a4145474c4f51514f4c4746413b353e41495053565a5c5d5c5a56544f46413a322820160c00000000000000060f18212a30383f44464b4f5151504d4846423b332d251b12080000000a151e262e343d4347494e5051504e4a48443d35302820160d040000000000000c18232e3f4c5965727f8c98a7b1bcc8d4e0d9cdc3baaea398928a827e7b79797a7c7e8184888c8f92989899989590867d70685d5245392c2013060000000000121f2c3945525f6c7885929fabb8c5d2dedbd0c5b9aca0968d80736c605c54524d51535860686e7b85929ea8b2bdc8d4d3c7baaea3988a7d7063574a3d2d22170b00000004111d2a3744505d6a7783909daab6c3d0d1cbbfb7afa69f97928b837e7a797a7c81879298a3aebac7d3ddd0c3b7aa9d9084776a554b4034281c10040000000000000000000006121f2c3844515c667884919eabb7c4d1d2c5b8ab9f9285848585858585858585858585858585858484827e786e6a5f574d42362a1f14090000000d192633404c5966737f8c99a6b2bfccd9dfd2c6b9ada19791919191919191919191919191919191908e8a837c6f695e53463a3025190d0100000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c6b9ac9f9386796c60493f332727313b454f59606c77818f96a0aab4bec7d2dce5f0f9fffffff4e8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000006121f2b3844505b6675828f9ca8b5c2cedbdfd2c5b9ac9f92867a6d61554b40352b221c1d27303b45525d6874818e9ba9b2bec9d5ded2c5b9aca196887b6e6155483b2e2215080000000000000000000713202d3a4653606d78828f949b9d9e9e9e9e9e9fa4abb5c0ccd7dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000030b12181e262e34383f4446494d535557595b5c5d5d5c5c5a585653514a46454039342e271e17110a0300000000000000000000000000000000000811191f282f35393a3f42444443413d3b383229241d160d0400000007111920283035393a3f434444423d3937332d261d160d04000000050e171d262d3338393e42444444423e3a38342e261e1810060000000000000713202d3a4653606d79828e93999c9d9e9e9e9e9e9e9e9e9fa2aab3becad6e2e1d5c9beb2a9a19e9e9e9e9e9e9e9e9e9d9b9792887e71685e5246392d201307000000000008111a232c323a4145474c4f51514f4c4745413a312c231a1108000000020c151f272f353d4348494e5051504e4948443d352f281f160c03000000000916222f3c4955626f7c8895a2afbbc8d5e6dbcfc5bbb3adababababababababababababababababaaa9a29a9285796d6053473a2d2014070000000000000008111a1f282f35393a3f434444433f3b393630292f383f4446494d4f50504e4948443d35302820160e050000000000000000060f181e262e34383a3e42444443403b3a363129211b130900000000030c151c232832373b3c41434444413d3c383329241e160e04000000000000000715222f3c4855626f7b8895a0abb8c4ced9dfd7cbbfb4aaa39f948f8a87868687898b8e9196999c9fa3aaa6a7a09891857a6d6054473a2d2114070000000000121f2c3945525f6c7885929fabb8c5d2dee2d5c9bdb2a89f93887e736d66615e565c60636a6f7a839197a2adbac3ced9d2c5b8ac9f92867a6d6053473a2d20140600000003101c2936434f5c6976828f9ca9b5c2cedad7c9c0b8b0a9a29f95908b878686898e9399a3aab4bfcbd6d7ccc0b5ab9b8e8175685b4f422e23180c000000000000000000000004101c2834404a54697683909ca9b6c3cfd3c6baada297929191919191919191919191919191919191908f8b847c6e695e52463b31251a0e0200000d192633404c5966737f8c99a6b2bfccd9e1d5c9beb3a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d9b9591857b6e61564c41362a1e110500000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd4c8bbafa49a8679655b5044372b2f39434d57616b737f8c939ea8b2bcc5d0d9e4ebeceff3f8fef4e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000613202d394653606c7985929fabb8c5d2ded8ccc0b6ac9b8e8275685d5243392f231910151e2935414c56636f7c8997a1adb9c6d2dfd5c9bdb2a8978b7e7164584b3e31251809000000000000000005121e2a36424d5765727f8b949fa6aaabababababacafb5bdc7d2dddbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000001070c151c23282d3337393c4246484b4d4e4f5050504f4d4c494644403a38342e28231d150c060000000000000000000000000000000000000000080d161d24292c2d323537383734302f2c272118130c040000000000070e161e24292c2d3236373735302d2b27221b140b040000000000050b141c22282b2d313537383735312d2c28231c150c0600000000000005121e2a36424d5766727f8c949ea5a9aaabababababababababaeb3bcc5d0dbe6e6dacfc4bbb2adabababababababababaaa9a19a92857a6d6154473a2e21140700000000000008111a20282f35393a3f434444423f3a39352f281f1a11080000000000030d151d242932383b3c41434443413d3b383229241d160d0400000000000916222f3c4955626f7c8895a2afbbc8d5e2e1d7cdc5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7b7b3aca1978b7e7164584b3e3125180b0000000000000000080d161e24292c2d3236373736332e2d2a251d262d3337393d40434443413c3b383229241e160e0500000000000000000000060c151c23282c2d3135373736332e2d2a251f170f09010000000000030a111720272b2e2f3437383735302f2c272119130c0400000000000000000815212e3a47535f6a7783909da8b2bdc9d5dddcd1c6bcb4aea69f9c979499939995989b9ea1a8a9acaeb4b2b1aaa1978c7f7266594c3f3326190c0000000000121f2c3945525f6c7885929fabb8c5d2dee5d9cec4bbafa49a93877f79726e696b666d70747c839195a0a9b3beccd5d4c8bdb2a89b8f8275675d5145392c1f1306000000000d1a2733404d5a6673808d99a8b2bdc9d5dbd2cbc2bbb3ada7a09d98999299969a9fa4abb4bcc6d0dcd4c7bbafa4998b7e7265584b3f322518070000000000000000000000000c18232e414e5b6874818e9ba7b4c1ced6cabeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d9b9691857b6e61574d42362a1e120500000d192633404c5966737f8c99a6b2bfccd9e6dacfc4bbb3adabababababababababababababababaaaaa7a0978f8275685e5246392d20130700000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd8ccc0b69f9386796c605346392d35404b555f69707d87939fa5afbac3ced7e2e0dfe0e3e7edf4f4e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000915222f3c4855626f7b8897a2adbac6d3dfd4c8bbafa49a8a7d7064564c4131281d11070c19242f3a4854606b7885919eabb8c4d1dedacec1b4a79a8e8174675b4e413025190e02000000000000000714212d3a46535e697784919ea6b0b6b7b8b8b8b8b9bbc0c7d0d9e3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000030a11171b22272b2d31363a3b3e40424243434342413f3c3a38342e2c28231d18120b0300000000000000000000000000000000000000000000040c12181d202025292a2b2a282322201b160d070100000000000000040c13191d202125292a2a2824201f1b17110a0200000000000000020a11171c1f2024282a2b2a2824201f1c17110a03000000000000000714212d3a46535e697884919ea6afb6b7b7b8b8b8b8b8b8b8b8babec5ced7e1ecebe0d6cdc4beb9b8b8b8b8b8b8b8b8b7b6b3aca2988c7f7265594c3f3226190c00000000000000080d161e24292c2d3236373736322d2c29241e160d0800000000000000030b121821272c2f303437373734302f2c272118120c040000000000000916222f3c4955626f7c8895a2afbbcfdbe6e9dfd7cfcac6c5c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c3beb3a99a8d8174675a4e4134271b0e010000000000000000040c13191d202126292a2b292621201e19141b22272b2d303336373634302f2c272119130c04000000000000000000000000030a11171c1f2025292a2b292621211e1a140d05000000000000000000060c161b1f2223272a2b2a282323201c160d080200000000000000000006121f2b37434e5865717e8b96a0acb9c1cbd5ded8cfc6bfbab0aba9a4a1a49fa4aba5a8abadb2b6b9babfbfbcb3a99d9083766a5d5043372a1d100400000000121f2c3945525f6c7885929fabb8c5d2deebe0d8ccc0b6aca499938c837f7b797778797d81879195a0a7b1bbc5cfd9d0c7b8aca096897d7063554b4035291d1004000000000a1723303d4a5663707d8996a1acb9c2ccd6ddd4cdc5bebab1acaaaba39fa3aba7acafb5bdc6ced8d7cdc5b9ac9f93877b6e6154483b2e211508000000000000000000000000071a2633404d596673808c99a6b3bfccdbcfc5bbb3adababababababababababababababababababaaa8a0978f8275695e53463a2d21140700000d192633404c5966737f8c99a6b2bfccd9e5e1d6cdc4beb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7b6b1a99f93877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbddd2b9ac9f9386796c60534639353d45515d676e7b859299a4afb7c1ccd5dcd6d3d2d3d6dce2eaf2e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000b1824313e4b5764717e8a97a9b3becad6dfd2c6b9ac9f93867a6d6154473a3021160c0008131e2c38444f596875818e9ba8b4c1cedbdcd0c3b6a99d9083766a564d42362a1e1105000000000000000815212e3b4854616e7b8796a0acb8c2c4c4c4c4c4c6c7ccd2d9e2ebdbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000060c11171b1f20262a2d2e31333536363736353432302d2c28231f1c18120c070000000000000000000000000000000000000000000000000001070d101314181c1d1e1d1b161613100b040000000000000000000002080d111314191c1e1d1c1713120f0b060000000000000000000000060b0f1213171b1d1e1d1b181312100c060000000000000000000815212e3b4854616e7b8796a1acb8c1c4c4c4c4c4c4c4c4c4c5c6cad0d7e0e9e9e9e8dfd6cfc9c6c4c4c4c4c4c4c4c4c4c3beb3aa9c8f8275695c4f4236291c0f0000000000000000040c13191d202126292a2a292521201d19130c0400000000000000000001070c161b1f2223272a2b2a272322201b160d0701000000000000000915222f3c4855626f7b8895a9b3becad6dcdcdcdcdbd6d3d2d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d0c2b5a89b8f8275685c4f4235291c0f0200000000000000000001080d111314191c1e1e1c191414110d0a11171b1f202327292a292723221f1b160d0802000000000000000000000000000000060c101213181c1e1e1d1a1514120e09030000000000000000000000040a0f1315161b1d1e1d1b171614100b050000000000000000000000030f1a26313c4653606d7984919ea5afb9c3ccd5ddd8d1cbc2bbb7b6b1b5afacafb5b1b4b7b9bdc2c5c7cbcec4b8ab9f9285786c5f5245392c1f120600000000121f2c3945525f6c7885929fabb8c5d2deebe8ddd2c7beb5aba49f95908b8785848586898e9299a0a7b1b9c3cdd7d2c7bdb1a79d9184786c605346392f24180c00000000000613202d394653606c7884919ea6b0bac4cdd5ddd7d0cac3bcb8b7b5afacafb5b4b9bbc0c7d0d8d9cfc5bbb0a69c8f8276695e52463a2d2014070000000000000000000000000b1825313e4b5864717e8b97a4b1bed1dcd7cdc5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7b7b2a99f93877b6e6154483b2e21150800000d192633404c5966737f8c99a6b2bfccd9e5e8dfd6cfc9c6c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c3bbafa49a8a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9aca09386796d6053463a3d47515b606d79839097a2abb5c0c9d3d8d0cbc7c5c7cbd0d8e0eae8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfd0dbddd0c3b7aa9d908477685d5246392d20130400010f1b27323f4b5865727e8b98a5b1becfdaded2c5b8ab9f928578695e52463a2d20140700000000000000091623303c4956636f7c8996a8b2bdccd1d1d1d1d1d2d4d7dddcdcdcdbcec1b4a89b8e8175685b4e4235281b0f000000000000000000000000000000000000000000060b0f12131a1e2122242628292a2a2929272523201f1c1813100c070000000000000000000000000000000000000000000000000000000000010406070c0f1111100e0a0907040000000000000000000000000000010407070c1011110f0a0605030000000000000000000000000000000306060b0f1111110f0b07060300000000000000000000000916232f3c4956626f7c8995a8b2bdcbd0d1d1d1d1d1d1d1d1d2d3d6dbdcdcdcdcdcdcdcdcdad5d2d1d1d1d1d1d1d1d1d1d0c3b6aa9d9083776a5d5044372a1d1100000000000000000001080d111314191c1e1e1c191413110d0801000000000000000000000000040a0f1315161b1d1e1d1b161613100b040000000000000000000815212e3b4854616e7b8797a2adb9c6d0cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcec1b5a89b8e8275685b4f4235281c0f020000000000000000000000010406070c101111100c0807050100060b0f1213161a1c1d1d1b1615130f0a04000000000000000000000000000000000000000306070b0f1111100d08070502000000000000000000000000000000030608090e1011110e0a09070400000000000000000000000000000a151f2c3844515c66717e8a939ea7b1bac3cbd5dadcd7ccc7c3c2bdc0bbb9bbc0bec1c4c5c9cfd2d3d7d2c6b9ac9f9386796c605346392d20130600000000121f2c3945525f6c7885929fabb8c5d2deebe9e4d9d0c7bdb5afa7a09d9898929191939a9b9fa3abb1b9c3ccd5d7ccc0b5aba0958a7e71665b5044382b1d1207000000000006121f2b3844505b66717e8b949fa8b2bbc3cbd5dadbd6cec8c5c3c0bbb9bbc0c1c6c7ccd2d9d7cfc7bdb3a99e94897d7063574d42362a1e12050000000000000000000000000a1623303d495663707c8996abb4bfcbd7dfd7cfcac6c5c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c3bbafa49a8b7e7164584b3e3125180b00000c1926333f4c5966727f8c99a5b2bfcfdadcdcdcdcdad5d2d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1ccc0b6ac988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9aca09386796d6053463b454f59626d75818e95a0a9b3bdc7d2d8cec6bfbab8babfc6ced8e2e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b5c1cedbdacdc0b4a79a8d817467564c4135291d110500000b15222f3c4855626f7c8895a9b3bec9d5dfd3c6baaea298877a6e6154473b2e211408000000000000000916232f3c4956626f7c899aa4afbbc8d1cfcfcfcfcfcfcfcfcfcfcfcfcdc0b3a79a8d8074675a4d4134271a0e00000000000000000000000000000000000000000000000305090e121415181a1b1c1d1d1d1c1a19161312100c07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a8b2bdc9d1cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3b6aa9d9083776a5d5044372a1d110000000000000000000000010407070c1011110f0c0706040100000000000000000000000000000000030709090e1011100e0a09070300000000000000000000000613202d394653606c7985929eabb4bdc2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1bcb2a89a8d8073675a4d4034271a0d01000000000000000000000000000000000304040300000000000000000305060a0d1011100e090907030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54616c75818e95a0a8b1b9c1c9cfd6dbd8d3d0cfd2ccc7c6c7ccd2ced1d2d5dadfd9d4cbc3b8ab9e9285786b5f5245382c1f120500000000121f2c3945525f6c7885929fabb8c5d2dee6ded8d3d0d0c7c0bbb1acaaaaa29f9e9e9fa4acacafb5bdc3ccd5d6cdc4bbafa4999083786c60544a3f33281c0b010000000000030f1c28333f4a54606c78828f96a1a9b1b9c0c9ced5dad9d4d1d1cbc7c5c7cbd1d2d4d7dad5cec5bdb5aba2978f82756b6054453b30251a0e020000000000000000000000000815212e3b4854616e7b8799a3aebac7d3dcdcdbd6d3d2d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1ccc0b6ac998c7f7266594c3f3326190c00000b1825323e4b5865717e8b98a9b2bec9d0cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfd2cbbfb4ab988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9aca09386796d605346434d57606b727f8b939ea7b1bbc5d0d9d0c6bcb4aeacaeb4bcc6d0dce7dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3d0dcd8cbbfb2a5988c7f7265594c3f3024190d0100000714202d3a4753606d7a8697a1adb9c6d2dfd6cabeb3aa95897c6f6256493c2f231609000000000000000714212e3a4754616d7a86939facb9c0c2c2c2c2c2c2c2c2c2c2c2c2c2c1bbb0a6988b7f7265584c3f3225190c0000000000000000000000000000000000000000000000000000020507080b0d0f0f1010100f0e0c09070604000000000000000000000000000000000000000000000000000000000000000000000000030607090c0d0c09060503000000000000000000000000000000000000000000020608080c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b8796a0acb9c0c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1beb4aa9c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6674818e99a3abb2b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b1aaa0968a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3942505a606d7a839096a0a7afb9bec5cacfd4d7dddcddd7d4d2d4d7dddbdedcdbd6d3cdc8c1b9b0a69c8f8275695c4f4236291c0f0300000000121f2c3945525f6c7885929fabb8c5d2dedcd4ccc7c3c2c5c7c3bcb8b7b4aeacaaabacafb6b9bbc0c7cfd5d6cdc4bbb1a79f93877c6f665b5042382d22170b000000000000000b17222d3844505b666e7b849197a0a7afb9bdc4c9cfd4d8dddcd7d4d2d4d7dcddd8d4cfc9c3bcb4aba39992857b6e61594f4433291f1409000000000000000000000000000713202d3a4653606d7986929facb9c5d1cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcabfb4aa988c7f7265594c3f3226190c00000916232f3c4956626f7c8997a1adb9bec2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c0baaea399897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d6053474b555e69707d87929fa5afb9c3cdd7d2c7beb4aaa39fa3aab4bfcbd6e3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000004101c2834404b556b7884919eabb7c4d1ded6cabdb0a3978a7d7064574a3d3124170800000006131f2c3945515d677885919eabb8c4d1dedbd0bdb0a3978a7d7064574a3d3124170a000000000000000713202d3946525e687683909da5afb5b5b6b6b6b6b6b6b6b6b6b6b6b5b5b1a99f94887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10121316191a191613120f0b06000000000000000000000000000000000003090f121415181a19171413100c070100000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697784919ea6afb5b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b3ada2988c7f7266594c3f3326190c00000000000000000000000000010507080b0d0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626e7b869299a0a8a8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a7a0989184786d6053463a2d201307000000000000000000000000000000000000000000000000000000040607090b0b0c0c0b090707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303e45525d686e7b8490959ea5adb3babec5c7ccd2d1d2d3d7dcdcd7d4d2d1cfcfcac6c3bcb8afa79e948a7d7064574a3d3124170a0000000000121f2c3945525f6c7885929fabb8c5d2ded4cac2bbb7b6b9bbbfc6c5c3bfbab8b7b8b9bbc0c5c7cbd1d9d8cdc4bbb2a99f958d80746a60544a3f2f261c11060000000000000006111c28333f4a545e696e7c8591959da5acb2b9bec5c8ccd2d2d3d6dbd6d3d2d0cdc8c4beb9b1aaa29992877d70695e52473d3221170d030000000000000000000000000006121f2b3844505c667783909dacb6bfc2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1baaea2988a7d7064574a3d3124170a00000713202d3a4653606d7884919ea5aeb4b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b6afa79f9286796d6053473a2d20140700000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d605347515c676e7b859299a3afb7c1cbd5d8ccc0b6aca3989298a3aebac7d3e0dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000006131f2c3845515c677985929facb8c5d2dfd5c8bbaea295887b6f6255483c2f22150900000004101d2935404b55697683909ca9b6c3cfdcd7cbbeb1a4988b7e7165584b3e3225180b0000000000000005111d2a36414c5664707d8a939fa3aba9a9a9a9a9a9a9a9a9a9a9a9a9a8a7a0978f82766a5f53473a2e211508000000000000000000000000000000000000000000020507080b0d0d0b0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f202325262523201f1b17110a020000000000000000000000000003090e151a1f212225262623201f1d18120b060000000000000000000000000000000000000000000000000000000000000005111e2a36424d5766727f8c949fa3aba8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a9a19e92867a6e6154473b2e211408000000000000000000000002080d111414181919181514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3847535f69717e8791969a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b999590867c6f665c5044382b1f120600000000000000000000000000000000000000000000000205070c101314151718191818161413110d0805020000000306070a0c0d0c0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2935414c565e696e7b838e939ea1a9adb3b9bbc0c2c4c5c7cbd1d1cbc7c5c4c2c1bebab8b1aca59e958f82766c6155493c3023160a0000000000121f2c3945525f6c7885929fabb8c5d2d6cdc2b8b0aba9acaeb5bdc6cfcac6c5c4c4c6c8ccd2d4d7d9d2ccc3bbb3a9a1969083786d60584e42382d1d140a0000000000000000000b17222d38424d565f6a6e7b838e939ea1a8adb3b9bbc0c3c5c6cad0cac6c5c3c1bcb8b3ada7a09892877e716b60574d42352b210f05000000000000000000000000000003101c28343f4a546774808d9aa4aeb4b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b0a79f92867a6d6054473a2d211407000006121f2b3844505c66727e8b939fa2aaa8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8aca49f958d8174675d5145392c20130600000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d6053505a606d79839097a1abb5c0c9d3d5ccc3bbafa49a9285929facb8c5d2dfdbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000713202d3a4653606d798698a3aebac7d3e0d4c7baaea194877b6e6154483b2e211508000000000c18242f424f5c6975828f9ca8b5c2cfdbd8cbbfb2a5988c7f7265594c3f3226190c00000000000000010d1925303a4955616c74818d92999b9c9c9c9c9c9c9c9c9c9c9c9c9c9b999590857b6e62584e43372b1f12060000000000000000000000000000000000000003090e121415181919181413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000090c151c23282c2d30323332302d2b27221b140b070000000000000000000000060e151a20262b2e2f323332302d2c29241d17110a020000000000000000000000000000000000000000000000000000000000020e1a25303b4653606d79828e92999a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9997918a7e71685e5246392d20140700000000000000000001070d14191e20212426262522211e1a140e09020000000000000000000000000000000000000000000000000000000000000000000000000006111c2b37424d57616c717d848a8d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8d89837c6f6a60544a3f34281c100300000000000000000000000000000000000000000002090e1114181c1f202224252525252321201d1914120e09060b10121317191a191615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c19242f3a434d575e696e7a818b92979fa2a9acafb5b5b7b9babfbbbac0bbb9b7b6b4b3adaba7a09d938f837a6d615a5044392d2014080000000000111e2b3844515e6b7784919eaab7c4cfcec4bbb0a69f9c9fa3abb5bdc5ced3d2d1d1d2d4d8dbd6d3d0c7c0bbb1a9a19791847b6e665c51463d2f261c0b0200000000000000000006111c262f3b444e575f696e79818a91969ea1a9acafb6b7b8babfbbbebab8b7b4b1aba9a19e9590867e716c61594f453b3023190f000000000000000000000000000000000b17232e3c4855626f7c87939fa3aaa8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a69e958d8073675d5145392c201306000003101c28343f4a54626d74818c92989a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a938f837a6d60554b4035291d110400000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d605358626d74818e959fa9b3bdc7d1d7cec3bab0a69f93887e8b98a4b1becbd7dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212d3a4754606d7a8793aab4bfcbd6e3d3c7baada094877a6d6154473a2e21140700000000071b2835424e5b6875818e9ba8b4c1cedbd9ccbfb2a6998c7f7366594c403326190d000000000000000008131e2d3944505a606d7880878c8e8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c89837c6f695f53463c31261a0f03000000000000000000000000000000000002090e141a1e21212526262421201e19130d0701000000000000000000000000000000000000000000000000000000000000000000000000020b121a1e262e34383a3c3f403f3c3937332d261d191108000000000000000000070f181f262b31373a3b3f403f3d3a38352f28221c140b03000000000000000000000000000000000000000000000000000000000009141f2c3845515c676d7981878b8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8d8a857e716c62564c41362a1e11050000000000000000040c13181e252a2d2e313333322e2d2a261f1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c45505a616b70787d8082828383838383838383838383838383838383838383838282807d786f6a60584e42382e23170b000000000000000000000000000000000000000003090f141a1e2023292c2d2f3132323231302d2c2924201e1a1411171c1f202326262522221f1b150f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313b454d575e686d757e858c92979c9fa4aba9abacaeb4aeaeb5afacaba9a7a9a29f9b95908a817a6d685d52473e33281c100400000000000f1c2936424f5c6975828f9ca8b2bcc3c4bcb3a99f948f9299a3abb3bcc2c7cbd1cfd0cfcfcfcac6c2beb6afa7a09791857c6f695e544b40342b1d140a00000000000000000000000a141d29323c454e575e676d747d848c92979c9fa4acaaacaeb4aeb3aeabaaa7a79f9d97918b837b706c615a50473d33291f1107000000000000000000000000000000000615212e3a47535f6a73808c92989a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b99948f83796d60554c4135291d11040000000b17232e3842515b606c777f858b8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c87827a6d685d52433a2f24180d0100000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada093877a6d6056606a717e8b939da7b1bbc5cfd9d0c6bcb2a89e948c7f7a8794a0adbac7d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212e3a4754616d7a8794a0adbad0dce7d3c6b9ada093867a6d6053473a2d201407000000010e1b2834414e5b6774818e9aa7b4c1cddad9ccc0b3a6998d8073665a4d4033271a0d000000000000000002101c28333e44505c666d747b7f818283838383838383838383838282807c786f6a5f574d42342a20150a0000000000000000000000000000000000050d141a1f252a2d2e323333312e2d2a251e18130c0400000000000000000000000000000000000000000000000000000000000000000000010b141d242c30383f4446494c4d4c4946443f382f2b231a120800000000000000071019212a31373c4347484b4d4c4a47454039332d261d150c030000000000000000000000000000000000000000000000000000000004101c2834404b555d676d747b7e8182828383838383838383838383838383838383838383838383838383838383838282807d79716c625a50443b3025190d0100000000000000040d161d24293036393b3e40403e3b3a36312a251f170f0600000000000000000000000000000000000000000000000000000000000000000000000009151f2a333e48505960666d70747576767676767676767676767676767676767676767676767573706c655f584e463d30261c110600000000000000000000000000000000000001070d151a1f252a2d2f34383a3c3e3e3f3f3e3c3a3935302d2a251f1c23282b2d303333322f2e2b26201b150f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f29333b454d565d606c717a80858b9093999a9c9e9fa3aaa1a1a0a39f9e9c9a9997928e89837d756d685d564c41352c22170b0000000000000b1825323e4b5865717e8b96a1aab2b7b7b2a9a1978f82879299a2aab0b9bbbfc1c2c3c3c2c0bebab8b0aca49f9590857c6f6a5f574d42392e22190b020000000000000000000000020b17202a333c454d555d606b70797f858b90939a9b9d9fa2aaa1aaa29f9d9b9895908b857f786e69615a50483e352b20170d000000000000000000000000000000000006121f2b37434e58606c7880868b8d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8d89827a6d675d51433a2f24190d0100000006111c26303f44505b656c727a7e81828383838383838383838383838383838383838383838382817f7b756d685d564c4131281d13070000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada093877a6d605e686f7c87929fa5afb9c2cdd6d6cabfb4aaa0968f82777a8794a0adbac7d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4dfd2c6b9ac9f9386796c605346392d201306000000010e1a2734414d5a6774808d9aa7b3c0cddad9ccc0b3a6998d8073665a4d4033271a0d0000000000000000000b172228343f4a545c60696e7275767676767676767676767676767573706c655f584e453c3122180e0300000000000000000000000000000000060e171f252a31363a3b3e40403e3a39363029241d160d0400000000000000000000000000000000000000000000000000000000000000000009131d262f363e424a50535658595856535049413d352c241a11080000000000060f19222b333c42474e53555859595653514b443f382f271e150b00000000000000000000000000000000000000000000000000000000000c18232e39434b555d60696e72747576767676767676767676767676767676767676767676767676767676767676767573706d66615a50483f32291e140800000000000000040e161f282f353b4146474b4c4c4b4846423b36302921180f060000000000000000000000000000000000000000000000000000000000000000000000030e18212c363e474f545c606467686969696969696969696969696969696969696969696969686663605b534e463d342b1e140a000000000000000000000000000000000000040c121820262b30363a3b404547484a4b4c4b4b494745413b3a363029262e34383a3d3f403f3c3b37322b272019100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d172129333b444c525a62686d737a7e83868a8d8f919298949494949992918f8e8c8985817d77706c605d564c443a30231a10050000000000000713202d3a4653606d79849198a1a9aaaaa8a09791857a7e8792989fa6acaeb5b5b6b6b6b5b4b3adaba69f9a938d837b6f6a5f584e453b30271d100700000000000000000000000000050e18212a333b434b515961676d72797e83878b8e9092989494949892908e8b88837e79726d665f5750483e362d231a0e050000000000000000000000000000000000030f1b26313c44505b666c737a7e8082828383838383838383838383838383838383838383838282807c766d685d554b4031281e130800000000000a141e27333f49535b60686d717475767676767676767676767676767676767676767676767574726e6a615d564c433a2f1f160c010000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada093877a6d60666d7a849199a3aeb7c0cbd4d4cac2baaea29891847a6d7a8794a0adbac7d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212e3a4754616d7a8794a0adbad0dbe7d3c6b9ada093867a6d6053473a2d201407000000010e1b2834414e5b6774818e9aa7b4c1cddad9ccbfb3a6998c807366594d4033261a0d000000000000000000050b17232e38424a50575f62666869696969696969696969696969686663605b534e463c332a20100600000000000000000000000000000000060f18202930363b4246484b4c4c4b4746413a352f281f160d0400000000000000000000000000000000000000000000000000000000000000040d1b252f38414850545c606365666563605b534f473e362c231a0f06000000050e18212b343d454d53585f6265666563605d55504a423930271d12070000000000000000000000000000000000000000000000000000000007121d27303a434b51575e616567686969696969696969696969696969696969696969696969696969696969696969686664605c5450483f362d20170d02000000000000020c162028313a41454c52545759595855534d46423b332a21180c030000000000000000000000000000000000000000000000000000000000000000000000060f1a242c353d424a5053575a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a56535049413c342b22190c020000000000000000000000000000000000060d161d242931373b4246474b51535557585858585654524c4846423b3530383f44464a4c4d4c4947433c37322b221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172129323a414550565d60676d71767a7d80828486878788878786868483817f7c7975706b64615a524c433a32281e11080000000000000006131f2c3845515c676f7c8691969c9d9d9c9691857d6f717d858f949b9fa3aba8a9a9a9a8a7a9a29f9b94908780796e695f584e463c33291e150b000000000000000000000000000000060f182129313940454f555c60676d71767b7e81838587878887868583817e7b77726d67605c544d453e362d241b1108000000000000000000000000000000000000000a152028333f4a545b60686e717475767676767676767676767676767676767676767676767675736f6b615d564c43392f1f160c010000000000020c17222d38414950565d6065676969696969696969696969696969696969696969696969696865625f58524c443a31281e0d04000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6d616d78828f96a1abb4bfc9d2d6ccc2b8aea49f92867c6f6d7a8793a0adbac6d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212d3a4754606d7a8793aab4becad6e2d3c7baada094877a6d6154473a2e211407000000020f1c2835424f5b6875828e9ba8b5c1cedbd8ccbfb2a5998c7f7266594c3f3326190c0000000000000000000006111c2630383f444d5355595b5c5c5c5c5c5c5c5c5c5c5c5c5c5b5956535049413c342a21180e00000000000000000000000000000000030c18212a333b42464d53545859595754524c45403a31281f160c010000000000000000000000000000000000000000000000000000000000010c16202d37414a525a61666d6f7273726f6c65605950483e352b22180e0500030c17202a333d464e575f616a6e727372706d67605b544b42392e23180c03000000000000000000000000000000000000000000000000000000000b151e28313a41454d5254585b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a5753514a423e362d241b0e050000000000000008131e28323a434b51565e6164666665615f57524d453c332a1e150b00000000000000000000000000000000000000000000000000000000000000000000000008121a232b30383f44464a4d4f4f5050505050505050505050505050505050505050504f4f4d4946443f382f2a2219100700000000000000000000000000000000000810181f282f353c43474d5254555c6062646565656463605d5654524d46413e424a50535659595855544e47433d342c231a0f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1720282f353e434c52555d6065686d71737678797a7a7b7b7a7979787674726f6c66636059555045413a312820160c000000000000000004101c2834404b55606a6f7d848b8f90918f8b847c6f6b6b707b82898f9299999b9c9d9c9c9a9897928e89837c746d675f574e463c342a21170c0300000000000000000000000000000000060f171f282f353e434b51555c6065696e717477797a7a7b7a7a787774726e6965605d55504a423c332c241b12090000000000000000000000000000000000000000040b17222d38424a50565e6165676869696969696969696969696969696969696969696969696866636059524c443a31271d0d040000000000000006111b262f383f444c5254585b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5955534e46413a32281f160c00000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6d6c74808d949fa8b2bdc6d1d8cec4bab0a69d928a7e716a6d7a8793a0adbac6d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000713202d3a4653606d798698a2aebac6d3dfd4c7baaea194877b6e6154483b2e211508000000030f1c2936424f5c6975828f9ca8b5c2cfdbd8cbbeb2a5988b7f7265584c3f3225190c00000000000000000000000a141e262e343c4247484c4e4f50505050505050505050504f4f4d4946443f382f2a22180f06000000000000000000000000000000000b151e2a333c454d52575e6165666664615e56514b433a31281e1308000000000000000000000000000000000000000000000000000000000008131e28323f49525c646c71797c7f807f7c78706b615a50473d342a20170d030b151e29323c454e5860696e767b7e807f7d79726c665c544b40342820150a00000000000000000000000000000000000000000000000000000000030c161f282f353b4246484b4e4f4f5050505050505050505050505050505050505050505050505050505050504f4f4d4a46444039302c241b120900000000000000010d1924303a444c555d60686e717373716e69615e574d453c30271c12070000000000000000000000000000000000000000000000000000000000000000000000000811191e262e34383a3d4142434343434343434343434343434343434343434343434342403d3937332d261d191007000000000000000000000000000000000008111a222a313940454e53575e6166676d6f71717272716f6d6866615e57524c4750545c6063666665625f58544e463e352c21170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e2429313a41454b5154565d616467696b686d6e6e6e6d6d676b69676662605b54544f49443e352f281f160e040000000000000000000c18232e39434e58606b6f797e828484827e796f6a6061696e767d82868a8c8e8f90908f8d8b8985817c766f6a605c554d453c342a22180f05000000000000000000000000000000000000050d161d2429313940454b5153575e6165686a676d6e6e6e6d676a6865615f5753514b443f38302a211a11090000000000000000000000000000000000000000000006111c262f383f444c5254585a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a56544f46413a32281f150b0000000000000000000a141d262d333a4145474b4e4f505050505050505050505050505050505050505050504f4e4c4847433c35302820160d0400000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6d717e8a929da6b0bac4cfd8d0c6bcb2a89f948d80736c606d7a8793a0adbac6d3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000006121f2c3844505c667885929fabb8c5d2ded5c8bcafa295897c6f6256493c2f23160900000004111d2935414c566a7683909da9b6c3d0dcd7cabeb1a4978b7e7164584b3e3125180b0000000000000000000000020c141c232831373a3b3f424343434343434343434343434342403d3937332d261d1810060000000000000000000000000000000007121d27303c454d575e61696e717373716d68605d554c433a2f24190d04000000000000000000000000000000000000000000000000000000010d19242f3a44515b646e747e84898b8c8b89847d716c61594f463c32291f150b121d27303a444e57606a6f7b83888b8c8c89857f786d665c51453c31261a0f0300000000000000000000000000000000000000000000000000000000040d161d242930363a3b3f4142434343434343434343434343434343434343434343434343434343434343434342403d3a38342e271e1a1209000000000000000005111d2935414c565d676d747a7e7f7f7e7b756e695f574d42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000070c141c23282b2d31343536363636363636363636363636363636363636363636363533302d2b27221b140b07000000000000000000000000000000000008121a232c343c434b51585f62696e7276797c7d7e7f7e7e7c7a77736e69615e56515a61666d707273726f6a6260584f473e33291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191f282f353a4145474c5254575a5c565d6061616161605c555c5b595653504a48443d393329241e160d040000000000000000000007121d27303d464f5960676d7275777775726d675f58575e616b70757a7d808283838382817f7c79746f6a626058514b433b332a221810060000000000000000000000000000000000000000040c12181f272f34394045474d5254585b555d60616161605d555b5855534d47454039342e261e180f080000000000000000000000000000000000000000000000000a141d262d333b4146474b4d4f4f5050505050505050505050505050505050505050504f4f4d4948433d35302820160d03000000000000000000020b141b22273035393a3e41424343434343434343434343434343434343434343434342413f3b3a373129241e160e040000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6f7c86929fa4aeb8c2ccd6d6cbbfb4aaa1968f82786d60606d7a8693a0adb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000003101c28343f4a546b7784919eaab7c4d1ddd7cabdb1a4978a7e7164574b3e312418090000000713202c3945525d687885929fabb8c5d2ded6c9bcb0a396897d7063564a3d3023170a000000000000000000000000020a11171f262b2e2f3335363636363636363636363636363533302d2b27221b140b0600000000000000000000000000000000000c18232e39434d575f696e757b7e7f7f7e7a746d675d564c41352920160a00000000000000000000000000000000000000000000000000000004111d2935414c56626d74808a91969899989691877e716b60584e443a31271d1218232e39434c565f6a6f7c85909498999897928c82786d60584e43372b1f12060000000000000000000000000000000000000000000000000000000000040c13181f252a2d2e32343536363636363636363636363636363636363636363636363636363636363636363533312d2c28231c150c080000000000000000000713202d3946525d686d7981868a8c8c8b88827b6e695f544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f202427292929292929292929292929292929292929292929292929282723201f1b17110a02000000000000000000000000000000000008111a242c353e464e555d606a6e757b7f8386888a8b8b8b8b8986837f7b746d68605b626c70787d7f807f7c776f6a61594f453b31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d161e24292f35393a4146474a4d4f4c52545455545453514b504e4c4946443f3838322d282219130c040000000000000000000000000b151e2b343d474f555d6065696a6a6965605d554e4d53596063686d7073757676767574726f6d66626058544e4540393129211810070000000000000000000000000000000000000000000001070d151d23292f34383b4246484b4e4c515454555453514b4e4b4846423b38352f28231c140c0600000000000000000000000000000000000000000000000000020b141c22283036393b3e4142434343434343434343434343434343434343434343434342403c3b383229241e160e040000000000000000000000020a11171e24292c2d323436363636363636363636363636363636363636363636363635322f2e2b262019130c04000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd4c7baada194877a7a849198a2aeb6c0cad4d4cbc2baaea39891847a6d665c606d7a8693a0adb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000c17232e43505d697683909ca9b6c3cfdcd9ccbfb2a6998c7f7366594c4031251a0e0200000714212d3a4754606d7a8797a2adbac6d3dfd5c9bdb2a895887b6f6255483c2f2215090000000000000000000000000000060b151a1e2122262829292929292929292929292929282623201f1b17110a02000000000000000000000000000000000004101c2834404b555f696e7b82878b8c8c8a8681796d685d52453d32271b0f0300000000000000000000000000000000000000000000000000000713202c3945525d68727f8c929ea1a8a6a8a09992877d706a5f564c43392f2318242834404b555e686e7c8592979fa6a6a9a29e948d81746a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000001070d141a1e20212528292929292929292929292929292929292929292929292929292929292929292929282724201f1c18120b0300000000000000000007131f2c38444f59616d7a838e9299999998938f847b6e665c5144382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000060b101213171a1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a1613120f0b06000000000000000000000000000000000000060f1a232c363e474f585f676d747b82868c90929997989898979a93908c86817a706b626d727d84898c8c8b88837c706b61574d42362a1c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d24292c3035393a3e40434145474748484746454043413f3c3938332d2c27211c170d080100000000000000000000000000030c19222b353d434b5153585c5d5e5c5853514b4342464f54565d60646668696a6969676563605c54544e47433d342f271f170f0700000000000000000000000000000000000000000000000000030b12181d23292c30363a3b3e41414547474847474540413f3b3a36312c29241d17110a02000000000000000000000000000000000000000000000000000000020a11171e252a2d2e32343536363636363636363636363636363636363636363636363533302f2c272119130c040000000000000000000000000000060b13191d20212528292929292929292929292929292929292929292929292929282622211f1a150d080200000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd4c7baaea194877b828f96a0aab4bfc8d2d6cdc2b9aea49f92867c6f685e54606d7a8693a0adb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000061b2835414e5b6874818e9ba7b4c1cedadbcec1b4a89b8e817568574d42362a1e12050000091623303c4956636f7c8996a9b3becad6dfd2c5b9ada196877a6d6054473a2d21140700000000000000000000000000000003090e121415191b1c1d1d1d1d1d1d1d1d1d1d1d1c1c1a1613120f0b060000000000000000000000000000000000000006131f2c3845515c676e7b848f9398999999928d837a6d60584e43382b1f130600000000000000000000000000000000000000000000000000000714212d3a4754606d7a85929fa4acb2b3b2aba39992857c6e685e554b403429242c363e45515c676d7a849197a2a9b0b3b3ada69f93877c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000002090e121415181b1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a171312100c0700000000000000000000000915222f3b4854606b75828f959fa3aba6a59e969083786d6053463a2d20130800000000000000000000000000000000000000000000000000000000000000000000000000000000000306070a0e0f10101010101010101010101010101010101010101010100f0d0a06050300000000000000000000000000000000000000030d18212b353e485059616a6f7980878e92999c9fa3aba4a5a5aca49f9d99928d857d716c727f8891969999989590867d70695e5346392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d13181d2024292d2e31342f35393a3b3b3b3a3a38342e34332f2d2b28221c1c16100b0500000000000000000000000000000000071019232b31394045474b4f51514f4b47454039363d44484c525457595b5c5d5d5c5a585653504a47433d373229231d150d0600000000000000000000000000000000000000000000000000000001070c12181c1f252a2d2e322f35393a3b3b3b3a39352f322e2d2a261f1d18120b0600000000000000000000000000000000000000000000000000000000000000060b14191e20212527292929292929292929292929292929292929292929292929282723221f1b160d08020000000000000000000000000000000002080d111314181b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b191514120f0903000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdacec1b4a79b8e818e949fa8b2bcc6d0d9cfc4bbb1a79d928b7e716a605653606d798693a0acb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfcfdaded1c4b7ab9e918478695e53463a2d2114090004111d2935404b5566737f8c99a6b2bfcfdbded1c4b7ab9e918478675d5145392c2013060000000000000000000000000000000000020608080c0f101010101010101010101010100f0d0a0605030000000000000000000000000000000000000000000713202d3a4653606d798391969ea5a6aba39f958e81756a6054473b2e22150800000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a98a2aeb9bdbfbdb5aba29791847a6d675c514540362c343e48515b606d79829096a0a9b3bbbfbeb9afa4998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000020507080c0e0f10101010101010101010101010101010101010101010101010101010101010100f0d0a07060400000000000000000000000000091623303c4956636f7c89949ea7afb5b2afa8a0958b7e7165584b3e2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333d47505a616b707c848d92999fa3abacafb5b1b2b1b6afacaba39f9791877e727e8a939aa1a8a6a79f9892857b6e61544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113191d2021242724292c2d2e2e2e2e2d2c2823282623201f1c1711100b05000000000000000000000000000000000000000711191f272f35393a3f424444423f3a39352f2a32383a4145474a4d4f5050504f4e4c4946443f3837322b272018120b0300000000000000000000000000000000000000000000000000000000000001070c10141a1e20212524292c2d2e2e2e2d2c29242522211e1a14100c070100000000000000000000000000000000000000000000000000000000000000000002080e111414181a1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a1615130f0a040000000000000000000000000000000000000000010407070b0e0f101010101010101010101010101010101010101010100f0e0c080806020000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdbcfc2b6a99d938e939da6b0bac4ced8d1c7bdb3a99f958d81746c62584e53606d798693a0acb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000a1724313d4a5764707d8a97a8b2bdc9d5ded2c5b9aca196877b6e6154483b31261a0e020613202c3945515d6776828f9ca9b5c2cfdcdccfc2b5a99c8f827669554c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495365727e8b95a0a9afb2b5afa79e93897c6f6256493c2f23160900000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aaab3bec9cfc7bdb3a9a1969083796d605b52483e343d46505a636d75818e949fa8b2bbc5cdcac0b5ab9c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa6b0bbc0bfbab1a79c8f837669564c4135291d1104000000000000000000000000030608090d101213131313131313131313131313131313131313131313131313131313131313120f090907030000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c454f59616c717d8691969fa3abafb5b9bbc0bebebec0bbb9b5aea9a19992877e85929ea4acb2b3b1aaa2978e8174665c5144382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d111314171a191d202121222121201f1c181b191613120f0b060000000000000000000000000000000000000000000000070d151d24292c2d3236373736322d2c292421272c2f35393a3d404243434342413f3c3a38342e2b27201b150c07010000000000000000000000000000000000000000000000000000000000000000000004090e12141518191d202121222120201d18181514120e09040000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e0f10101010101010101010101010101010101010101010100f0d09090703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbded2c6baafa59d9b9da5afb8c2ccd6d7cbc0b5aba1979083786d605a504653606d798693a0acb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000815212e3b4854616e7b8796a1adb9c5d2dfd5c9bdb2a8988b7e7165574d42362a1f14080f18202d3a4753606d7a86929facb8c5d2dfd8ccc0b6ac998d8073665a4d402f24190d0100000000000000000000020507080b0c0b08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b657683909ca7b1bbbfc0bbafa59a8d8074675a4e4134271b0e01000000000000000000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1d0d9cfc5bcb2a89f958e81756d635a50473d454e58616c737f8c939ea6b0bac4cdd7d2c3b6a99c908376695d5043362a1d1000000000000000000000000000000000000000000000010507070b0c0b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a3744505d6a7783909daab6c1cbccc3b9ac9f928679685d5245392c20130700000000000000000000030a0f1215151a1d1f202020202020202020202020202020202020202020202020202020202020201e1b1615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000c18242f39434d57606b717e879298a0a8afb5bbc0c5c7cbd1cbd2ccc8c6bfbbb3aba399938b9297a1adb6bebfbcb3a99f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b080d111314141515141313100c070c090606030000000000000000000000000000000000000000000000000000030b12181d1f2025292a2b2925201f1d18161b1e24292c2d313335363736363432302d2b28231c1b160f0a04000000000000000000000000000000000000000000000000000000000000000000000000000002050708080d1113141415141413110d07080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407070a0c0d0c0a0706040000000000000000000000000000000000000000020507080b0c0d0c0b070705010000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe2d6cbc1b7afa9a7a9afb7c1cad3d5cbc3bbafa39991857b6e665c51484653606d798693a0acb9d2dddbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000714212d3a46535e697884919eabb7c4d1dcdacec2b6a99c8f8376695f53463b3025191318212b37434e5865717e8b98a2aebac7d3e0d4c8bbafa49a8a7d7063574a3d3024170800000000000000000002080e1114141819181514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7986929facb9c3cdcbc1b6aa9d9083776a5d5044372a1d1104000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99aab3becad6d7cec4bab1a79e938c80736c61594f454d57606a717e88939fa5afb8c2ccd6d6ccc2b5a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000002080d1113141719181514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4d1d3c7baaea398877a6d6054473a2d211407000000000000000002080d151a1f2122272a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2823221f1b160b0600000000000000000000000000000000000000000000000000000000000000000004101d2935404b555f69707d879299a2aab2bbc0c7cbd1d3d7dcd7ddd8d4d1cbc4bdb5aba49f989ea1a9b3bec7cec5baaea298887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070706040000000000000000000000000000000000000000000000000000000000000000000001070c101314181c1e1e1c181413100c0b1013191d2021242628292a2a29272523201f1c17110f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e1113131313131313131313131313131313131313131313131313120f0b070603000000000000000000000000000000000000000000000001080d11131417191a19171413100c070100000000000000000000000000000002080e11141417191a19171413110d0802000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8ddd2c9c1bab6b4b6bac1c9d2d7cdc3b9afa59f92877d6f695e544b404653606c7986939fb6c0ccd8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000005121e2a36424d576875818e9babb5c0cbd7dfd2c6b9ac9f93877b6e61564d41362a2420202a333c4754606a7683909daab4bfcad6dfd2c6b9ac9f93867a6d6054473a2d2114070000000000000000060b14191e202124252522211e1a150d0802000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8799a3aebac7d5d1c4b8ab9e9185786b5e5245382b1f1205000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b98a2aebac2ccd5d6ccc2b9afa59c928a7e716b60574d555e696f7c86929aa4afb7c1cbd4d7cdc4bab0a6998c807366594d4033261a0d00000000000000000000000000000000000002080d13191e202124252422211e1a140f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d7cbbfb4aa94877a6e6154473b2e21140800000000000000040c131920262b2e2f333738393939393939393939393939393939393939393939393939393939393939393835302f2c272117110a02000000000000000000000000000000000000000000000000000000000000050f19232c3945515d676e7b869299a3abb4bcc3cbd1d7d7d3d2cecac9c8c8cacdcfc7bdb5afaca5abadb3bbc5cfd6cabfb4aa96897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070c0f11110f0c070604000001080d111314171a1c1d1d1d1c1b19161312100b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151a1e1f20202020202020202020202020202020202020202020201f1e1c181312100b060000000000000000000000000000000000000001070d13191d20212426262623201f1c18120b0600000000000000000000000000070c14191e2021242626262421201d19130d080200000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8e4dbd2cbc6c2c1c2c6cbd2d9d0c5bbb1a79e938b7f726b60564d423944505b6579869aa4afbbc8d4dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000020e1a25313e4b5864717e8b99a3afbbc7d3e0d4c8bbafa49a8d8073685e52463f352f2c2d333c45505a626f7c88959fabbcc6d0dbddd0c3b6aa9d908377685d5245392c201307000000000000020a11171e252a2d2e3132312f2e2b262019130c040000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794abb4bfcbd7d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000714202d3a4753606d7985929fa6b0bac3ccd6d4cbc1b7ada49f92867d6f695f565d676e7b859198a3acb6c0c9d3d7cec5bbb2a89e94887c6e6255483b2f2215080000000000000000000000000000000000050c13191e252a2d2e3132312e2d2a261f1b150b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dcd1baada194877a6e6154473b2e211408000000000000050e161e252931373a3c4043454646464646464646464646464646464646464646464646464646464646464645423c3b383227221b140b0200000000000000000000000000000000000000000000000000000000000b16212b37434e58606d79839098a2abb4bdc6ced7d8d1cbc7c5c2bebcbbbcbdc0c5c6c7c0bbb9b1b8b9bec5cdd7dbd0bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000040607080807060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030404030000000000000000010407070a0d0f1010100f0e0c0907060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0c0c0c0b09070604010000000000000000000000000000000000000000000000000000000000000000060b141a1e2122272b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2924201f1c17110a0200000000000000000000000000000000040c12181e24292c2d31333332302d2c29231d17110a02000000000000000000030b12181e252a2d2e31333333312e2d29241e19130d05000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8ede4ddd6d2cfcecfd2d6ddd2c7bdb3a9a0958e81756d62594f443b333f49606c7986939facb9c6d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000914212e3a4754616d7a86929facb9c5cfdad8ccc0b6ac9f92867b6e615a5045403a393a3e454d57616c76828f9ca7b1bcced8e2d4c8bcb1a7998c7f7266564c4135291d11040000000000020c141c23283036393b3e3f3e3b3a373129241e160e0400000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbad1dcd1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000613202c3945515d67727f8c949ea8b2bac4cdd6d3c9bfbaaea39892857b6e685d666d79839097a1aab4bec7d2d8cfc5bcb3a9a1968f82756a5f53473a2e21140800000000000000000000000000000000050e161e252a3036393a3e3f3e3b3a36312b262017110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000050e17202830353c4347484d505253535353535353535353535353535353535353535353535353535353535353514e4948443d332d261d140a0000000000000000000000000000000000000000000000000000000004101c27333b4754606a74808d95a0aab3bdc6cfd7d3cfc6bfbab9b5b1afaeafb0b4b8b9bec5c7c6bec5c6c9cfd7dfd6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000070c10121315151413110d08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c0d0d0b0706040100000307090e121415171818191818161413110d070603000000000000000000000000000000000000000000000000000000020a11171f262a2d2e3437393939393939393939393939393939393939393939393939393835312d2b28231c140c060000000000000000000000000000040d161d24292f35393a3d3f403f3d3a38342f27221b140b0200000000000000030c151c23283036393b3e3f403f3e3a3935302a251e170e060000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4efe8e2dedbdadbdeded7ccc0b5aba2979083796d605b51473d322d46535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000713202d3946525d6876828f9ca9b3becad6ddd2c7baaea2988e81756d625a514b4745464850575f69717e8a949fabb9c2cde0ddd1c4b8ab9f95887b6e6255483b3024190d0100000000000a141e262e343b4146474b4c4b4847423c35302820160c02000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000004101d2935404b55606c78828f96a0a8b2bbc5ced7d7cbbfb4aaa19791837a6d666d78828f95a0a9b3bcc6d0d9cfc6bcb4aaa19791847a6d61584e43372b1f1206000000000000000000000000000000050f17202830363a4146474a4c4b4846423b373227221b140b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000020d172029323a41464e53555a5d5f5f60606060606060606060606060606060606060606060606060606060605f5e5b56544f443f382f261b11060000000000000000000000000000000000000000000000000000000713202c38444f59626f7c87929fa7b1bcc5cfd8d2cac1bcb4aeaca8a4a2a1a2a3a7abadb3bbc0c7d0d1d2d5dae1e9d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000040a0f12181c1f20212221201d1913100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415181a19171413110d080a0f13151a1e21212325252625242321201d1815120f0a04000000000000000000000000000000000000000000000000020b141b222731363a3b41444646464646464646464646464646464646464646464646464645423e3a38342e261e170f06000000000000000000000000040d161f282f353a4145474a4c4d4c4a47454039332d261d140b020000000000030c151e272e343b4146474a4c4d4c4a4746413a36302920180f0600000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4f9f3eeeae8e7e9e0d5ccc3bbafa49992857b6e675d51493f352b3946535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000005111d2935414c5664717e8b97a1adb9c6d0dbd6cabfb4aa9e938b7e716c605d55545253555a61696e7b85929fa6b0bbcbd4ded5c9beb3a99d908376695f53473a2e1e1308000000000006111c2630383f444c525457585855534e45413a32281e140a000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000010d18242f3944505b666d7a849196a1a9b3bcc5ced8d1c6bcb3a9a0958f82786d74808d949ea7b1bbc4ced8d0c7bdb4aaa29892857c6e685e52463c31261a0f020000000000000000000000000000030c172129323a41464c525457585755534d47433c332d261d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000008141e29323b444c52585f62666a6b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b68636059504941382d22170b0300000000000000000000000000000000000000000000000000000916222f3c4854606b76829099a3afb9c3ced7d2c8c0b8b0aaa39f9b97969595979a9ea1a9afb5bdc7cfd9e3e6ece3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000070f161b1c23282c2d2e2e2d2c29241f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151a1e21222526262421201d1913161b1f22252a2d2e3031323232312f2d2c2924211f1b15100b05000000000000000000000000000000000000000000000a141d262d333b4246484d5152535353535353535353535353535353535353535353535352514f4b46443f38302921170e0400000000000000000000010c162028313940454c5254575959595653514b443f382f261d140a00000000020b151e27303940444c5254575959595754524c46413a322921180d04000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffffaf7f8ece2d7cec3baafa59f93877d70695f554b40372d2c3946535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000010d1924303a4753606d7985929eaab4bfcad6dbd0c6bcafa59f92877e736d6763605d6062656c717b849197a2adb8c2ccdddcd2c6b9ada1978b7e7164574d42372b1e0c0200000000000b17232e38424a50565e61646564625f57524c443a30261c11060000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000007121d28333f4a545d686e7b849197a1aab3bcc6cfd8cfc5bbb1a79f948e80747f8b929da6b0b9c3cdd6d2c7beb5aba39892867c6f6a5f564c41332a2015090000000000000000000000000000000b151e29333b444c52565e61646564615f57544e443f382f261e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000020e1925303b444c565e616a6f7376787979797979797979797979797979797979797979797979797979797979797978756f6b605b53493f33271f14090000000000000000000000000000000000000000000000000005121e2a36424d5763707d89949fabb5c0cbd5d3c9c0b6aea69e98928f8b8988898a8d92979fa4abb5bdc7d1dce8f4e3d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000010a101921272c2e34383a3b3b3a39352f2c28231d150c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a20262b2e2f323333312d2c29241e21272c2f31363a3b3d3e3f3f3f3e3c3a39352f2e2b26201c160e09030000000000000000000000000000000000000006111b262f383f444d53555a5e5f60606060606060606060606060606060606060606060605f5e5c5753504a423b332920160c0200000000000000000008131e28323a434b51565d606466666563605c55504941382f261c11060000000a141d273039424a51565e616466666664615d56524c443b33291f160c010000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffffff7eee7dbd0c5bcb2a89e938c7f736b60574d43392f252c3946535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000008131f2c3845515c6773808d98a2aebac5cfdad8cec1bbafa39992888079736f6d686d6e71767e859196a0a9b3becad4e0d5c9beb3a99e9285796d6053473c31261a0e000000000003101c28343f4a545c60686e7172716e6a605d564c42382e23170b0000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000010b17222d38424c565e696e7b859298a2aab4bdc7d0d7cdc3b9b0a69d928e8187929fa4aeb8c1cbd5d8ccc0b6aca39992867d706a60574e443a3021180e03000000000000000000000000000007121d27303b454d565e61686d7172716e69625f585049413830261e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000005111e2a36414c565e686d757c8083858686868686868686868686868686868686868686868686868686868686868684817c746c655b50443b31261a0e020000000000000000000000000000000000000000000000000714212d3a46535f6976828f9ca6b0bdc7d1d7cdc1b7aea49d948f86827e7c7b7c7d81858d9399a3abb5c0cbd7dee9e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000010a131c222b32383940444648484745413a38342e271e160e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f1820262b31373a3b3f40403e3a39352f272a32383b3c4246484a4b4b4c4b4b494745413c3a37312c27211a140d050000000000000000000000000000000000000b17222d38414950575f61676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6864605c544d453b32281e13080000000000000000010d19242f3a444c555d60686d70727372706d67605b534a42382d22170b020006111b262f39434b545c60686e71727372716d68615e564d453b31281d12070000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffffaf0e5dcd6cabeb4aaa0968f81776c60594f453b31271d2c3946525f6c7985929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000004101c2934404b55616e7a86929fa9b3bec9d5dfd7cbc0b5aba39a938d85807c7a79797b7e838a9297a0a8b2bbc5cfdcd8cec6b9ada1978c7f72675c5145382a1f1509000000000006121f2b3844505c666d737a7e7f7e7b756d685d544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000006111c262f3a444d575f696f7c869298a3abb5bec7d2d5ccc2b8afa59d938e9299a3afb6c0cad3d2c8c0bbafa49a92877e706b60584e453c32291e0f060000000000000000000000000000000c18232e39434d575e686d757a7d7f7e7b766f6a605b534a423830261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000714202d3946525e686e7a81888d909292999393939393939393939393939393939393939393939393939393939992918e8980776c60574d42362a1e12050000000000000000000000000000000000000000000000000815222e3b4855616e7b87939facb9c2cfd9cfc5bbafa59d928d827b75716f6e6f70747980879299a3afbbc2cdd8e3e3d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000009131c252e343d43484a5153545554524c46454039302820160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019212a31373c4247484b4d4c4a4745413a33363d4448494d53545658585958575654514b4847433c38332a251f170f0800000000000000000000000000000000030f1b27333f49535b60696e7477797979797979797979797979797979797979797979797979797875716d665f574d443a3025190d000000000000000004111d2935414c565d676d747a7d7f807f7d79726c655b544a3f33281e1308060f17222d38414b555c666d747a7e7f807f7e7a746d685f574d43392f24180d0000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffcf2e8ded4cac2baaea2989184796d655b50473d33291f152c3946525f6c7985929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000c18232f3946525e6873808d97a1adb9c2cdd6dcd1c7bdb5aca49f97918c89878686888b90959ea1a9b2bac4cdd7dbd0c6bcb0a69e9185796d60554b403429180e030000000006121f2b37434e58606d7880868a8b8b88827a6d665c5044382b1f120600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000a141d28323b454d575f6a707d869299a3acb6c0ccd8d4cac0b7afa59e9b9fa3abb5c0c8d2d3c9c0b6aea49f93887e716c61594f463d332a20170d00000000000000000000000000000004101c2834404b555e696e7a81868a8b8a88827c736c655c544a42382e231712090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000006131f2b37434e58616e7a838e93999d9e9fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9b928c7f73695f53463a2d211407000000000000000000000000000000000000000000000005111e2a36414c5666737f8c9aa4afbbc8d4d6cabeb3a99e938d80756e696463626264676d737e87929fa6b0bbc7d3dee3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000050e1b252e3740464f54545c606161605d5653514b423a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19222b333c42474d53555859595754524c443f42464f5456575e6163646565656462605d5555534e48443d363129211a120a0100000000000000000000000000010c161f2b3744505b656c727b80848586868686868686868686868686868686868686868686868584827e786e695f564c4135291d1207000000000000000713202c3945525d686d7980868a8c8c8c89857f776c665b50443a3024190d0d172127333f49535c676d7880868a8c8c8c8a86817a6e695f554b4035291b110600000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fef4eae0d6ccc2b8aea49f92867c6e675d53493f352c21171f2c3946525f6c7985929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000007121d2a36414c56616d7a85929ea6b0bbc4cfd9d9cfc7beb6afa9a19e999699929995989d9fa7adb3bbc4ccd6dcd6cabfb4aa9f948b7e71675d5143392f23180600000000000815212e3a47535f6a74808d92999897948f83786d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000020b162029333c454e58606b707e87929aa4afbbbfc8d2d2c9c0b7afa9a7acafb5bdc7d1d3cac1b7aea49c928c7f726c625a50473d342b21180e0500000000000000000000000000000006131f2c3845515c676e7b848e92999897948f877f776d665c544a3f3428241b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000815212e3b47535f6a76828f959ea5a9abacafb5acacacacacacacacacacacacacacacacacacacacacacacacacb4aeacaba49f92877b6e6155483b2e22150800000000000000000000000000000000000000000000000714202d3946525e687783909dacb6c0ccd8d2c6b9ada2978e81776c615e57565556555c606c727f8b949fabb7c2cdd8e4d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000020d17202d37404952596063666d6e6e6d6865605c544c443a3024190c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202b343d454d53575f6265666664605d5650494d5359606368696e7071727272716f6d6766625f58544f46423b332c241c130a0200000000000000000000000007121d2c38444f59606c777f878d9192989393939393939393939393939393939393939393939892918f8a837b6e685e5246392e23180c00000000000006121f2b37434e58606d7a838d929899999897928c81786c60564c4135291d11151f29333b44505b656d79828d929999999999928e847b6e675d5145382d22170b00000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4f8ede2d8cec4bab0a69c928a7e706a5f554c41382d231a0f1f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000010d1925303b46525d68717e8b949fa9b2bdc7d0d9d9d0c7c0bbb3adaba6aba39fa3aba4a9abb1b9bec5cdd6dcd3cac1baaea2989082776c60554b4031271d120700000000000915222f3c4855626f7c88929fa3aba69e958b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000040d17212a333c464f59616c717e88939fa4aeb6c0c9d3d2c9c1bab6b4b9bbc0c7cfd4cac1b8afa59d928c80736d625a50473e352b22190f0600000000000000000000000000000004101c2834404a54606d798390969fa3aba69f99938c81786d665c504440362d23190f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000916222f3c4955626f7c88949ea8afb6b8b9bbc0b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbab9b7afa3998d8073675a4d4034271a0d00000000000000000000000000000000000000000000000814212e3b4754616e7a87939facb9c6d2d7cbbfb4aa9e92857a6d655b534d4948494b515a626d76828f9ca6b0bbc7d3dfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000000009141f29333f49525c636b6f75797b7b7a77726d665d564c4135291e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323d464e575f62696e727373716d68605b53575f616b6f74787b7d7e7e7f7e7e7c7a77736f6a636059534d453e362e251c140a0100000000000000000000010d18242f3c4854606b73808c92999d9fa2aa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9b9590847a6d61544b4034281c100400000000000815212e3a47535f6a75818e959fa3aaa6a9a19e938c7f73685d5246392d20131d27313b454f59606c77818e949fa3aba6aba39f969184796d6053493f33271b0f03000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4efe7dbd0c6bcb2a89f948d80736c61584e433a2f261b11121f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000008141e2935414c56626c76828f96a1abb5bdc7d0d8d9d2ccc4beb9b8b3b5afacafb5b1b6b8bcc2c9cfd7dcd7cac1b8aea49f92867c6e655b5043392f1f150b0100000000000d1a2734404d5a6773808d9aa4afb5b0a79c8f8276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000050f18212a343d474f59616c727f8b929ca4aeb7c1cad3d2cbc6c2c1c5c7cbd1d5cbc2b8b0a69e938d80746e635b51483e352c231910070000000000000000000000000000000006121f2c3844515c66737f8c95a0a8afb5b0aba49f938e81786d605c52483f352b21180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000c1926323f4c5965727f8c98a6b0bac1c5c5c7cbd1c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d1cbc7c5c0b5ab9d9083776a5d5044372a1d1100000000000000000000000000000000000000000000000a1724313d4a5764707d8a9aa4afbbc8d4d3c7baaea3988c7f72685e5349423c3b3c4045515b626f7c88949fabb7c4d0ddd6cabdb0a3978a7d7064574a3d3124170a000000000000000000020e1a25303b45515b636e737c8286878887847f796d685d52453e30261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444e5860696e767b7e807f7d7a726c655b61696e767c818587898b8b8c8b8a898783807c76706b615e57504840372e261c130a0000000000000000000004101d2935404b5563707d89929fa3abacaeb4acacacacacacacacacacacacacacacacacacacb4aeacaba7a0968d8074665c5145382c1f130600000000000915222f3c4855626f7c88939ea7aeb4b3b3ada59f92867a6d6154473a2e2118242f39434d57616b737f8c939ea6afb5b3b5afa8a0968c8073655b5044372b1f1205000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f1e6ddd6cabfb4aaa1968f82786c605a50463c31281d140a121f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000020d1924303a44505a616e7a849199a3abb5bec6ced7dcd8cfc9c6c4bfc0bbb9bbc0bec3c4c8cdd5dad9d1cbc1b8b0a69d928b7e716a5f53493f31271d0d03000000000000101c2936434f5c6976828f9ca9b5c0b8ab9e9285786b5f5245382c1f1200000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000060f19222b353e47505a626d73808c929da5afb8c1cad4d7d2cfced2d4d7d5ccc3b9b0a69e948e81776c605c52493f362d231a110700000000000000000000000000000000000713202d3a4653606d7985929ea7b1bbc0bdb5afa59e938e81746e635a50473d332a20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000d1a2733404d5a6673808d99a6b3c0ccd1d2d3d7dcd2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dcd7d3d1c4b8ab9e9185786b5e5245382b1f1200000000000000000000000000000000000000000000000d1a2633404d596673808c99acb6c0ccd8d2c5b9ac9f92867a6d61564c4138312f2f343f47535f6a7683909ca9b6c3d0dbd6cabdb0a3978a7d7064574a3d3124170a00000000000000000005111e2a36424d57626d7380898f92989495918b827a6d605a5042382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56606a6f7b82888b8c8c8a867f776c666b707b82898e91979697989898979595908d88837d766e69615a514940382e251c11080000000000000000000613202c3945515d6776828f9ca4afb5b8babfb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbab8b7b1a89f9286796d6053463a2d20130700000000000d192633404c5966737f8c99a5afbabfbfbeb9aea2988b7e7164584b3e3125222935404b555f69707d87939fa5afbbc0bfc0bbb2a89e9285786c605346392d201306000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8e8dfd4cbc2baaea29891847a6d665b50483e332a1f160b02121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000008131e28323e46525e686f7d879299a4acb4bcc4cbd1d7dad5d2d1d1cbc7c5c7cbd1d0d1d4d8d9d4cfc7c0bbafa69e948d80746c62584e41382d1f150b00000000000000101d2a3743505d6a7683909da9b6c3b9ac9f9387796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000071019232c353e48515b636e74808d939ea6b0b8c2cfd9e3dbdadfe0d9cec3bab1a79f948f82786d655b504a40372d241b1108000000000000000000000000000000000000091623303c4956636f7c8997a2adb9c3cbc7c0bbafa59d938c80736c62594f453c32281e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000c1925323f4c5865727f8b98a7b1bcc8d4dfe0e3e8dfdfdfdfdfebe3ddd7d4d2cecececececececececececececececec4b7ab9e9184786b5e5145382b1e1200000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8b5c2d2ddcec2b5a89b8f8275685d52443a2f2622232b37434e5865717e8b98a9b3becad6d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000714202d3a46525e69727f8c929c9fa3a7a09d948f82766c61544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686f7c858f9498999998928c81786c707d858f949b9ea1a9a4a5a5a5a4a7a09d99949089827b716c635b524a40372e241a0f0600000000000000000714202d3a4753606d7a86929facb9c0c5c6cad0c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d0cbc7c5c3baaea298897c6f6256493c2f23160900000000000f1c2936424f5c6975828f9ca8b5c1cbcfcabfb4aa9a8d8174675a4e4134272b343d45515d676e7b859299a4afb7c1cbd1cbc3b9ada197887b6e6155483b2e221508000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbeae1d6cdc2b9aea49f92867c6f685e544a3f362c21180d0400121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000000020c16202a36414c56606b717e87939aa2aab2bbc0c7ccd2d5dadddcd7d4d2d4d7dcdcdcd6d3cec8c2bdb5afa59e948f82786d605a50463c2f261b0d0300000000000000111d2a3744505d6a7783909daab6c3bbafa49a86796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000007111a232d363f49525b606c77818e949ea6b0bdc7d1dce8e7ece1d4c8bdb2a8a0959082796d665c53493f372e251b1209000000000000000000000000000000000000000b1724313e4a5764717d8a97a9b3becad6d2ccc1b7afa59c928b7e716b60574d443a30261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000915222f3c4855626f7c8895a0acb8c2cdd7e2ebf3ecececf5ebe2d9d2ccc7c6c2c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bcb2a89c8f8276695c4f4336291c100000000000000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3d0d8cbbfb2a5988c7f7265564c4132281d141a26313c4855626e7b8897a2adbac6d3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000814212e3b4754616e7b86929fa4acaeb1aca69e948a7e71665c5044382b1f160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8491979fa6a6aaa29f938c80737e8792989fa6abadb3b1b1b2b1b1b1acaaa69f9c948f857e726d635c52493f362c21180b02000000000000000815222f3b4855626e7b8899a3aebbc7d1d3d6dbd2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dcd6d3d2cabfb4aa978a7d7064574a3d3124170a0000000000101d2a3743505d6a7683909da9b6c3d0dad0c2b5a89b8f8275685c4f423529323d46515b606d79839097a2abb5c0c9d7dcd4c8bcb1a795887c6f6255483c2f221509000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe2d8cfc4bbb0a69d928b7e716a5f564c42382d241a0f060005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000000040e1925303b444f59616c717e889298a0a8afb5bbc0c7c9cfd0d2d3d6dbd7d4d2d1d0cbc7c3bdb9b1aba39f938e82796d665c51483e332a1d140a0000000000000000111d2a3744505d6a7783909daab6c3c0b69f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000008111b242d374044505b656d78828f949fabb5c0cbd7e3efebded2c5b8aca09690837a6d675d544a41382d251c13090000000000000000000000000000000000000000091623303c4956636f7c8997a2adb9c4cfd8d7c9c0b7aea49f92877d70695f564c42382e231710070000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000815212e3b47535f6a7783909da6b0bbc5d0d9e4eef9fff9eee3d9d0c7c0bbb9b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b2aaa1968b7f7265584b3f3225180c0000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4d1d6c9bcafa396897c706356493d3023160b13202d394653606c7985929fabb8c5d2d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000d192633404c5966737f8c98a3aeb8babcb8b0a69e9184786d6053463d32271b0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566673808c96a1a9b0b3b4aea59f92877e869299a2aab0b8b9bebebebfbebdbcb8b7b0aba69e97928a7f736e635b51483e332a1d140a00000000000000091623303c4956636f7c8996abb5bfcbd7dfe2e7dfd8d4d1d0cececececececececececececececed1c9beb3a9968a7d7063574a3d3024170a0000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c504336303a444e58626d74818e95a0a9b3bdc7d2dbd7cec5b8aca095877a6d6154473a2e211407000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbdcd1c6bdb2a99f948d80746c61584e443a2f261c1208000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000000000008141e29323d47505a626c717e8691969fa3abafb5b9bdc1c3c5c6cad0ccc7c6c4c2bfbab8b2aca79f99928c81796d675c544b40362d21180b020000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000009121b2527333f49535c666d79829099a3afbbc7d3e0edeaddd1c4b7aa9e91847a6d685d554b42392f261b130a0100000000000000000000000000000000000000000713202d3a4653606d7985929ea8b2bdc6d1dcd2c9bfbbafa39992857b6e685d544a3f342822190e0500000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000006121f2b37434e5864707d8a949ea9b3bec7d2dde8ecf5f4e8ddd2c7bdb5afaca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a0989184796d6053473a2d2014070000000000000000000000000000000000000000000006131f2c3946525f6c7985929facb8c5d2d4c8bbaea195887b6e6255483b2f221508121f2b3744505b657784919daab7c4d0d6cabdb0a3978a7d7064574a3d3124170a0000000000000000020f1c2935424f5c6875828f9baab4bfc7c8c2b8aca0968a7e7164594f43382c1f1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687784919ea9b2bbbfbfbaaea399928b9298a3abb3bcc2c6c9cfcbcbcbcec8c5c2bcb7b0a9a29f918c80736d635a50453b2f261b1106000000000000091623303c4956636f7c8996a2afbcd1dce7e6ddd4cdc8c4c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb9ada197887b6f6255483c2f2215090000000000111e2b3744515e6a7784919daab7c4d0dccfc3b6a99c908376695d50432e38424c56606a727f8b939da7b1bbc5d0d9d9cfc5bcb1a79d908477685e5246392d201307000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cfd6d1cbbfb4aba1979082786d605a50463c32281d140a00000004111e2b3744515e6a7784919daab7c4d0d6d0c1b4a79a8e8174675b4e4134281b0e00000000000000000000000000000000000000000000000000000000020d17202b343e48505a626c717c848d92999fa4abadb2b4b6b8babfbac0bbb9b7b5b4aeaca8a09e9590877f756d675d554b42392e241b0f06000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000006111b262f38424b545d676e7b86929facb9c5d2dfece2d6c9bcafa396897c70695e564c433a30271e150b0200000000000000000000000000000000000000000006131f2c3845515c6773808c96a0abb4bfcbd7dbd7cbc0b5aba29791847a6d665c50443e342b20170c02000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000030f1b26323c4955616c76828f97a2acb6c0ccd8dae4ecf0e3d7ccc0b5aba49f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a9691867d6f675d5145382c1f13060000000000000000000000000000000000000000000005121f2b3744505b657986939facb9c6d2d4c7baada194877a6e6154473b2e2114080f1b27333f4953697683909ca9b6c3cfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000030f1c2936424f5c6975828f9ca8b5c2d0d4c8bdb2a89d9083776b6054483b3025190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8796a0acbbc4cdcabfb4aba39f989fa3aab4bdc5ced2d5dad5d7d8d9d4d1cdc7c2bbb3ada39c928c7f726c61574d41382d22170b010000000000091623303c4956636f7c8996a2afbcc9d5e2dfd4cbc2bcb8b6b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4aea69e9185786c605346392d2013060000000000111e2b3744515e6a7784919daab7c4d0dccfc3b6a99c908376695d5043343f4a545e686f7c87929fa5afb9c3cdd7d9d0c7bdb3aaa0958b7f7265564c41362a1d1105000000000000000000000000000000000c1926323f4c5965727f8c98a7b1bdc6cac6bfbaaea39991857a6e665c51483e342a20160b02000000030f1c2936424f5c6975828f9caab4bfc7cbc7beb2a8998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000050e19222c363e48505a616a6f7a80878f93999ea1a8a8aaacaeb4aeb5afacaba8aaa39f9c96918b837c726d605d554b433930271d120900000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000000091317222d38414a545c666d79839099a3afbbc7d3e0edeaded1c4b7ab9e91847b6e685e554b433930261d140a00000000000000000000000000000000000000000004101c2834404b55606d79849199a3aebac0c9d3dcd1c7bdb3a9a0968f82786d605a50463d32291e140a000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000a15202d3944505a616e7b85929aa4afbbc0c8d2dae4ede0d4c7bbafa499938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8a847d6f6b60554b4035291d1004000000000000000000000000000000000000000000000613202d394653606c798698a3aebac7d3d3c6baada093877a6d6054473a2d2114070b17222d43505c6976838f9ca9b6c2cfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000010e1b2834414e5b6774818e9aa7b4c1cdd8cec3b8ab9f95897c6f63564d41362a1c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a8b2bdcdd6d1c6bdb4aeaca4acaeb4bcc6cfcecac8c8c9caced2d3d6d8d3cdc5bebaada49c918a7e70695f53493f33271d12070000000000091623303c4956636f7c8996a2afbcc9d5e4d8cdc2b9b1aba9a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaa39f948c7f72655b5044372b1f12050000000000111e2b3744515e6a7784919daab7c4d0dcd0c3b6a99d9083766a5d50433c44505c666d7a849199a3aeb7c1cbd5ddd2c7beb5aba2989083786d6053463a3025190d01000000000000000000000000000000000916232f3c4956626f7c8995a0abb4babfbab4aea39f92877c6f685e544a40362d22180e0400000000000c1926333f4c5966727f8c98a3aeb9bbbfbab5aca096897d706356493d3023160a00000000000000000000000000000000000000000000000000000000000007101b242d363e4850585f676d747c82878d9196989b9d9fa2aaa1a1a49f9e9c9a98928f8a847e786f6a625b514b433930271e150b0000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000008121b2527333f49535c666d78828f959fabb5c0cbd7e3efebded2c5b9aca19691837a6d675d554b42382f261b11060000000000000000000000000000000000000000000c18232e3945515d676f7c87929fa4aeb7c1cbd4d9cfc5bbb2a89f948d80746c62584e443b30261c11060000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000004101c28333e46525e69707d88939fa4aeb6c0c8d2dae4dfd2c6b9ac9f938781828282828282828282828282828281807d796f6b60594f43392f24180c000000000000000000000000000000000000000000000005121f2b3744505b657986929facb9c5d2d4c7bbaea194887b6e6155483b2e221506111d2935404b556a7783909daab6c3d0d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000b1825313e4b5864717e8b97a7b1bcc8d4d4c8bcb1a79b8e8175685e5246392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbced5d8cfc6bfbab9b1b8babfc6c6c5c1bdbcbbbcbdc1c5c6cad0d7d7d0cabfb6ada39f92857b6e655b5044392f24180c0000000000091623303c4956636f7c8996a2afbcc9d5e0d4c8bcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a98928d82786d6053493f33271b0f030000000000111e2b3744515e6a7784919daab7c4d0dcd0c3b6a99d9083766a5d504346505a606d78828f96a1abb4bfc9d2dbd8ccc0b6aca39992867c6f665c504438281e130800000000000000000000000000000000000815222e3b4754606a77839099a2aaaeb4aeaba39f918b7e716a60564d42392e241b10070000000000000814212e3b4754616e7a86929fa4acafb4aeaba39a9184786c605346392d2013060000000000000000000000000000000000000000000000000000000000000009121b242d363e464e555d606a6f757b8084888c8e9092989494949993918f8d8a86827d78716c6660585145403931271e150c030000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120501000000000000000000000000000000000000000000000000000000000000000008111a242d373f44505b656d78818e949fa7b1bdc7d1dce8e4ebe1d5c9bdb2a8a0959083796d675c544a41382d2217130a000000000000000000000000000000000000000007121d2935404b55606a717e8b929ca5afb9c2ccd6d7cdc3bab0a69d928b7e716a60564c42382e23170e0500000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000b17222a36424d57616b727f8c929ca4aeb6c0c8d2dbe0d4c7bbafa4998d8175757575757575757575757575757573706d6660594f473d31271d12070000000000000000000000000000000000000000000000030f1b27333f495f6c7885929fabb8c5d2d5c8bbafa295887c6f6255493c2e23170b13202c3945515d677784919eaab7c4d1d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000815212e3b4854616e7b87959fabb8c6d0d8cdc3b9ac9f92867b6e61544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e1d8d1cbc7c5bec5c7c5bebab8b4b0afaeafb1b4b8babfc6ced3dbd6c8bfbaada2979082776c60554b4035291c110600000000091623303c4956636f7c8996a2afbcc9d5ddd1c4b8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8b8680786d665c5041382d22170b000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b6aa9d9083776a5d50434e58616c73808d949fa8b2bdc6d1dbd2c9c0bbafa49a92877d706a5f544a3f3428160c02000000000000000000000000000000000006131f2b37434e58636f7d8792989fa2aaa29f99928b7f736c62584e443b30271c1209000000000000000714202d3946525e68727f8c929c9fa3aaa39f9992887d70665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000009121b242c343c434c51585f62696e74787c7f8183858687878786868482807d7a75706c66605b544e463f352f271f150c03000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000020814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f13110d0802000000000000000000000000000000000000000000000000000000000007101a232c363f49515b606c77818e939ea6b0b9c2cfd9e0dfd7dedfdacec4bab1a79f958f82796d665c53493f3327251b120900000000000000000000000000000000000000000c18242f39434e58626c73808d939ea7b1bac4ced7d5ccc2b8aea49f92867c6f685e544a3f342820170d02000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000050e1a25303b454f59636d73808d929da4aeb6c0c9d2dbd7ccc0b5ab9d928c7f726c6868686868686868686868686764605c544f473d342b1f150b010000000000000000000000000000000000000000000000000b17222d44515e6a7784919daab7c4d0d7cabeb1a4978b7e7164544a3f34281c1117202d3a4753606d7a86939facb9c6d2d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000714212d3a46535e697683909daab4bfcad6d3c7bbaea3998c8073665c5144382c1f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5eae2dcd7d3d2cbc9c0bcb3aeaba7a4a2a1a2a4a8acaeb4bcc1c9d1dad6cabeb3a99f948b7e71675d5145382e23170b00000000091623303c4956636f7c8996a2afbcc9d5dcd0c3b6a99d908382828282828282828282828282828281807e7a736d665c544a3f2f261b1106000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b6aa9d9083776a5d504c555f6a717e8a929da6b0bac4cfd8d3c9c0b7aea49f93887e716b61584e42382e231705000000000000000000000000000000000000030f1b27323d4854606b717e868e92989698928e867f736d635a50463d32291e150b000000000000000005111e2a36414c56636d7380898f92999698928f877f726b61544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000009121a222a313a41454e53575f61676a6f72757779797a7b7a7a79787573706d6763605b54504a423c3429241d150d0300000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000001070d1419212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c21201d19130c07010000000000000000000000000000000000000000000000000000060f19222c353e48515b636d73808d939da5afb8c2cbd4d7d4d2cbd2d3d6d6ccc3b9b1a79f948f81786d655b504440372d241b12080000000000000000000000000000000000000007121d27313c46505a606c77818e959fa8b2bcc5cfd9d4cac0baaea39891847a6e665c50443e33291f1409000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000009141f29333e47515b636e73808d929da4aeb7c0c9d3ddd2c7bdaea49f93887e716b60585b5b5b5b5b5b5b5b5b5a5753514b423d342b22190d0300000000000000000000000000000000000000000000000000061c2936434f5c6976828f9ca9b5c2cfdacdc0b4a79a8d8174665c5044382e231c212834404b5463707c8999a4afbbc7d4d6cabdb0a3978a7d7064574a3d3124170a00000000000000000005121e2a36424d5765727f8b98a2aebac7d3d7cbbfb5ab9e9185796d6053463c32271b0f02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2ede7e3dad0c7beb7afaaa29f9b97959596979b9fa2aaafb7bfc8d1dbd0c5bcb0a69e9185796d60544a3f34281c1003000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7575757575757575757575757575757574716d68605c544b42382e1d140a00000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b7aa9d9084776a5d49535d676e7c86929fa4aeb8c2ccd6d4cac1b7afa59c928c7f726c62594f463c30261c1106000000000000000000000000000000000000000a16202c38434f59616c717b818588898885817b726d635b51483e342b20170c030000000000000000020e1925303b44515b646e737d838688898886827c726d62594f42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000810181f282f353c43474d5355585f6265686a666d6d6e6e6d6c65696763605d5553504a443f382f2b2218120b030000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000040c13181e252a2e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f524538322e2d2a251e18120b03000000000000000000000000000000000000000000000000040d18212b343e47505a626d737f8c929da5afb7c1cad4d1cbc7c5bec5c6cacfd5cbc2b9b0a69e938e81776c605b52493f362d241a1007000000000000000000000000000000000000010b151f2b343e44505b656d79839096a1aab4bdc7d1dcd7cbbfb4aaa1968f82786d60594f453b30251a0f060000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000020d17212c353f49525c646e73808d929da5afb7c1cad3d9d0c0bbafa49a92867d6f6a5f564d4f4f4f4f4f4f4e4d4a46454039302b2219100700000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cfdad1c4b8ab9e9184796d60544a3f342d2a2c333b45515c6674808d9aabb5c0ccd7d6cabdb0a3978a7d7064574a3d3124170a000000000000000000020e1a25313b4754606d7a86929facb8c2cdd8d1c6b9ada1978a7e7164584e43372b1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f1e7ddd1c8beb5aca59d98928e8a8988898a8e92989ea5adb5bfc8d2d7cec2b9ada1978c7f72665c5044382b1f1207000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e716868686868686868686868686868686764615e56514b423930261c0b0200000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b7aa9d9084776a5d505b656d79849198a2aeb6c0cad4d5cbc2b8afa59d938d80736d625a50473e342a1e150a0000000000000000000000000000000000000000040f1b27323d47505a61696e75797b7c7b79756e69625b514940362d22190e050000000000000000000008141e29323f49525c646b70767a7c7c7b79756f6a625b51473e2f261c1106000000000000000000000000000000000000000000000000000000000000000000000000060d161e242931373c4246484e5355595b545c6061616160605b535a5753514b46443f38332d261d19100701000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000040d161d24293036393b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245413e3a39363029241d150d0300000000000000000000000000000000000000000000010c161f2a333d464f59616c727f8b919ca4aeb7c0c9d3cfc7c0bbb9b1b8babec5cdd4cbc2b8afa59e938d80746e635b51483f362c22190b02000000000000000000000000000000000000030d192227333f49535d676e7a849198a2abb5c0cbd7dcd1c6bcb2a89f948c80736b61574d42362a21180e0300000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000050f1a232d37404a525c646e74808d939da5afb8c2cbd5d8ccc0b6aca39892857c6e695e554c424242424242403d3a38342e271e1910070000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a9b3bec9d5d2c5b9ada1968a7d70665c50443f3836383d454e57606d7985929eabb8c5d2ddd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000914202c3945525d6874818e9ba6b0bbc7d3d5c9beb3a99d9083766a6054473a3025190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2eadfd5cbbfb6aca39b938e85817d7c7b7c7e81868e939ca3adb6c0ccd6d5c9beb3a99e9184786d6053463a2e23180c000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e71645b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5854524c45403930271e150a0000000000000000111e2b3744515e6a7784919daab7c4d0ddd0c4b7aa9d9184776a5e59606c77818f96a0aab4bfc8d2d5ccc3b9b0a69e938e81746e635b51483e352c22180c030000000000000000000000000000000000000000000a16212b353e4850575f62666d6f6f6f6d67625f57514940372e241b10070000000000000000000000020d17202e37404a52596063676d6f6f6f6d6762605851493f352c1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000040c131920262b31373a3c4347484c4e4b5153545454535350494d4a4745403938332d28221c140b070000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000030c161f282f353b4146474b54616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f524f4e4b4746413a352f271f150c0300000000000000000000000000000000000000000007131d28313c464e58616b717e88939fa3adb6c0c9d2d1c7bdb5afaca4abadb3bbc5d0d4cac1b8afa59d928c80736d625b51483e342a1d140a00000000000000000000000000000000000000071017222d38414b555e686f7c869299a3afbbc0cad3d8cfc4bab0a69f93887d70695e52463f332a1f140900000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000008111c252e38404a525c606c77808e939ea6b0b9c3cdd6d2c7beb4aaa29791847b6e675d544b41382d353534312d2c28231d150c07000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8897a1adb9c6d2d5c9bdb2a99d9083786d605a504a464145464f575f6a737f8c97a1adb9c6d2e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000004111d2935414c56626f7c88949fabb7c4ced9cfc4b7ab9f95887c6f62564c41362a1c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2e4d9cec3b9ada49b918b817a74716f6e6f71757a818c919ca4aebac4cedacfc4b9ada1968a7d7064544b4034281c10040000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574f4f4f4f4f4f4f4f4f4f4f4f4e4d4b4746413a342e271e150c030000000000000000111e2b3744515e6a7784919daab7c4d0ddd0c4b7aa9d9184776a57606b727f8c939ea8b2bcc5d0d6cdc3bab1a79f948f81786d605c52493f362d231a100600000000000000000000000000000000000000000000040f19232c363e454d53545c60626362605d55534d453f372e251c120900000000000000000000000000050e1c252e3840474f54555d60626362605c55544e463f372d231a0b0200000000000000000000000000000000000000000000000000000000000000000000000000000001080d151b1f262b2d31373a3c3f424045464748474746443f403d3a39352f2b28221c17110a02000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000b151e28313a41454c5254585a616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5c5c5a5854524c45403931271e150b0000000000000000000000000000000000000000010d18242f3a434e58606a707d87929aa4afb5bfc8d2d7cbc0b5aba39f989fa2a9b3bdc7d2d3cac1b7aea49c928c7f726d625a50463c2f261c1106000000000000000000000000000000000001070c131b262f39434c565f6a707d87929fa4aeb8c2cbd5d6ccc2bbafa49a92857b6e615b51453c31261a0d04000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000a131c262e384044505b656c78818e949ea7b1bbc4ced7d0c6bcb3a9a1969083796d665c53493f3327282724201f1c18120b0300000000000000000000000000000000000000000000000000000000000613202d394653606c7985929eabb8c4cfdacfc4b8aca0958c7f726c605b54524c51535960696e7c86929fa9b3bec9d5e2d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000010d1924303a47545f6a7683909ca8b2bdc9d5d3c7bcb1a79b8e8174685e5246382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2e0d4c8bcb1a79c928b7f746d686462626364686d757f8c929da8b2bdc9d5d5c9bdb2a99b8e8275665c5145382c1f13060000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b424242424242424242424242413e3a39363028231d150c03000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7aa9e9184776b5e69707d87929fa5afbac3ced7cdc4bbb2a8a0958f82796d665c504a40372d241b110800000000000000000000000000000000000000000000000007101a242c333c42474a515355565553514b47423c332d251c130a0000000000000000000000000000000a131c262e353d44484c515455565553514b47433c342d251b1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f141a1e21262b2e2f322e34383a3a3b3b3a3937332d302d2c29241f1c17110b060000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000007121d27303a434b51565e616567686e7a8794a1adbac7d4d1c5b8ab9e9285786b6969686765615e56514b433930271c12070000000000000000000000000000000000000004111d2935414b555f6a6f7c869299a3acb6c0c8d1d5cbc3bbafa399928b9297a2abb5c0ccd7d2c9c0b6aea49b918b7f726c61584e42382d22170b00000000000000000000000000000000030b12181e24292c313b444e58616b727f8b929da6b0b9c3cdd6d8ccc0b6aca1978f82766d62574d42372b1f160c010000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000010a141c2627333f49535b666d78828f95a0a9b2bcc6d0d8cfc5bbb2a8a0958f82786d655b50443f352c22181313100c070000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6674818e9ba8b2bdc9d5d4c8bcb1a79f92877e726c66615e565c60636b707b849198a2aebbc5cfdae6d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000008131e2b37434e5864707d8a96a0acb9c5d0d8cdc2b8ac9f92867a6d61544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2ded1c5b8aca0958c7f736d605d56565556565e616d74808d96a1acb9c4cfdacfc4b8ab9f9285796d6053463a2d2013070000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e353535353535353535353534312e2d2a251e18120b0300000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7aa9e9184776b676e7b859299a3afb7c1ccd5cec5bbb2a9a0969083796d675c544a3f382e251b1209000000000000000000000000000000000000000000000000000008121a212a3137394044464849484745403937312a211b120a01000000000000000000000000000000010a141c232b33383a4145474949484745403937322b221b130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12151b1f21222623282c2d2e2e2e2d2d2b272224201f1d18120f0b0600000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000c18232e39424b555d60686e717475767a8794a1adbac7d4d1c5b8ab9e9285787676767574716d68605d554b42392e23180c000000000000000000000000000000000000000613202c3945515d676e7c859298a2abb5bec7d2d7cdc3b9afa59f92877e859299a4afbbc1cbd5d2c8bfb6ada39f93877e716a5f544a3f33281c0f030000000000000000000000000000070d151d24292f35393a4145474f59626d74808d949ea7b1bbc5ced8d2c7beb3a99f948b7f72695f53463e31281d12070000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000020a1417222d38414a545c666d79839097a1aab4bdc7d2d7cdc4bab1a79f948e81776c605b51473e342a20160c04000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a5463707d8a96a1adb9c5cfd9cdc3bbafa39992877f78716d686b676d70757d849196a1aab4bfcdd7e1e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000020f1b26323c4653606c7884919ea9b3becad6d3c7baaea3988c7f72665c5044382b1f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e1d4c8bdb2a89d9083786d605b524c4948494c525b606d7984919ea9b3bec9d5d3c6baaea298897c706356493d3023160a0000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3128282828282828282828272521201e19130c07000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7aa9e9184776b6d79839097a1abb5c0c9d3cfc6bcb3a9a19791847a6d675d554b42382e261c130900000000000000000000000000000000000000000000000000000000080f1820262b2e34383a3c3c3c3a38352f2b2620180f09000000000000000000000000000000000000020a111a21272c2f35393a3c3c3c3a38342f2b272019100900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050a0f12151519181c1f2021212120201f1b17171413100c0703000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000004101c2834404b545d676d747a7e818282828f9ca9b6c2cfdcd2c5b9ac9f92878282828282817e7a746d675d544a4034281c1004000000000000000000000000000000000005121e2a36424d57606d79849197a2aab4bdc6d0d9d0c5bbb1a79e938c7f727d87939fa5afb9c3cdd7d1c8bfbbafa49992877c6f665b5044382b1f1206000000000000000000000000000810191f272f353a4145474c515456585b606d78828f95a0a9b3bcc6d0d9d0c5bbb0a69f92867b6e615a5043392f24180d0200000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000006111b262f38424a545d676e7b859198a2abb5c0ccd7d6ccc3b9b0a69e938d80736d62594f463c32281e150a000000000000000000000000000000000000000000000000000000000000000000000b17222d3a4653606d7884919ea9b3becad6d7cbc0b5aba399928b837e7a797778797d81889196a1a8b2bcc6d0dfe9e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000a151f2b3844505b66727f8b97a2adbac7d1d6cbbfb4aa9e9184786d6053463c31261b0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5ded2c5b9aca096897d70665c5045413c3b3c4146515d67717e8a97a1adb9c6d2d6cabeb4aa998c7f7266594c3f332619080000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e31241c1c1c1c1c1c1c1c1b1a181413110d080200000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7ab9e9184786c74818e959fa9b3bdc7d1d0c7bdb4aaa29791857b6e685e554c433930261c140a010000000000000000000000000000000000000000000000000000000000060e151a1c23282c2d2f302f2d2c29241d1a150e06000000000000000000000000000000000000000000080f161c1e24292c2d2f302f2d2c29231d1b150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809070c1013131415141413120f0b06070604000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000006131f2c3845515c666d7981868b8d8f8f8f949fabb7c4d0ddd3c7bbaea399928f8f8f8f8f8d8b8680796d665c5144382c1f130800000000000000000000000000000000000714202d3a46525e6974818d96a0a9b3bcc6cfd8d2c7bdb3a9a0958e81756d727f8c939ea7b1bbc5d0d9d7ccc0b5aba3999083786c605346392d20130600000000000000000000000009121a222a313940454c5154555d6063646566666d79839097a1aab4bfcbd6d7cdc2baaea2988f82766c61554b4035291e130800000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000a141d262f39424b555e696f7c869299a4afbbc0cad3d5cbc2b8afa59c928b7f726b61584e443a30261c110600000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66737f8c97a1adb9c3cfd8d1c7bdb4aba39f95908b87858485868a8e939aa1a8b2bac4ced8e2f1e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000030f1c28333f4a54606d7a85929fabb5c0cbd7d0c6b9ada1968a7d7064584e43372b1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5ddd1c4b7aa9e9184786c60544a3f352f2f3036404b55606d7985919eabb8c4d1dbd0c1b5a89b8e8275685b4f422f24190d0100091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180f0f0f0f0f0f0f0f0e0b07070501000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7ab9e918478717e8b939da7b1bbc5cfd2c7beb5aba29892857c6f695e564c433a30271e140a020000000000000000000000000000000000000000000000000000000000000003090e12181c1f20222322201f1d18120e09030000000000000000000000000000000000000000000000050b1013191d2021222322201f1c18120f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070808070605030000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000713202d3a4653606d79828d92999a9b9c9c9fa6b0bbc7d3dfd7cbbfb5aba39f9c9c9c9c9b9a99928d82786d6053463a2f24190d01000000000000000000000000000000000815212e3b4854616e7b86929fa8b2bbc5ced8d7ccc0b5aba2979083796d606d75818e95a0a9b3bdc7d2ddd2c7bdb4aba0958a7d7064574a3d3124170a000000000000000000000009121b242c343c434b51555d6065676d6f7172727272717b859298a3aebac7d3dfd6cabfb4aa9f948a7e71675d51453a3025190d02000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000020b141d27303a434d575f6a707e87939fa4aeb8c2cbd5d4cac1b7aea49f92877d706a5f564c42382e23170e05000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7a85929ea7b1bdc6d1d9cfc6bdb4aea79f9d9898929192939a9b9fa4acb2bac4ccd6e0e8eee3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000b17222d3845515d6773808d99a3afbbc7d4d5c9bdb2a89c8f82766a5f53473a2f24190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d9ccbfb3a6998c8073655b5042382e2422252f3944505c6673808d9aa6b3c0d2ddd0c3b7aa9d9084776a554c4135291d110400091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b02020202020202010000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b8ab9e9185787c86929fa5afb9c3cdd8ccc0b6aca39992867d6f6a5f574d443a31281e150c020000000000000000000000000000000000000000000000000000000000000000000000070c1012131516151413100c070100000000000000000000000000000000000000000000000000000001080d1113141616151413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000003101c28343f4a5465727f8b949fa3aba8a9a9abb0b8c2cdd8e3dcd1c6bdb5aeaca9a9a9a9a8aba39f948b7f7265554c4135291d1104000000000000000000000000000000000c1925323f4c5865727f8b99a3afbac3cdd7d5cbc3bbafa49992857b6e675d606d79839097a2abb5c0ccd7d9d0c6bdb1a79a8e8174675b4e4134281b0e0100000000000000000008111b242d363e464e555d60676d72767a7c7e7f7f7f7f7e7b7c85929facb8c5d2dfdbd0c6bcb0a69e9184796d60564c41362a1e1308000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000020b151e28313b454e58616c727f8c929da6b0b9c3cdd6d3c9c0bbafa39992867c6f685e544a3f342820170d0200000000000000000000000000000000000000000000000000000000000000000b17232e3845515d67727f8c95a0abb4bfcbd7d8cfc6bfbab1abaaaaa29f9e9e9fa4acacafb6bec4ccd2d4d7dde3ebd6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000006111c2935414b55616e7b87929facb9c3ced9cfc4b7ab9f94887c6f62564c4135291b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d6cbbfb4aa96897d706353493f30261c151d28343f4a5464707d8a97acb6c0ccd8d2c5b8ab9f928578675d5145392c20130600091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b8ab9e91857a849198a3aeb7c0cbd4d4c8bbafa49a92877d706b60584e443f38302a211a1209000000000000000000000000000000000000000000000000000000000000000000000000000406070909090706040000000000000000000000000000000000000000000000000000000000000000010406070909090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0d0b08070502000000000000000000000000000000000000030607090c0d0c0a070604000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000006121f2c3844505c667783909da6afb5b5b5b6b7bbc2cad4dee9e3d8cfc6bfbbb9b5b5b5b5b5b4aea69d908477675d5145392c201306000000000000000000000000000000010d1a2734404d5a6773808d9aabb5c0ccd5d7cdc3b9afa59f93877d70695f555d676e7b859299a4afbbc1cbd5d8cfc2b5a89c8f8275695c4f4236291c0f030000000000000000060f1a232d363e4850585f676d737a7f8386898b8c8c8c8b8a888586929facb8c5d2dfe2d7cec2b9ada1968c8073685e52463a3025190d000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000030c161f29333c46505a626d74808d949fa7b1bbc4ced8d7cbc0b5aba29891847a6d665c50443e32291f1409000000000000000000000000000000000000000000000000000000000000000006111c2935414b55606d78839099a3aebac1cad3d8d1cbc3bcb8b6b4aeacaaabacafb6b9bbc0c7c3c2c6c7ccd2d9e2d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000d18242f3a46535e6975828e9ba7b1bcc8d4d3c7bbb0a69a8d8174685d5245382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d3c7baaea398877a6d6054473a2d21150c17232e3b4854616e7b879aa4afbbc8d4d3c6baaea298877a6d6054473a2d21140700091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c5b8ab9e9285838f96a1aab4bfc9d2dfd2c6b9ac9f93877e716b64605c54504a423c332c241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e111414181919181414110e09020000000000000000000000000000060b10121316191a19161312100c0700000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000713202d3a4653606d7986939facb9c0c2c2c2c4c7cdd4dce6f0eae1d8d1cbc7c5c2c2c2c2c2bfb8aca095877a6d6054473a2d211407000000000000000000000000000000000d1a2633404d596673808c99aab4bfcbd0cec5bbb1a79e938c7f726b60574d555f69707d87939fa5afb9c3ccd1ccc1b4a89b8e8175685b4e4235281b0f0200000000000000030c18212c353e48505a616a6f797f858b90929997989999989797929298a2aebac6d3e0e9e0d5c9bdb2a89f92857a6d61564c41362a1c11060000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c8bbafa49a877a6d6154473a2e211407000000000000000000000000000000040d17212a343e47515b606d78828f95a0a9b3bcc6d0d9d1c7bdb4aaa1968f82786d60594f443b3025190d0300000000000000000000000000000000000000000000000000000000000000000d18242f3a44505c666f7c86929fa5afb8c1c9d5dad7cdc8c4c3bfbab8b7b8b9bbc0c6c8c2bbb7b5b9bbc0c7d0d9d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000007131d2a36424d57636f7c8995a0acb8c5d1d8cdc2b8ac9f92867a6d6053493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c5b8ac9f928579685d5245392c20130613202d394653606c7986939facb9c6d2d6cabeb4aa94877a6e6154473b2e21140800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd2c6b9ada297928f949fa8b2bcc6d1dbddd0c3b7aa9d90837d7976716d66605c544d453e362d241b120800000000000000000000000000000000000000000000000000000000000000000000030608090c0d0c0b08070502000000000000000000000000000000000000020507080b0c0d0c0b08070502000000000000000000000000000000000000020608080b0c0d0b080705020000000000000000000000000000000000000002080d14191e20212526262521201e1a140d080200000000000000000000020a11171c1f202325262623201f1c18120b030000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000714212e3a4754616d7a8799a4afbbc7d1cfcfd0d3d8dee6eef8f3eae3dcd7d3d2cfcfcfcfd1c8bcb1a794887b6e6155483b2e221508000000000000000000000000000000000b1824313e4b5764717e8a98a3aebac1c4c3bcb3a9a0958e81756d63594f454d57616b737f8c939ea7b1b9c1c4c2bab0a6998c807366594d4033261a0d00000000000000000a151e2a333e47505a626c717c848c92989c9fa3aba5a5a5a5a9a19e9fa2aab4bfcad6e2efe5dacfc4baaea2988d8073685e5246382d22170b0000000000000000000000000000000000000000000000000000000005111e2b3844515e6b7784919eaab7c4cfd0c6b9ac9f9386796d6053463a2d201307000000000000000000000000000407090a0f19222c353f44505c666d79839097a1aab4bdc7d2d9cfc5bcb2a89f948d80736b61564d42362a1f150b010000000000000000000000000000000000000000000000000000000000000007131d28343f4a54606a727f8b939da6afb7c0c9cfd6d8d4d1d0cac6c5c4c5c6c8cccac2b8b0aba9acafb5bdc7d2d8ccc0b6ac978a7d7064574a3d3124170a0000000000000000000000000000010e1a25313b4854606b7784919daab7c4d0ddd3c6baaea2988c7f72655b5044372b1f150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b8ab9e9185786b564c4135291d1106121f2b3844505b667885929fabb8c5d2dbd0bbaea194887b6e6155483b2e22150800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd6cabeb3a9a29e9c9fa6b0bac4cfd8e2ded1c5b8aca095908986827e78726d665f5750483e362d241a0f0500000000000000000000000000000000000000000000000000000000000000040a0f121515191a19181514120e0903000000000000000000000000000003090e12141518191a19171414110e0802000000000000000000000000000003090e12141518191a181514120e090300000000000000000000000000000000040c13191f252a2d2e313333312e2d2a251f19130c050000000000000000080c141c23282b2d30323332302d2c28231c150c0800000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000714212d3a4754606d7a8798a2aebac7cbd1cbcccfd4dae2ebf4f2e9e2dbd6d3d2cacacad1cbc7baaea399877b6e6154483b2e211508000000000000000000000000000000000714212e3a4754616d7a86929fa7b0b6b7b6b2aaa2979083796d605b51473d454f59606c77818f95a0a7b0b6b7b7b1a89e94887c6f6255493c2f2216090000000000000006111c26303c454f59626c717e8691969fa2aaacafb5b2b2b2b2b3adabacaeb4bcc6d0dbe7f3ebe0d6cabeb4aa9f92867a6d61544a3f33281c0f03000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8b2bcc3c4beb4aa9e918477665c5144382c1f12060000000000000000000000050b101316161a1c1a2328343f4a545d676e7b859198a2abb5c0ccd7d7cec4bab0a69d928a7d70695e52463e31271d120700000000000000000000000000000000000000000000000000000000000000010c17232e38424e58626d74818e949ea5aeb9bec5cbd0d4d9dbd6d3d2d1d1d2d1cbc1b8b0a69f9c9fa4abb5c0ccd1c8bbafa49a897c6f6356493c30231609000000000000000000000000000003101c28343f4a54616e7a86929facb9c5d2dfd6cabfb4aa9e9184786c6053463c31261a0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7ab9e9184786b544a4034281c1004101d2935404b556b7885929eabb8c5d1d4c8bbaea195887b6e6255483b2f22150800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dddbcfc5bbb3adaba9abb0b8c2ccd6e1eae0d4c8bcb1a7a09d98928f8a847f786e69615a50483e362c21170d0300000000000000000000000000000000000000000000000000000000030a0f151b1f21222526262522211e1a140f0a040000000000000000000003090e141a1e2121242626262421201e19140e090200000000000000000000040a0f151a1e21222526262522211e1a140e080200000000000000000000000000050e161e252930363a3b3e40403e3b3a36302a251e160e0500000000000109111a1e262e34383a3c3f403f3d3a38342e271e1a120a010000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000613202c3945525d687885929facb5bbc0bdbebfc3c9d0d9e2ece9e0d7d0cac6c5bdbdbdbdc0bbb6ac9f9286796d6053463a2d201307000000000000000000000000000000000713202d3946525e6874808d959ea6aaaaa9a8a09892857b6e675d51493f353e44505b656d798390959ea6a9aaaaa79f968f82756a6054473b2e221508000000000000000c17232e38424d57616b717e889298a0a8aeb4b9bbc0bfbfbfbebeb9b8b8babfc6ced8e2edf7f2e7dbd0c5baaea2988c7f72665b5044382b1f1307000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b96a1aab2b7b7b3aca2988d807367544a4034281c100400000000000000000002080d161c20222327292928232e38424c555e696f7c869299a4afbbc2cdd7d6ccc2b8aea49e92857b6e615a5043392f24180c010000000000000000000000000000000000000000000000000000000000000006111c26303c46515b606d78828e939da4adb3babfc6c8cececfd0cfcfd0cac6bfbbb0a69f948f9399a4afbbc1c4c0b9ac9f93867a6d6154473a2e211407000000000000000000000000000006121f2b3844505c66737f8c99a3aebbc7d3e0dbd0c6b9aca0968a7d7063574d42372b1d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c5b8ab9f928578665c5144382c1f1206131f2c3945515d677986929facb9c5d2d7cbc0b5ab94877b6e6154483b2e21150800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde1d7cdc5beb9b8b6b7bbc2cad4ddddddddd9cec3b9b1acaaa39f9c96918b837b716c615a50483e33291f1409000000000000000000000000000000000000000000000000000000060e151b20262b2e2f323333312e2d2a261f1b150e070000000000000000060e151a1f252a2d2e31333333312e2d2a251f19140d050000000000000000070f161b1f262b2d2e313333322e2d2a261f19140d050000000000000000000000050e17202830353b4246474b4c4c4b4746423b36302820170e050000000009131b232c30383f4446494c4d4c4946444039302c241c130a0000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000004111d2935414c566875828f9aa4abafb5b0b1b3b7bec7d0dae5e2d7cec5bebab8b1b1b1b0b5afaca49c8f8276675c5145382c1f13060000000000000000000000000000000005111d2a36414c56606d79838f949b9d9d9c9b9691867d6f695f554b403727333f49535d676e7a838f949a9d9e9d9b9590847a6d61584e43372b1f130600000000000003101c28343f4a545f69707d87929aa3aab2babec5c7cbd1cccccfc9c6c5c5c6cad0d6dbe2e6ecf3ece2d6cabfb4aa9e9184786c6053463a2f24180d010000000000000000000000000000000000000000000000000000000713202d3a4653606d79849198a1a9aaaaa9a29a92867b6e6154473b2e23180c000000000000000000050d131921272c2f3034363634302f303a434d57606a707e87939fa6b0bbc5cfdbd4cac0b9ada1978f82756c61554b4035291d120700000000000000000000000000000000000000000000000000000000000000000a151e2b343f44505c666d79818d929ea1a9aeb4b8bcc0c1c2c3c3c2c1bebab5aea69e948f8287939fa7b0b6b7b5afa49d908376685e5246392d20130700000000000000000000000000000713202d3a4653606d7884919eabb5bfcbd7e3e2d5c9bdb2a89c8f8276695f53473a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c6b9ac9f9386796d6053463a2d20130914202d3a4753606d7a8698a3aebac7d3d3c7bbafa399877a6d6154473a2e21140700091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde9dfd7cfcac6c5c2c3c7ccd0d0d0d0d0d0d1d2cbc3bcb8b4aeaca8a19e9590867e716c615a50453b30251a0e050000000000000000000000000000000000000000000000000007101820262b32373b3c3f403f3e3b3a36312b2620191008000000000000070f181f262b31363a3b3e3f403f3e3b3936302a251f170e0600000000000009101921272c31373a3b3e3f403e3b3a36312a251f170e05000000000000000000020b172029323a41464d52545859595854524d46413a322920170b02000007111b252d353e424a5053565859595653514a423e362e251c110800000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000010d19242f3c4956636f7c8893999fa3aba4a5a7acb5bec9d4dfdbd0c5bcb4aeaba4a4a4a4aba39f9a93897d7063554b4034281c100400000000000000000000000000000000010d1925303a45515d676d7a82898e9091908e8a847c6f6b60574d43392f222d38414b555e686e7a82898e9091908e8a837b6e685e52463c32271b0f030000000000010c161f2c3844505c666e7b859299a3acb4bcc3cad0d3d7d1cbc7c5c3c0bfc0c2c5c6cad0d6dbe1e9f2e7dbd0c6b9aca0968a7d7063554b4035291d110400000000000000000000000000000000000000000000000000000006131f2c3845515c666f7c8691969c9d9d9c9792887e71695e52463a2d1c12070000000000000000050e171e252a32383b3d404243413d3c38313b454e58616c73808c949fa9b3becad6dcd5c9beb3a99e948a7e71675d5145392f24180d0100000000000000000000000000000000000000000000000000000000000000030c192228343f4a545c676d78808a92979fa3aaacb1b3b5b5b6b6b5b4b4aeaba39f938f8279808e959ea6aaaaaba39f928a7d7063564c41362a1d11050000000000000000000000000006121e2b37424e5764707d8a96a1adbdc6d1dce7e5d9cec4b9ac9f93877b6e61554b4035291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d4c8bbafa49a887c6f6255493c31261a1119232f3c4956626f7c8995aab4bfcbd7d2c5b9ac9f9286796c605346392d20130600091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddeae0d8d0cac6c5c3c3c3c3c3c3c3c3c3c4c5c6c8ccc8c6bfbab8b2aca79f9892877e716c61574d42362a22170c000000000000000000000000000000000000000000000000071019222a31373c4347484c4d4c4b4846423b37322a221a120800000000071019212a31373b4246484b4c4d4c4a4746413b36302920170f060000000009121b222b32383c4247484b4c4d4b4846423b36302920170f0500000000000000000a141d29333b444c52565e6164666664615e57524c443b32291d140a00050f19232d373f474f545c606365666563605c5450483f372e231a0b02000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000815222f3b4854606b727f878f92999697989ba3acb7c3cfdbd6cabeb4aaa29f979797979699928f887f726b605443392e23180c00000000000000000000000000000000000008131e2935404b555d686d757d81838483817d796f6a60594f453b31281d262f3a434c565e686d757d81838484827e776e695e564c41342b20150a00000000000007131d2a36414c56606d78839098a2abb5bec6cfd6d9d2ccc7c0bbb9b6b3b2b3b5b8babfc5cad0d7e0e7ede2d5c9bdb2a89b8f8275675d5145392c20130600000000000000000000000000000000000000000000000000000004101c2834404b54606a6f7d848b8f90918f8c857e716c61564d42362a1e0b0000000000000000040d17202930363d4448494d4f504e4a48443d353c46505a606d78828f97a2adbac1ced7dacfc5bbb0a69e9184796d60554b4035291d10040000000000000000000000000000000000000000000000000000000000000000071017232e38424b555c666c737d858d92989da0a7a6a8a9a9a9a9a7aaa29f99928c81796d79838f949b9d9d9c99928c80746b6155443a3025190d01000000000000000000000000000814212e3a47535f6a76828f9ca8b2bdcfd8e3edebe0d4c8bbafa49a8d8074675d5145392c20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d8ccc0b6ac988b7e7265574d42362a221d222a36424d5765727f8b98a5b2bed1dcd1c4b7ab9e918478665b5044382b1f120600091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde2d8cec6bfbab8b7b7b7b7b7b7b7b7b7b7b8b9bbc0c7c8cbc7c4bdb9b1aaa29993877e71695e52463e33281c110400000000000000000000000000000000000000000000040e19222b343c43474e53555859595855534d47433c342c241a0f060000040d19222b333c42474d5354575959595754524d46423b322921170c02000007101b242d343d43484d53555859595855534d46413b322921170b0200000000000006111b262f3b454d565e61696e717373716e69615e564d443b2f261b11060b16212b353f49515961666d6f727372706d66615a51493f352c1d140a000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000007131f2c38434f59626d727c8286898a8a8b919ba7b3bfccd8d3c6baaea298928a8a8a8a8a8986827c726d63594f4430271d1207000000000000000000000000000000000000020c18242f39434c565d606b707477777674716d6760584f473d332a1f161d28313b444c565e616b707476777775716c655e564d443a3022190e040000000000010d18242f3946525e68727f8c95a0aab3bdc7d0d8d8d0c7c0bbb5afaca9a7a6a6a8acaeb4babec5ced5dee7e5d9cec4b9ac9f92867a6d6053473a2d22170b000000000000000000000000000000000000000000000000000000000c18232e39424e58606b6f797e828484827f7a716c615a50443b3025190e00000000000000010c161f29323a41464f54565a5c5c5b56544f4540393e44505c666e7b85929fa5afbcc5d0dbd7cdc1b9ada1978c7f72675d5145392c20150a00000000000000000000000000000000000000000000000000000000000000000006111c263039434b545b606b707a80868c909597999b9c9d9c9c9b9998928e867f786d676d7a82898e9091908d8780776c60594f4432281e13080000000000000000000000000004101d2935404b55626e7b88949fabbac4cfe1eaf4f0e4d8ccc0b6ac9f92857a6d6053473d33271c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5ddd2c2b5a99c8f8276695f53463d342c292c343d46535f6976828f9ca9b6c2cfdccfc2b6a99c8f837669544a3f33281c0f0300091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dddbd0c6bcb4aeacaaaaaaaaaaaaaaaaaaaaabacafb6b8bcc3cccec9c2bcb4aba49992857b6e615a5045392d20150a000000000000000000000000000000000000000000020c16202b343d464e53585f6265666664615f57544e463e362c21180d03010c161f2b343c454d53575e616466666664615e56524d443b33291e140a00040f19222d363f474f54575f6164666665615f57524d443b33291d140a0000000000000b17222d38414d575e686d747b7e7f7f7e7b756d685e564d41382d22170b101c27333d47515b626c70787c7f807f7d79716c635b51473d2f261b11060000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000030f1b27323d47515b626b6f757a7c7d7d7f8b98a5b1becbd8d2c5b8ab9f92867e7e7e7d7d7c7a756f6b635b51473d331e150b000000000000000000000000000000000000000007121d27313a434c52596063686a6a696864605c554e463d352b21180d161f29323b444c52596163676a6b6a6864605b534d443b32291e100700000000000004111d2935404b55616d7a86929fa7b1bcc5cfd9d8cec6beb6afaba39f9c9a999a9b9fa2aaaeb3bcc4ccd5dfe8e0d3c7baaea3998a7d706453493f33271b0f0300000000000000000000000000000000000000000000000000000007121d27303d464f5960676d7275777776726d68615a50483e32291f14090000000000000007131d28313a444c5259606367696967636059514b43393f4a545e69717e8a939ea9b3becad6dfd5c9beb2a99e9285796d6053473c32271b0f030000000000000000000000000000000000000000000000000000000000000000000a151e273139424a505961686d737a7f84878a8d8e8f90908f8e8c8985817b736c665d686d757d81838483807b736c655b50473e3320160c02000000000000000000000000000613202c3945515d6774808d9aa6b0bbccd6e0f3fcf4e8ddd2c7baaea2988b7e7265594f44382c1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5dfd2c6b9ac9f93877b6e61594f463e3935393e464f59616e7b87939facb9c6d2d7ccc0b5ab9a8d8073675a4d402d22170b0000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd6cabfb4aaa29f9d9d9d9d9d9d9d9d9d9d9e9fa4acacb1b9c0c8d5cec6bdb5aba2988f82766c6155493c32271b0f03000000000000000000000000000000000000000008131e28323d464e585f626a6f727372716e69625f5850483e33291f140907131d28313c464e575f61696e71727372716e68615e564d453b30261c11060a16202b343f4850596063696e717273716e69615e564d453b2f261c110600000000030f1b27333f49535e696e7a81878b8c8c8b87817a6e695e53493f33271b0f13202c38444f59626d727d84898b8c8c89847e726d63594f41382d22170b0000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000a16212b343f4951596063676d6f70717a8794a1adbac7d4d1c5b8ab9e928578717171706f6d6763605951493f352b210c030000000000000000000000000000000000000000010b151f28313a41454f54565b5d5e5d5b5753514b433d342b23190f060d172029323a41464f55565b5d5e5d5b57535049413b322920170d000000000000000613202c3945515d6774808d98a2aeb9c3ced7dbd0c6bcb4aca49f9992908d8c8d8f92989fa2aab2bac4cdd6e1e3d7cbbfb4ab9b8e8174655b5044372b1f1205000000000000000000000000000000000000000000000000000000010b151f2b343d474f555d6065696a6a6965615d5650483e362c20170c03000000000000010d18242f3a434c565e616b7073757674706b605d554b4238424d57616c75818e97a2adbac4ced9dacfc4b9ada1978c7f7265584e43372b1f1306000000000000000000000000000000000000000000000000000000000000000000030c151f272f383f444f565d60686d72777b7e808282838382817f7d79746e69605b565d606b7074777776736e69605b53493f352c210e0500000000000000000000000000000714202d3a4753606d7985929fabb8c2ccdee8f2f9f9eee4d6cabeb3aa9d9184776b6054483b31251a0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e0d4c8bbafa49a8e81756b60585047454145475058616c75818e9aa4afbbc8d4d4c7bbafa4998a7e7164574b3e312418060000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd3c6baaea298929090909090909090909192939a9da0a7aeb6c0c9d3d0c7bdb3aa9f948a7e7164584e43372b1f130600000000000000000000000000000000000000010d1924303a444e58606a6f767c7f807f7e7b766f6a615a50453b31261a0e0d18242f3a434e5860696e767b7e7f807f7d7b756e695f574d42382e23170b0f1b27323d46505a626b6f777b7e7f807e7b756e685e574d42382d22170b0000000005121f2b3744505b656e7b848e939999999a938e847b6e655b5044372b1f1216222f3b4854606b727f88919698999896918a7f726b6153493f33271b0f0300000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000040f19222d373f474f54555d6062636e7a8794a1adbac7d4d1c5b8ab9e9285786b64646362605d55544f463f372d231a0f00000000000000000000000000000000000000000000030d161f282f353d44484a4e5051504e4a46454039302b2219110700050e17202830353d44484a4e5051514f4a46443f382f2920170e05000000000000000714202d3a4753606d7a85929faab4bfcbd5e0d6cabfb4aaa29a938e8783807f8082858c9298a0a8b2bbc5cfdae6dcd1c4b8ab9e9185786c605346392d20130600000000000000000000000000000000000000000000000000000007121d273139424b51575f6166696b6b6966625f58514c433b32291e150b00000000000004111d2935414b555e686d767d808283817d756d675d544a3f3b45505a616e7b85929fa8b2bdc9d5e0d5c9beb3a99d9184776a6054473b2e22150700000000000000000000000000000000000000000000000000000000000000000000030d151d262d333e434c52565e6165696e717375767676767473706d67615f57504c52596063686a6a6966625f57504941382d231a10000000000000000000000000000007131f2c38434f5965727e8b97a2adbac6d3dfecedecedf0e6dbd0c5b8aca095897d7063574d42362a1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e4d8ccc0b6ac9e93897d706a615a53514c52545a626a707d8a939eacb6c0ccd8d2c6b9ac9f93867a6d6154473a2e2114070000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd2c5b8ac9f92868384848484848484848485868b91959da4aeb7c1ced7d0c5bcb0a69c9083766a6054473b2e2215070000000000000000000000000000000000000004111d2935414c56606a6f7c83888b8c8c8b88827c716c61574d42362a1d13111d2935404b55606a6f7b82878a8c8c8c8a86817b6e695f544a3f34281c10131f2b37434e58626c717d83888b8c8c8b88827a6e695e544a3f33281c0f030000000613202d394653606c778390969fa4abaca49f969082776c605346392d20131e2b37424d5763707d87939aa0a8a6a8a19e93887d70655b5044372b1f120500000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000007101b252d343d43484b515356616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f57575653514b48433d342d251c11080000000000000000000000000000000000000000000000040d161e242933383c3d41444443413e3a38342e271e191007000000050e161e252933383c3d41434444423e3937332d261d170e050000000000000003101c28343f4a5464717e8b98a2aebcc6d0ddddd3c7baaea2989288817b7674737375797f859196a0a9b3bec9d5dedfd2c6b9ada197887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000c18242f39434b545c60696e7376777776736f6a605d554d443b30271d120700000000000613202c3945515d676d7a82898d8f8f8e8981796d665b50443a3e46525e68727f8c96a0acb9c5cfdbdacfc5b8aca095887c6f6255493c2f24180c0000000000000000000000000000000000000000000000000000000000000000000000030b141c2228313a41454c5254575e61646668696a6969686663605d55534d4441454f55565b5d5e5d5a55534d443f382f261b110800000000000000000000000000000a15222f3b4854606b7783909da9b3becad6e2e4e0dfe0e4e8e1d4c8bcb1a79b8f8275695e5346392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e8ddd2c7beafa59f92857c706c64605d565d60646c717d86929fa5afbec7d2d7cbbfb4aa9d908376685e5246392d2013070000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8277777777777777777777787a7e838d929da5afbcc5d0d7cec2b7ab9f94887c6f6255493c2f23180c000000000000000000000000000000000000000713202c3945525d686f7c85909598999997948f867e71695f53463a2f241813202c3945515d676f7c858f939a99999999928e847b6e665c5044382b1f1515222e3b4754606a717e88909597999998938f847b6e665b5044382b1f12060000000b1724313e4a5764717d8a959fa8afb5b6afa89f948a7d7164574a3e2e2318212e3a47535f6977839099a4acb2b3b2ada49a9083786c605346392d20130600000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000009131b222b32383940454754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f524a494745403938322b221c130a00000000000000000000000000000000000000000000000000040c131921272c2f303537373635312d2c28231d150c070000000000040c131921272c2f303437383735312d2b27221b140b05000000000000000006121f2c3844505c6675828f9caab3beced7dfd2c6baafa59f92867e746e69676667676d727c849197a1adb9c2cdd8e1d5c9beb3a9978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000004101d2935404b555d666d747b8083848483807c756d675e564d42392e23180c0000000005111e2a36414c56606d79838f949a9c9c9a938f82786c60564c4136414d56606d7984919ea9b3becad6e1d4c8bcb1a79a8d807367554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000020a11171f282f353a4146474d5254575a5b5c5d5d5c5b595653514b46423b353d44484a4e5051504d4847423c332d261d140a000000000000000000000000000006111c2a36414c56636f7c8995a0acbcc5d0dbddd8d4d2d4d8dde4d9cec3b9ac9f93877b6e61554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2e4d9d0c1baada29792857d75716d676b686d71767e869298a2aeb7c1d0d9d3c7baaea3988c7f7265564c41362a1e11050000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f83766a6a6a6a6a6a6a6a6a686d7178808d939eaab4becad6d3c7bcb0a69a8d807367554b4034291c10040000000000000000000000000000000000000714212d3a4754606d7a8491979fa7a6a5a69f9992867b6e61554b4135291d1d2935404b55606d798491979fa4aca6aba39f969083786d6053463c32271b1e2a36424d57626f7c87929aa0a7a5a6a59e969083786c605346392d2013060000020f1c2935424f5c6875828f9ba7b1bbc0c0bbb0a69c8f827569544a4034281c222f3b4855626e7b88959fabb5bebfbdb6aca095887c6f6255493c2f22160900000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000109101921272c2f353b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f52453c3a39352f2c272119100a01000000000000000000000000000000000000000000000000000001080d161c202223282a2b2a2824201f1c18120b030000000000000002080d161c202323282a2b2a2824201f1b17110a020000000000000000000713202d3a4653606d7985929facb8c5d0dfd9cec2b6aa9e938a7e716c615e5659555c606a6e7b85929ea6b0bbc7d3dfdacfbfb3a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000006131f2c3945515d676d7880868c8f9191908d8781796e685e544b4034281b11060000000714202d3946525e6874818d959fa6a8a9a59e948b7f72685d5245393b45515c66717e8b97a2adbac6d3dfd9cec3b6aa9d908377675d5145392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000060d161e24293036393b4246484b4d4f4f50504f4e4c494745403936312933383c3d41444443403b3a373127221b140b0200000000000000000000000000000b17232e3946525e6875818e9ba7b1bcced7d9d2ccc8c6c8ccd2d9e0d4c7bbafa4998d8073675d5145382c1f160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2ebe2d6cabeb3a9a197928a827d7a7877787a7e828b9298a2aab4bfc9d3d7cbc0b5ab9f92867a6d6154473a3025190d010000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695d5d5d5d5d5d5d565e61666d75818e98a2aebac6d3d8cdc2b6a99d908376675c5145382c1f1306000000000000000000000000000000000005121e2a36424d576673808d96a1a9b1b3b2b0aba2988e8174675d5145392c201f2c3945515d6773808c96a1a9afb6b3b5afa89f958b7e7164584e43372b1f212d3a46535f6976828f99a3acb1b2b3afa89f948a7e7164574b3e2e23170c000003101c28343f4a546b7885919eabb8c2ccccc2b8ab9e928578665c5144382c1f25313e4b5864717e8b97a7b1bdc7d0c7beb1a7988b7e7265584b3f3225180c00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000070f161b1d242e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382d2c29241d1b160f07000000000000000000000000000000000000000000000000000000000000050b101416171b1d1e1d1b171313100c070000000000000000000000050b101416171b1d1e1e1c1713120f0b0600000000000000000000000916222f3c4955626f7c8898a2aebac6d3e0d4c8bcb1a79b8e81756c615a524d4c4b51575f69707d8a949fabb7c4d0dddbcec2b5a89b8f8275685c4f4235291c06000000000000000000000000000000000000000000000000000714202c38444f59606d79828d92999c9e9e9c9a938e837a6e665c5145382d22170b0000000814212e3b4754616e7a86929fa7b0b5b6afa69f92857a6d6054473d34404b54606d7985929fabb8c5d2dedfd2c5b9ac9f92867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d30363a3b3e40424343434341403d3a38352f2a2621272c2f3035373736332f2e2b262017110a02000000000000000000000000000003101c28343f4a54616e7a86929facb9c3ced9d0c7c0bbb9bbc0c7d0d9d7ccc0b5ab9e9285796d6053473d32271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f4e6dbcfc5bbb3a9a19e948f8a86858485878b8f949fa2aab3bcc6d0dad3c7bbafa3998e8174685e524639291e1308000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5151515151514c52545c616d7a85929fabb8c5d2ded2c5b9ac9f9286796d6053473a2d20140700000000000000000000000000000000000714202d3a46525e697884919ea8b2bcbfbfbdb4aa9f92867a6d6054473a2d21202d3a4753606d7985929fa8b2bbc0bfc0bbb1a79d9184776a6054473b2e22222e3b4855616e7b88949fabb5bebfbfbab0a69c8f827669544a3f34281c10030006121f2c3844505c667986929facb9c5d2d2c6b9ac9f9386796d6053463a2d2026323f4c5965727f8c98a5b2bfd0d9d0bfb3a6998c807366594d4033261a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000040a0f14212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1d18120f0a040000000000000000000000000000000000000000000000000000000000000000000407090a0e1111100e0b0706040000000000000000000000000000000407090a0e1011110f0b060503000000000000000000000000000b1824313e4b5764717e8a97aab4bfcad6ded1c5b8aca095887b6e615a5046424040454e57616b7683909ca9b6c3cfdcddd0c3b6aa9d9083776a5d50442d22170b000000000000000000000000000000000000000000000000000916232f3c4855616b75818e949fa3abaaaaaca49f959083796d6053493f33271b0f0300000b1825313e4b5864717e8b99a3aeb9c2c1baada2978c7f7266594f43383945515c6774818e9aa7b4c1cddae0d3c7bbafa399897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000001080d13191d20252a2d2e313335363736363533302d2c29241d1a161c202323282a2b2a2722211e1a150b060000000000000000000000000000000006121f2b3844505c66737f8c99a3aebac7d5d2c7beb6afacafb6bec7cfd9d2c7b9ada2978b7e7165594f43382c1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f7ece1d7cdc5bbb3ada69e9c979792919297979c9fa6aeb3bcc5ced8d5c9beb3a99f92877b6e61564c41362a170d02000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c50444444444441464a525d6874818d9aa7b4c0cddad3c7baaea399887c6f6255493c2f22160900000000000000000000000000000000000815212e3b4854616e7b8796a1adbac4cecfc6baaea3988a7d7164574a3e2e232935404b5564717e8a97a2adbac4ccd1cbc2b8aca095887c6f6255493c312626323f4c5965727f8c98a6b0bdc7d0ccc2b8ab9f928578665c5044382c1f1206000713202d3a4653606d798699a3afbbc7d3d4c8bbafa49a867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbacedad1c5b8ab9e9285786b5f5245382c1f100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfd0dbddd0c3b7aa9d908477695f53483e3630343c454f5965727e8b98a5b1becbd8ddd1c4b7aa9e9184776b5e493f33271b0f03000000000000000000000000000000000000000000000004111d2935414b5563707d8a939ea6afb5b7b7b6afa79f958c7f72655b5044372b1f120500010d1a2734404d5a6773808d9aabb4bfcccabeb3a99e9184776b6054483b34404b5564717d8a97a4b0bdcad7e3d7cbc0b5ab978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141a1e2021242728292a2a29282623201f1d18120e0b101416171b1d1e1d1a1514120e090300000000000000000000000000000000000713202d3a4653606d7884919eabb4bfcbd7ccc0b6aca49fa4acb5bdc7d1d6cabeb3a99d9083776b6054483b3025190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f4ede7dfd6cdc5beb9b0aaa8a9a29f9e9fa2a9a9abb0babec5ced7d4cac2b9ada1978d8174695f53443a3025190500000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5043373737303638414c5664717d8a97a4b0bdcad7d7cbbfb4ab96897c706356493d3023160a00000000000000000000000000000000000916222f3c4955626f7c8895a9b2bdccd6d6cbbfb4aa9a8d817467544a3f34282c3945515d6775828f9ca9b3beccd8dcd4c8bcb1a79a8d807367584e43372b2a36424d576975828f9ca8b5c2cfd9d3c6baada29786796d6053463a2d201307000713202d3a4653606d798693a0b5c0cbd7d8ccc0b6a093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a8b2bdc9d5d1c5b8ab9e9285786b5f5245382c1f12000000000000000000000000000000000000000000000000000000000000020608080b0d0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cdd9dacec1b4a79b8e817468574d42362a2529333e4955626f7c8895a2afbbc8d5ded2c5b8ab9f928578655b5044372b1f120500000000000000000000000000000000000000000000000613202c3945515d6776828f9ca5afbbc0c4c4c0bbb1a79e9184786c605346392d20130600010e1b2734414e5a6774818d9aa7b4c0d1d0c5b9aca096897c6f63564d42363c4955626f7c8895a2afbbc8d5e8dcd1beb1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090e121415181a1c1c1d1d1c1b19161413100c0701000407090a0e1111100d0808060200000000000000000000000000000000000006121e2b37424d5764707d8a96a1adbdc6d1d4c8bbafa49a939aa3abb5c0cbd7cfc5b8aca095897c6f63564d42362a1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2eae3dcd7d3d2cfc9c1bbb7b5b3adabaaabadb3b6b7bbc2cad0d7d4cbc2b8aea49e91857a6d60574d4232281e130800000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5043362a2a252a303c4956626f7c8995a2afbcc8d5dcd1bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000815222f3b4855626e7b8895abb5c0cbd7dcd0c3b6aa9d908377665c5044382b2d3a4753606d7a86929facb8c5d0dfe5d9cec3b7aa9e9184776a5f53473a2e2d3a46535e697885929eabb8c5d1ded2c5b9ac9f928679665c5044382c1f1206000713202d3a4653606d798693a0acb9d1dcddd2b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798696a1acb9c7d1d0c4b7aa9d9184776a5e5144372b1e1104000000000000000000000000000000000000000000000000000000030a0f121415181919181514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cddad9cdc0b3a69a8d8073675a4d40312419212e3b4754616e7a8794a1adbac7d4dfd2c5b9ac9f9286796c605346392d20130600000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c1cbd1d2ccc2b9ada197887c6f6255493c2f22160900010e1a2734414d5a6774808d9aa7b3c0cdd4c8bdb2a89a8e8174695e52463e3c4955626f7c8895a2afbbc8d5e2d8ccbfb2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f101010100e0d0a07060400000000000000000204040300000000000000000000000000000000000000000000000814212e3a47535f6976828f9ca8b2bdcfd7cbbfb4ab9f93869299a3afbbc7d3d4c8bcb1a79b8e8175695e5246392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5eae1d8d1cbc7c5c6c8ccc7c3c2bebab8b7b8babec2c4c7cdd6dbd6cbc2b9b0a69d928a7e70685d52453b3120160c0200000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5043362b2b262b2f3c4955626f7c8895a2afbbc8d5d8cbbeb1a5988b7e7265584b3f3225180c00000000000000000000000000000000000814212e3b4754616e7a8799a3afbbc7d3dfd2c5b8ac9f9286796d6053463a2d343f4a5464707d8a98a3aebac7d3e0eaded2c5b9aca096887b6f6255483c312e3b4854616e7b8797a2adb9c6d2ded1c4b7ab9e9184786b544a3f34281c1003000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677884919eabb5c0c5c5bdb3a99c8f8275695c4f4236291c0f0300000000000000000000000000000000000000000000000000040a0f151a1f21222526262521211e1a140e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cddadacdc0b4a79a8d817467554b40352920242f3b4855626e7b8895a1aebbc8d4e0d3c7baaea39886796d6053463a2d20130700000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3aebbc7d7dcddd5c9beb2a9978a7e7164574b3e3124180b00000d1a2633404d596673808c99a6b3bfd0d9cec3b9ac9f92867b6e615a5047464a5463707d8996a3b0bcc9d6e3d8cbbeb2a5988b7f7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626e7b87939facb9c4cfd3c7baaea3998d8087929facb9c4ced9cdc3b9ac9f92867b6e61544b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e3d8cfc6bfbbb9b9bbc0c7d0cfcac6c5c4c5c6cad0d0d3d8d7d0cac1b8b0a79f948d80746c61564c41332a1f0e050000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c504338383831373a414c5663707d8a96a3b0bdc9d6d7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000613202d394653606c7986929facb9c5d2dfd3c7baaea398887b6e6155483b2e3844505c6674818e9baab4bfcbd6e3ede1d4c8bdb2a8998c7f7366574d4236303d4a5763707d8a96a9b3becad6dccfc3b6a99c908376695d50432e23170c00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000004101c2834404b556774818d99a3afb5b8b8b4aba1978b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000070e151b20262b2e2f323333312e2d2a251f1a140d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dccfc2b5a99c8f8276675d51453b322d2f36414c5663707d8a96a3b0bdc9d6dfd2c5b9ac9f928679665c5044382b1f120600000000000000000000000000000000000000000000000a1623303d495663707c8996abb5bfcbd7e3e6dacfbeb2a5988b7f7265584c3f3225190c00000b1825313e4b5864717e8b97aab4bfcad6d3c7baaea3988e81746c615a5353535c66737f8c99a6b2bfccd9e4d7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000407090a0f1213131313131313131313131313131313131313131312110f0e0b080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d6774808d9aa4afbbc8d6d2c5b9ac9f92867a828f9ba8b2bdc9d5d3c7bbafa3998c8073665c5145382c1f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5dcd1c6bdb5aeacacafb6bec5cdd3d3d2d1d2d3d6dbd9d5d1cbc5bfbaafa69f958f82786d605a50443a2f21180e000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c50454545454542474b535d6873808d9aa6b3c0cdd9d7cabdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000006121f2b3844505b667884919eabb7c4d1ded6cbbfb4aa968a7d7063574a3d303a4653606d7985929eabb8c5d0dce7f1e5d9cec3b6aa9d908377695e53463a323f4c5965727f8c98a5b2bfcfdbdacec1b4a79b8e8174685b4e4135281b0600000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000c18232e3b4855626e7b87929fa3abacabaaa2999185796d6053473a2d20140700000000000000000000000000000000000000000000000008101820262b31373a3b3e40403e3b3a36312a261f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2becfdadfd2c5b8ac9f92867a6d60574d443c393a4046525e6874808d9aa7b4c0cddaded1c5b8ab9e9285786b5f4a3f34281c100300000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3afbbc7d4dddfd6cabeb3a9978b7e7164584b3e3125180b00000916232f3c4956626f7c8998a2aebac6d3d7cbbfb4aa9d938a7e716c63606061656d7884919eaab7c4d1dde2d5c9beb3a996897d7063564a3d3023170a00000000000000000000040b101316161b1e20202020202020202020202020202020202020201f1f1e1c1a181514120f0a0603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929facb6c0ccd5c9bdb2a89b8e82757d8996a0acb9c6d1d7cbc0b5ab9e9185796d6053463d32271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d7cbbfb5aba39f9fa4acb3bbc1c7cbd1cfcfd0cfcecec9c7c0bbb4aea59e949083796d665c51483e32281e0f06000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5252525252524e53555d656d7a85929eabb8c5d1ded6cabeb3a996897c6f6356493c302316090000000000000000000000000000000000030f1c28333f4a546976828f9ca9b6c2cfdcdcd0bfb2a5988c7f7265594c3f323c4956636f7c8997a1adb9c6d2e2edf6eaded1c4b8aca095877b6e6154483b30414e5b6774818e9aa7b4c1cddad9ccbfb2a6998c7f7366594c403326190d00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000714212e3a47535f69727f8c92999e9f9f9d9892877d70675d5145392c1f1306000000000000000000000000000000000000000000000008111a222a32373c4347484b4c4c4b4846423b36312921181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a9b2bec9d5e0d3c7baaea3988c7f72695e564e4746474b515b616d7a85929fabb8c5d2deddd0c3b6aa9d9083776a5d50442e23170b0000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c1ccd2d2cdc4baada297897c6f6356493c3023160900000713202d3a4653606d7985929facb8c5cfdad1c6bcafa59f92867e75706d6c6d7077808d96a0acb9c5d2dedfd2c6b9ada197887b6e6155483b2e221508000000000000000001080d161b202223282b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272522211f1a15130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f5965717e8b97a2adbec7d2d2c5b9ada1968a7d707884919eabb4bfcbd7d1c7b9ada1978a7e7164584e43372b1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d3c7bbaea39992939aa2a9afb9babfc1c2c3c3c2c2c0bdb9b5afaaa29f938e827a6d675d544a40362c20160c00000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695e5e5e5e5e5e5e575f62676d77818e97a1adb9c6d2dfd2c6b9ada297877b6e6154483b2e2115080000000000000000000000000000000000000b17222d414d5a6774808d9aa7b3c0cddadacdc1b4a79a8e8174675b4e4137434e586773808d9aa9b3bec9d5e2f4f9ece0d4c8bcb1a7988b7f7265564c4136414b556976838f9ca9b6c2cfdcd7ccc0b5ab978a7d7164574a3e3124170b00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57636d727f878d919292908d867e706b60554b4035291d100400000000000000000000000000000000000000000000060f1a232c343c43474e53555859595854534d46423b332a22180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8897a1adb9c6d2dfd6cbbfb4aa9f92857b6e685f58545353555d606d75818e98a2aebac6d3dfdbcec1b5a89b8e8275685b4f4235281c060000000000000000000000000000000000000000000000000713202c3945525d687683909ca5afbbc0c5c5c2bbb2a89f9285786d6053463a2d201307000006121f2c3844505c6675828f9ca9b3bec9d5d8cfc1baaea3989288817c7a797a7d828d929da8b2bdc8d4e1ded1c5b8ab9e928578695f53463a2d21140700000000000000040c131921272c2f30353839393939393939393939393939393939393939393938373634312f2e2b26221f1b16100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000a15222f3b4854606b7783909da9b3bed0d8ccc0b6ac9e9184786c727f8c99a3aebac7d3d5c9beb3a99d9083766a6054473a3025190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c5b9ac9f92878692979ea5acaeb4b4b5b6b6b6b5b3b2acaba39f98928b81796d685d554b42392e241a0d0400000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f83766b6b6b6b6b6b6b6b6b6a6e7279818e939ea9b3bec9d5ded1c5b8ab9e9285796c605346392d201306000000000000000000000000000000000000061825323e4b5865717e8b98a4b1becedadcd0c3b6a99d9083766a564c413a47535f6a7784919eaab7c4cfdae6f2fcf0e4d9cdc2b6a99c8f8376685e52463945515d677885919eabb8c4d1ded4c7bbafa499887b6f6255483c2f22150900000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000020e1a26313c45515b636d727c8184858584807a706c61594f43392f24180c00000000000000000000000000000000000000000000030e18212c353e464e53585f6265666664615e57534d453c342a20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697885919eabb8c4cfdadcd0c6baada29790837a6f6a6361606062676d747f8c939eaab4becad6e2d6cabeb3a9998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000004111d2935414c5663707d8a939ea6afb5b8b8b7b0a9a0968c8073665c5044382b1f1206000003101c28343f4a5464717e8a97a1adb9c4cfdad6cbbfb4aaa39a938e898686878a90949da4aebac3ced9e2d6cabeb3a99b8e827568574d42362a1e1205000000000000040d161e242932383b3d4245464646464646464646464646464646464646464646454442413e3b3a37312e2b27201c170e0903000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c56636f7c8995a0acbcc5d0d4c8bbafa49a8c8073666d7a86929facb9c3ced9cfc4b8ab9f95897c6f62564c41362a1c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e91847d858f939b9fa3aaa7a9a9a9a9a8a6a8a09e99928e867e756d675d564c433a30271c11080000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8278787878787878787878797b7f848e939ea5afbbc5cfdad7cbc0b5ab9c8f8275655b5044372b1f12050000000000000000000000000000000000000916232f3c4956626f7c8995a8b2bdc9d5ded2c5b8ab9f928578685e52463c4855626f7b8896a0acb9c5d2e1ecf7fff5ecdfd2c5b9ac9f92867a6d6154473a4754606d7a8797a1adb9c6d2dfd2c6b9ac9f9386796d6053463a2d20130700000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000915202a333f49515b636a6f7477797877736e68615a50473d31271d12070000000000000000000000000000000000000000000009151f2a333e474f585f626a6e717373716e69615f574e463c32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576875818e9ba9b3bec9d5e1d6cabeb3a9a09590847c75706d6c6d6f7379808c919ca5afbcc5d0dbdfd3c6baada297897c6f6356493c30231609000000000000000000000000000000000000000000000000010d19242f3a4855616b75818e949fa4ababacaaa69f969184796d60544a3f34281c10030000000c17232e3a4753606d7985929ea8b2bdc9d5dcd0c6bcb4aca49f9b96999399979c9fa6aeb6c0ccd5e0dbd2c6b9ada2978a7e7164574a3e31261a0e020000000000030d161f282f353d4448494e5153535353535353535353535353535353535353535252514f4d4b4847433c3b37322d28221a150e06000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3946525e6875818e9ba7b1bcced7d2c6b9ac9f93877b6e616875818e9ba8b2bdc8d4d4c8bcb1a79b8e8174685e5246382e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184777a82898f9298999a9c9c9d9c9b9a9896918c87817a716c605c554c443a31281e150b000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd2c5b9ac9f92878485858585858585858586888c91969ea5afb7c1cdd7ded3c7bbafa3998b7e726553493f33271b0f030000000000000000000000000000000000000714212d3a4754606d7a8796a1acb9c5d2ded3c6baada297877a6e615447414d5666727f8c99a8b2bdc8d4e1f3fdfff9ede0d4c7bbafa3998b7e7164554b404955626f7c8895a9b2bec9d5ddd1c4b7aa9e918477675c5145382c1f130600000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000000030e18212d37404951585f62676b6c6c6a66615e5650473e352b1f150b01000000000000000000000000000000000000000000020e1a26313c454f59616a6f767b7e7f7f7e7b756e695f584e443a3024190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4a5764707d8a97a1adb9c5cfdbdbcfc5bbb1a7a0969187817d7a797a7c7f848d929ca3adb7c1ced7e2ded2c5b8ab9f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000008131e2c38444f59606d79828d93999d9f9f9e9b948f847b6e675d5142382e23170b0000000006131f2c3845515d67737f8c96a1adb9c0cbd4d8cec6beb6afaca8aba49fa4aba9abb0b8c0c8d2dedcd5c9beb2a99e9285796d6053473a2d2014090000000000010b151f28313a41454f54565b5e5f6060606060606060606060606060606060605f5f5e5d5c5a5855534e4947433d39332b261f180f09000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616d7a86929facb9c3cdd6cabeb3aa9c8f8376695f63707d8996a0acb8c6d0d8cdc2b9ac9f92867a6d61544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776e757c8286898c8e8f90908f8f8d8b8884807b746e68625a514b433a32281f160c03000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd3c7baaea39992919191919191919191919299989ea1a9afb7c1c9d3dfd7ccc0b5ab9f92867a6d6154473a2d22170b000000000000000000000000000000000000000613202c3945515d677884919eabb7c4d1ded6cabeb3a996897c7063564946525e687683909da9b6c3ced9e5f1fffffcefe3d7cbc0b5ab9c8f8275675d51454b5764717e8a97a4b1bdcfdadbcec2b5a89b8f827568554b4034281c100400000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000000060f1c252e3740464e53555a5e5f5f5d5a54524c443e352c231a0d030000000000000000000000000000000000000000000006121e2b37424d57616b707c83888b8c8c8b87827b6f6a5f564c41352920150900000000000000000000000000000000000000000000000000000000000000000000000000000000000913202d3a4653606d7985929ea9b3becad6dfd7cdc3b9b1a8a099938e8a878686888c91979da4adb5bfc9d3e0ded3c7bcb0a69b8e8174665c5145382c1f13060000000000000000000000000000000000000000000000000001101c28333e45515d676d7981878d919292918e89827b6e695f554b4130261c11060000000004101d2935404b55606d7984919ea5afb9c2cbd4d8d0c7c0bbb9b4b5afacafb5b6b7bbc2cad2dadcd4cac2b9ada1978c7f73675d5145382c1f1306000000000007121d27313a434c51596063686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a696764625f5856544e49443e37312a211b120a0100000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66727f8c99a3aebac7d5d3c6baaea2988b7e716457606b7784919daab4bfcbd6d3c7baaea3988c7f73665c5044382c1f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b6b6f757a7d7f818283838382807e7b77736e69615e5650454039312820160d0400000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd7cbbfb4aba39f9e9e9e9e9e9e9e9e9e9e9fa3ababadb2bbc1c9d3dbd8cec6bbafa4998e8175685e5246392d1b11060000000000000000000000000000000000000004111d2935414b556975828f9ca8b5c2cfdbdbcfbeb1a5988b7e7265584b4754616e7b87939facb9c6d2dfecf6fffffff4e8dcd1c5b8ac9f92867a6d6053474d596673808c99a6b3bfccd9d9ccc0b3a6998d8073665a4d402e23180c0000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000000000a131c252e343c4347484e515252514d4746413b322c231a110800000000000000000000000000000000000000000000000814212d3a47535f69707d86909498999997938f857c6f685d52453c31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c66737f8c97a2adbac2cdd6dfd5cbc3bab2aba49f9b9699939995999ea1a9aeb6bfc7d1dbe0d5ccc4b7ab9f94897c6f63544b4034281c100400000000000000000000000000000000000000000000000000000b17212935404b555d676d747c8084858584817d766e695f574d433a2f1e140a0000000000000c18242f3945515d67707d8a939da7b1b9c3cbd6d9d2ccc8c6c1c0bbb9bbc0c3c4c7cdd4dcdbd6cac2b8aea49e91847a6d60554b4035291d100400000000000c18232f39434c555d606b70757879797979797979797979797979797979797979797978777574716e6a67626058555047423c332d241c130a0100000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7884919eabb4bfcbd7d2c5b8ab9f9285796d60535965727f8c98a3aebac7d3d7cbbfb4aa9e9184796d6053463c31261b0f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b6063676d707374767676767573716e6966615e57524c443f342f271f160e040000000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dddcd1c6bdb4aeacababababababababababacaeb5b8b9bdc4cdd3dbd7cfc6bcb2a89f93877c6f62564c41362a1d0a0000000000000000000000000000000000000000010d18242f404d5a6673808d99a6b3c0d1dcdacdc0b3a79a8d8074675a4d4b5565717e8b9aa4afbbc8d4e0edfaf6f5f6f9ece0d3c7baaea3988a7d7164544a4e5b6875818e9ba8b4c1cedbd7cbc0b5ab978a7e7164574b3e312418070000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000010a131c222a31373a3c4144464544403b39363029201a1108000000000000000000000000000000000000000000000004111d2935414c56616e7b8692989fa6a6a6a69e9791847a6d60584e43372b1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54606d7a85929fa6b0bbc5ced8ddd5ccc3bdb5afaca8aba49fa4aba6abadb2bbc0c8d1d9e0d7cec4baafa59c9083766b605442392e23180c000000000000000000000000000000000000000000000000000000050d18242f39434b555c606a6f747778797774706b615e564d453c31281d0c0200000000000007121d2935404b55616c74818e959fa7b1b9c1cad0d7d8d4d2d2ccc7c6c7ccd2d0d3d8ddd8d0cac0b8b0a69d928a7e71675d5143392f24180c000000000004101c2934404b555d676d757d8184868686868686868686868686868686868686868685858482807e7b78746f6a64615a534d453f362e251c130a0000000000000000000000000000000000000000000000000000000000000005121e2b37424d5764707d8a96a1acbdc6d1d4c8bcb1a79a8e8174675d5154616d7a86929facb8c3ced9d1c6b9ada1968a7d7164584e43372b1d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e555d6063666769696a69686765625f5754524d46413b3229231d150d04000000000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde2d8cfc6bfbab9b8b8b8b8b8b8b8b8b8b8b9bbbfc4c5c9cfd6dcd7cec5bcb4aaa0968d80746a5f53443a3025190d000000000000000000000000000000000000000000071824313e4b5764717e8a97abb5bfcbd7dccfc2b5a99c8f827669554b515d6775828f9cacb6c0ccd8e4f0ebe9e8e9ebefe3d6cbbfb4aa9b8e8175665c514d566a7783909daab6c3d0ddd4c7bbafa399887c6f6255483c2f2215090000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000000000000010a101820262b2e2f3438393937332e2d2a251e170e080000000000000000000000000000000000000000000000000713202c3945525d6875828f98a2aab0b2b2b0a9a1968e81746a5f53473b31251a0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945525d68727e8b949fa9b3bcc6cfd7ded5d0c7c0bbb9b4b5afacafb5b2b8b9bec4cdd2dadfd7cec5bcb2a89e93897d6f63594f4330271d12070000000000000000000000000000000000000000000000000000000007121d283139434b51585f62676a6c6c6b68636059524d443c332a1f160c00000000000000010d18242f3a43505a606d798390959fa7afbabfc5cbd1d5daddd7d4d2d4d7dddedbd6d2ccc5bebaafa69f948d80746c61554c4131271d1207000000000006131f2c3845515c676d7981898e9192999393939393939393939393939393939399929291908f8d8b8884817c77706c625f57504840372e251c12090000000000000000000000000000000000000000000000000000000000000714212d3a46535f6976828f9ca8b2bdcfd8d1c5b8aca095897c6f62554b525d6875818e9ba7b1bcc8d4d5c9bdb2a89c9083766a5f5347392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e4c515456595b5c5d5d5c5c5a5855534d4846423b3630292018120b0300000000000000000000000000091623303c4956636f7c8996a2afbcd1dcd7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddeae1d8d1cbc7c5c4c4c4c4c4c4c4c4c4c4c5c7cbd1d2d5dad6d1cbc3bcb3aaa29891847a6d60584e4332291e13080000000000000000000000000000000000000000000915222f3c4855626f7b8899a3aebbc7d3ded1c4b7ab9e918478675d5153606d7a86929facb9c5d2dde8e3dfdddcdddfe3e7dcd0c5b8ab9f9285796d6053525e697985929facb8c5d2dfd2c5b9ac9f9286796d6053463a2d2013070000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f2122272b2c2c2a2721201e19140d05000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929faab4bcbfbfbbb2a89f92877b6e62574d42362a1e13080000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414c56606c78829097a1aab4bcc5ced7dcd9d2ccc7c6c1c0bbb9bbc0bfc4c6c9cfd6dfdcd7cdc5bcb4aaa0968e81746b6054473d321e150b0000000000000000000000000000000000000000000000000000000000010c161f28303940454e53555a5e5f5f5e5b56554f46423b322a21180d04000000000000000007131d28313e45515c676d7a8390959ea5aeb4bbc0c7c9cfd1d2d3d7d8d4d2d1d0cac7c0bbb4aea59d948f82786d605a50433a2f1f150b010000000004101d2935404b55606d79828e939b9e9fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9c9a9796918d89837d766e69625a524940372e241b0f060000000000000000000000000000000000000000000000000000000004101c2834404b54616e7b87939facb9c4ced7cbbfb5ab9d9084776a6054434c56636f7c8995a0acb8c6d0dacfc4b7ab9f94887c6f62554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5145474a4c4e4f5050504f4d4b4847423c3a36302a251e170e070100000000000000000000000000000916232f3c4956626f7c8995abb5c0cbd7d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2a3744515d6a7784909daab7c3d0dcdcdcdcdcd7d3d2d1d1d1d1d1d1d1d1d1d1d2d3d7dcd7d3d0cbc6bfbab1aaa29892867c6f685d52463c3120170c020000000000000000000000000000000000000000000713202d3a4653606d7986929facb9c5d2dfd2c6b9ac9f93867a6d60535464717d8a98a3aebac7d3e4ded8d3d0cfd0d3d8dedfd3c6baada297897d70635354616e7a8798a2aebac6d3ddd0c4b7aa9d918477675c5145382c1f13060000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f1215151b1e1f1f1e1a1414110d08020000000000000000000000000000000000000000000000000000091623303c4956636f7c8999a3afbcc5cecdc4bbafa3998e8174695e53463a2f24190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303a44505b666e7b859298a2aab3bcc3cbd1d7ddd7d4d2d2ccc7c6c7ccd2d1d2d5dadcd7d1cbc3bbb3aaa29891847a6d60594f44342b210c03000000000000000000000000000000000000000000000000000000000000040d161e272e343c4347484d515252514e4a48443d36302920180f06000000000000000000010c161f2834404b555d686d7a838f939fa2aaafb5b9bec2c4c5c7cbccc8c6c4c2bebab6afaaa29f938e82796d665c51483e31281e0d03000000000006131f2c3945515d6773808d959ea5abacaeb4acacacacacacacacacacacacacacb5afacacabaaa8a7a8a19e9a95908a827b716c635c524940362d21180e0300000000000000000000000000000000000000000000000000000006131f2c3845515c6673808d9aa4afbbc8d6d3c7bbaea3998c7f7265584e434854606b7783909daab4bfcad6d3c7bbb0a69a8e8174675c5145382c1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e51443a3d40414343434342403e3b3a37312d2a251f19140d05000000000000000000000000000000000815222f3b4855626e7b8899a3afbbc7d4d5cabeb3a9968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000101d2a3643505d697683909ca9b6c2cccfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfceced1cbc7c5bfbab4aea8a09892867d706a5f564c41342a200e050000000000000000000000000000000000000000000006131f2c3845515c667784909daab7c3d0ddd4c8bbafa49a887c6f62555c6674818e9baab4bfcbd7dcd4ccc7c3c2c3c7ccd4dcd6cabeb3a99a8d8174655b5663707c8996aab4bfcad6dbcec1b5a89b8e827568554b4034281c10040000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090e111312110d08070501000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996aab4bfcad6d7cbc0b5ab9f92867b6e61564c4135291d12070000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28333f4a545e696f7d869298a2a9b1bbc0c7ccd2d5daddddd7d4d2d4d7dddedcd9d4d1cbc6bfbbb1a9a29892867c6f685d52473d3222190f0000000000000000000000000000000000000000000000000000000000000000040c151d232831373a3c4144454644413d3c38332a251f170e060000000000000000000000040d18232e39434c565e686d79818b92989fa3abadb2b5b7b9bbbfc0bbb9b8b6b3adaca49f98928b81786d675d544b40362c1f160c0000000000000714202d3a4753606d7986929fa7afb7b9babfb9b9b9b9b9b9b9b9b9b9b9b9b9b9c0bbb9b8b8b7b5b3b2adaba7a09d9490867e736e635c52483e332a1f15090000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eacb6c0ccd8d2c5b9ac9f92867a6d6154473d434f5965727f8b98a2aebac6d3d8cdc2b8ab9f9285796d6053473a2e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e514438303334363637363534322f2e2b26201e1a140e080200000000000000000000000000000000000714202d3a4753606d7a86929facb9c2c8c9c4b9ada297887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa6b0bac1c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1bfbfbab9b4aeaba39f9591867d706b60584e433a2f22180e000000000000000000000000000000000000000000000004101c2834404b546875828e9ba8b5c1cedbd8ccc0b6ac978a7e716457606d7985929eabb8c5d1dcd4cac2bbb7b5b7bbc2cad4dbd0c4b8ab9e9184786c605865727e8b98a5b1bed0dbd9ccbfb2a6998c7f7366594c402e23180c000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8898a2aebac7d2dcd1c7bbafa3998d8073685d5245392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000020b17222d38424d56606b707d869297a0a7afb5bbc0c7c9cfd0d2d3d6dbd8d4d2d1d0cec8c7c0bbb5aea7a09792867d706a5f564c41352b211007000000000000000000000000000000000000000000000000000000000000000000030b121820262b2e2f343739393835302f2c272119140d050000000000000000000000000007121d27303a444c565e676d757f868e92999ea1a9a8aaacaeb5b6afacaba9a9a29f9a938e867e746d665d554b42392e241a0d040000000000000a1724303d4a5763707d8a98a2aeb9c1c5c7cbd1c6c6c6c6c6c6c6c6c6c6c6c6d1cbc7c5c5c4c3c2c0bdb9b7b1aca69f98928b80736e635a50453c31261a0e050000000000000000000000000000000000000000000000000004111d2935414c5664717d8a97a1adbec7d2d5c9bdb2a99b8f8275685e5246393d4754606d7a86929facb8c3cdd9d3c6baada2978a7d7164544a4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b2628292a2a2929272522211e1a15120e0903000000000000000000000000000000000000000613202c3945515d677683909da6b0b8bdbeb9b2a89e9285786c605346392d201306000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89949fa8afb4b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b5b4b3b4aeacaaa39f99928d837c706b60594f463c31281e10060000000000000000000000000000000000000000000000000c18232e404c5966737f8c99a6b2bfd0dbddd2bfb3a6998c8073665963707c8997a2adb9c6d2d6ccc2b8b0aba9abb0b8c2ccd8d2c5b9ada196897c6f625a6773808d9aa6b3c0cdd9d6cabfb4aa978a7d7064574a3d31241707000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000001040707090a0b0c0c0b0b0907070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929facb6c0ccd8d7cbc0b5ab9f92857a6d60554b4034281b11060000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b444f59616b707d8590959fa3abafb5b9bdc1c3c5c6cad0ccc8c6c4c3c1bdb8b5afaba39f9590857d706b60584e433a2f23190f000000000000000000000000000000000000000000000000000000000000000000000000070c151b1f2122272b2c2c2b282323201c160e09020000000000000000000000000000000b151e28323a444c555d606d727b81878d9197999c9e9fa3aba1a49f9e9c9997928d87817b716c605c544b433930271d1208000000000000000c1925323f4c5865727f8b98aab4bfcbd2d3d7dcd2d2d2d2d2d2d2d2d2d2d2d2dcd7d3d2d2d1d0cfcfc9c5c3bcb8b0aaa29f928c80736c61574d42372b21160b000000000000000000000000000000000000000000000000000713202c3945525d6875828f9ca9b3bed0d9d2c5b9ada1968a7d7063564c41363945525d6874818e9ba7b1bcc8d4d6cabeb3a99b8e8275665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e1b1c1d1d1d1c1a181514120e09050200000000000000000000000000000000000000000004111d2935404b5564717e8b949fa6acb2b3ada8a1968d8073655b5044372b1f1205000000000000000000000000000000000000000000000000000000000916222f3c4854606b768290969ea5a8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a8a7a6aba39f9c98928e8680796f6a60594f473d342a1f160c00000000000000000000000000000000000000000000000000071724313d4a5764707d8a97aab4bfcad6dbcec1b5a89b8e827568586774808d9aa9b3becad6cec4bab0a69f9c9fa6b0bbc7d3d5c9bdb2a9998d807366586975828f9ca8b5c2cfdbd3c7baaea298887b6e6255483b2f221508000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000010407080d11131416171819191817161413110d0806040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6774818d9aa4afbbc8d4dcd1c7baaea2988c7f72675c5145382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323d464f59616b707c838d92999fa4abadb2b5b7b8babfbac0bbb9b8b6b4b2acaba39f99928d837b706b60594f463c31281e110700000000000000000000000000000000000000000000000000000000000000000000000000040a0f1215151a1e1f1f1e1b171614100b050000000000000000000000000000000000030c162029323a434b515b62686e747b8084898c8f91929994949a93918f8d8985817b746e69625a514b423931271e150b00000000000000000d192633404c5966737f8c99a6b2bfd0d9e0e3e7d7d1ccc8c7c6c6c6c6c6c6c6c6c6c7c8cacdd2d3d6d5d2cdc8c2bcb4aea49c928b7e71695f53473d33271c10020000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c5cfded1c4b8ab9e9184796d6053463a3035414c56626f7c8995a0acb8c5cfdbd0c5b8ac9f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e11101010100f0d0b08080602000000000000000000000000000000000000000000000000010d18242f3a4653606d788290949da0a8a9a19e9691847a6d6153493f33271b0f03000000000000000000000000000000000000000000000000000000000714202c38444f59616e7b848f93999b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9b999899928f8b86817b736d675f584f473d352c22180d04000000000000000000000000000000000000000000000000000815222e3b4855616e7b8898a2aebac6d3ddd0c3b7aa9d908477665f6a7784919eaab7c4cfd5c9bdb2a89f948f949fabb7c4cedacfc4b7aa9d9184776a5f667784919eaab7c4d1ddd2c5b8ac9f9285796c605346392d201306000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000002080d111314191d2021232425252525242221201d191413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55626e7b87939facb9c2cdd8d6cabfb4aa9e9185796d6053493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000020b17202b343e474f59606a6e7980878f93999ea1a8a8aaacaeb4aeb6afacaba9a7a8a09d99928e8680796e6960594f473d342a1f160c00000000000000000000000000000000000000000000000000000000000000000000000000000000030608090e111213110e0a0907040000000000000000000000000000000000000000040e1720293139404551565e61696e73787c7f82848687878787868583807d79746e6a615e575045403930271f150c0300000000000000000d1a2633404d596673808c99a6b3bfccd9e6dfd5cdc5c0bcbbb9b9b9b9b9b9b9b9bababbbdc1c5c6cacfd7d9d4cec6bfbaaea49f92867b6e62594f44382c1f14090000000000000000000000000000000000000000000000000b1724313e4a5764717e8a99a3aebbc7d7d3c7bbb0a6998d8073665c504438292f3a4754606a7783909da9b3becad6d3c6baaea298897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e1105030403020100000000000000000000000000000000000000000000000000000000000007131f2c3844505c666d7a828b9196959697928d847c6f685e5241382d22170b000000000000000000000000000000000000000000000000000000000004101c27333d46525e696e7a82888c8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c8b8886827f7a746e69605c554e463d352c231a100600000000000000000000000000000000000000000000000000000613202d394653606c7985929facb8c5d2dfd2c5b9ac9f9286796d626f7b8896a0acb9c5d2d2c5b9aca0968f828f9ca8b2bdc9d5d1c5b8aca096887b6e626d7986929facb9c5d2ddd0c3b6aa9d908377665b5044382b1f1206000000000713202d3a4653606d798693a0acb9c6d3d3c6baada093877a6d6054473a2d212633404d596673808c99a6b3bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3baaea39886796c605346392d20130000000000000000000000040a0f13191d202124292c2d303132323232312f2e2d292521201d19130e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3947535f6a75828f9ca6b0bbc7d3dbd0c5b9ada1978b7e71655b5044372b1f160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000050e19222c353e474f585f676d737b82878d9196989b9d9fa2aaa1a1a49f9e9d9a9896918c87817b736d675f574f473d352b22180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f353f444d52575e61666c6f737577797a7b7b7a79787673706d66625f57524d453e342e271e150d030000000000000000000d1a2633404d596673808c99a6b3bfccd9e6d7cdc3bbb4b0aeadadadadadadadadadadafb1b4b8babec5cdd2dad8d0cabfbaaea2988f82766b6054483b30251a0e0200000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aabb5bfcbd7d0c4b7ab9f94887b6e61544a3f34282b37434e5865717e8b97a2adbac5cfd6cabfb4aa978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e1105000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545e686d787f848789898885807a6f6a5f564c412f261b11060000000000000000000000000000000000000000000000000000000000000b16212a36424d565e686d757c7f81828383838383838383838383838383838382828281807e7c7976726d68615f57514b433c342c231a110800000000000000000000000000000000000000000000000000000005121f2b3744505b657683909da9b6c3d0dcd3c7baaea398887b6e66737f8c99a8b2bdc9d5d1c4b7aa9e91847c8996a1acb9c5d2d4c8bdb2a8998c7f72666e7b8899a3afbbc7d3dacec1b4a79b8e817468544a3f33281c0f03000000000713202d3a4653606d798693a0acb9c6d3d4c7bbaea194887b6e6155483b2e2328343f4a546774808d9aa7b3c0cdd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000101d2a3643505d697682909ca9b6c3b9ac9f9286796c5f5346392c201300000000000000000003090f161b1e24292c2d3035393a3c3d3e3f3f3e3e3c3a3935302d2c29241e1a140c07000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37424e57636f7c89949fabb7c3cdd9d5c9beb3a99d9184786c6053463d32271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a232c353d464e555c606a6e757b8084898c8e9092989494949a9391908e8b8884807b756e69605c554d453d352b231910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d2429323b41464d53545b60636669666d6d6e6e6d6d67696663605c54534e46423b3328231d150c03000000000000000000000d1a2633404d596673808c99a6b3bfccd9dcd1c5bbb1a9a3a1a0a0a0a0a0a0a0a0a0a1a2a4a7abadb3bbc0c8d0d9dbd6cabfb4aa9f94897d7063574d42362a1e120500000000000000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1ced1c9bdb2a99c908376695f5342382e2327323d4753606d7985929fa9b3becad0c9bdb2a996897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbd0dbd1c4b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424c565e666d72777b7c7c7b78736d685f584e443a301d140a00000000000000000000000000000000000000000000000000000000000000050e1925303b444d565e616a6f737576767676767676767676767676767676767675757473716f6d6765615d56534d454039312a221a110800000000000000000000000000000000000000000000000000000000030f1b27333f49536874818e9ba7b4c1cedad7cbbfb4aa968a7d70697783909daab6c3ced5c9beb3a99a8d807884919eabb7c4cfd9cec3b6aa9d90837769707d8a97abb5c0cbd7d8cbbfb2a5988c7f7265594c3f2d22170b00000000000713202d3a4653606d798693a0acb9c6d3d6c9bcb0a396897d7063554b40342e2f3844505c6676828f9ca9b5c2cfd9ccc0b3a6998d8073665a4d4033271a0d000000000000000000000f1b2835424e5b6875818e9ba8b2b9b5ab9e9184776b5e5144382b1e110000000000000000060e151a21272c3035393a3e414547494a4b4c4c4b4a494746413e3a39352f2a261f18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4854606b7683909ca7b1bcc8d4dacfc4b8aca0968a7d7064584e43382c1f150900000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b333c434b51575f62696e74787c7f8284858687878787868583817e7b77736e69615f57514b433c332b2319110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c1218202930363b42464a50535659545c6060616161605c555a5653514a47423c3630292118120b0300000000000000000000000d1a2633404d596673808c99a6b3bfccd9d8ccc0b4a99f98949393939393939393939495979a9fa2a9aeb6bfc7d0dcdbd0c6bcb0a69c8f8276695e52463a2d20140700000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa8b2bcc3c4c0b9ada1968b7e7164574d4230261c1f2c3945515d6773808c97a1adb9c0c4c1b9ada196887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895aab4bfcad6d1c4b7aa9e9184776b5e5144382b1e110500000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444c545c6065696e6f6f6e6c65615e564e463c32291e0b02000000000000000000000000000000000000000000000000000000000000000009141f29323b444c52585f626668696969696969696969696969696969696969696868666562605c5554524c46423b342f271f1810080000000000000000000000000000000000000000000000000000000000000b17222d3f4c5965727f8c98a5b2bfcfdadcd1bfb2a5988c7f726e7b87939facb9c6d2d2c6b9ada197897c73808d9aa8b2bdc9d5d1c4b8ab9f95877b6e727f8c98a5b2bfd1dcd6cabeb3a996897d7063564a3d3023170600000000000713202d3a4653606d798693a0acb9c6d3d9ccc0b3a6998d8073675c51453f3c3d424b55606d7985929fabb8c5d2d9ccc0b3a6998d8073665a4d4033271a0d000000000000000000000b1825313e4b5864717e8b96a0a9acaca3998e8174675b4e4134281b0e00000000000000090f1820262b32383a4145474b4c5254565758585858575554524c4b4745413a363128231d150c050000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5963707d8a95a0acb8c4ced9d4c8bdb2a89c9083766a6054483c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000081119212a313940454e53575f61656c6f727577797a7a7b7b7a79787674716e6966615e57534d454039302a2119110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070e171f252a3136383f4446494c4a50535454545453514b4d4a4644403937312a251f170f07000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d5c8bcb0a3988d8886868686868686868787888a8e92979da4adb5bfcad3ded7cec2b9ac9f93877b6e6154483b2e21150700000000000000000000000000000000000000000000000a1724313d4a5764707d8a96a1aab2b7b7b5afa59e9184796d6053463c3120141d2935404b55606d7a85929ea5aeb6b7b6afa69e9184786a5f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8898a2aebac7d2cec3b6a99d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000a151e28323a424a5153575e61626361605b53524c443c342a20170c000000000000000000000000000000000000000000000000000000000000000000020d172029323a41464e5355595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59585553514b4746413a363129231d150d0600000000000000000000000000000000000000000000000000000000000000061723303d4a5663707d8996a9b3becad6dacdc1b4a79a8e8174727e8b9aa4afbbc8d4d1c4b8ab9e9185796f7c8996a1adb9c5d2d4c8bcb1a7988b7f7274818e9aa7b4c1cddad3c6baada297877b6e6154473b2e21140800000000000713202d3a4653606d798693a0acb9c6d3ded1c4b8ab9e9185796d6059504a494a4d545d67717e8a97a2adbac6d3d9ccbfb3a6998c807366594d4033261a0d000000000000000000000713202d3a4653606d798491979e9f9e9a92877c6f6255483c2f2215090000000000010a121b212a31373d43484c525458565d606364656565656462615e565854514c46423b342e271e170f050000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4855616b7783909da8b2bdc9d5d9cec3b7ab9f94897c6f62574d42372b1e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f181f272f343c42474d53535b606265686a676d6e6e6e6d6d666a6765625f5754534d46423c342e271e180f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191f252a2d3338393c403f444647484847464540403d3a38342e2b26201a140d0500000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7bbaea194887b7a7a7a7a7a7a7a7a7a7a7c7e81858d929ba3adb8c1ccd7e0d4c8bbafa49a8b7f7265584c3f2f23180c00000000000000000000000000000000000000000000000713202d3a4653606d79849198a1a8aaaaaba39f938a7e71665c5145382c1f1318242f3945525d68717e8b939da4aaaaa9a59e948c7f7265584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929facb8c0c5c4bcb1a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000030c16202830394044464d525456565553504946413a322a22180e0500000000000000000000000000000000000000000000000000000000000000000000050e17202930363c4347484c4e4f505050505050505050505050505050504f4f4f4e4d4b494645403a3935302a261f18120b0300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8797a1adb9c6d2dcd0c3b6a99d90837676828f9cacb6c0ccd6cabeb3a99a8d81746c7884919eabb7c4cfd8cdc2b6a99c8f82767683909ca9b6c3cfdcd2c5b8ab9f928578695e52463a2d20140700000000000713202d3a4653606d798693a0acb9c6d3dfd2c6b9ada1978c7f736b605c545656565e666d7984919da9b3becad6d9ccbfb2a6998c7f7366594c403326190d0000000000000000000006131f2c3845515c676f7c858d9192928f887f726a5f53473a2e21150800000000000a131c242d333c43474f54565d606568686d6f7071727271716f6d686865605d55534d454039302921170f0500000000000000000000000000000000000000000000000000000000000000000000000000000a16212c38444f5964717e8a96a0acb9c4cfdad3c7bcb0a69b8f8275695f53473b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151d232931373c424749505356595b555d6061616161605c545b5855534d4846423b373128231d150c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e141a1c22282b2d302e34383a3a3b3b3a3a38342e302d2c28231c1a150e09020000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6d6d6d6d6d6d6d6d6e6f71747a808b919ba6b0bbc7d3dfd8ccc0b6ac9b8e827568554b4034291c10040000000000000000000000000000000000000000000006131f2c3845515c676f7d8691969b9d9d9c99928d81746c61544b4034281c10121d2935414c56626c74818d929b9d9d9c9a938e82786d6053463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6675828f9ca4aeb7b8b8b3aaa0958a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e272e34383b42464749494846443f3836302820181007000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a31373a3c4042434343434343434343434343434343434343424241403e3c3a38342e2d29241e1a140c07010000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687885929eabb8c5d1ded2c5b8ab9f9285787a86929facb9c5d2d3c6baada297897d706574808d9aa9b2bec9d5d2c5b9ac9f92867a7885919eabb8c4d1dccfc3b6a99c90837669574d42362a1e110500000000000713202d3a4653606d798693a0acb9c6d3e1d5c9beb3a99f92877d726d6664636364686e78818e95a0acbcc5d0dbd8cbbeb1a5988b7e7265584b3f3225180c0000000000000000000004101c2834404b555f6a6f7b81848685827d726d62584e43372b1f12060000000008121c252e363f464e53596063686d7175787a7c7d7e7f7f7e7d7c7a7875716d67615f57514b423b332921170d030000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e4653606d7884919ea9b2bec9d5d8cdc2b9ac9f93877b6e62564c41362a1d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b3137383f4446494c4f4b51535454545453514a4e4b4847423c3a36312b261f18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e11171c1f202323282b2d2d2e2e2e2d2c282323201f1c18120e090300000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6160606060606060616264676d747f8b949eaab7c3d0dcddd2c4b7ab9e918478675c5145382c1f13060000000000000000000000000000000000000000000004101c2834404b55606b6f7d848b8f90918f8d8780786c605a5042392e23180c0d1924303a44505a606d7880898e9091908d8881796d665c5044382a2015090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b5463707d89929da4abacaba9a1989083786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000050c151c23282c30363a3b3c3c3b3937332d2a251e160e070000000000000000000000000000000000000000000000000000000000000000000000000000050c131920262b2e2f333536363636363636363636363636363636363636353533322f2d2c2823201d19130e0903000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d566976838f9ca9b6c2cfdcd3c6baada297877a7e8a99a3aebac7d3d2c5b8ab9f9285796d636f7c8997a1adb9c6d2d3c7bbafa3998b7e7a8797a1adb9c6d2dacdc0b4a79a8d8174675a4e4130251a0e0200000000000713202d3a4653606d798693a0acb9c6d3e6dacfc4bbafa39992877f7973706f7071757b818e939da8b1bdced7e1d5c9bdb2a9968a7d7063574a3d3024170a00000000000000000000000c18232e39434e585f696e74787978756f6b625b51463c31261b0f03000000030c1a242e37404850585f626b6f757a7e828487898a8b8b8b8b8a888784817e7a746e69605c544d453b33291f150b01000000000000000000000000000000000000000000000000000000000000000000000000000b161f2b3844505c66727e8b97a1adb9c5d0dbd4c7bbafa4998e8174685e52463a2f24180d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c151a1f262b2d3337393c3f4240454747484847464440413e3b3a37312d2a251f1a140c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121316171c1f2021212121201f1c18171312100c0700000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61545353535353545455555d606d75828f9ca8b5c2cfdadfd2c6b9ac9f9386796d6053473a2d20140700000000000000000000000000000000000000000000000c18232e39434f59606b6f797e82848483807b736c665b50483e30271d120708131e28323f44505c666d747c81838483807c746d675d544a3f3428180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e394854606b74808d929b9e9f9f9d9791867c6f665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f252a2d2e2f302e2d2b27221b19130c050000000000000000000000000000000000000000000000000000000000000000000000000000000002080d151b1f21222628292929292929292929292929292929292929292928262522201f1c1813110d080200000000000000000000000000000000000000000000000000000000000000000000000000020e192530414e5a6774818d9aa7b4c0cddad6cabeb3a996897d818e9babb4bfcbd6cabfb4aa9b8e817466606c7984919eabb8c4cfd7cbc0b5ab9b8f827c8995a9b3bec9d5d8cbbeb1a5988b7e7265584b3f322518090000000000000713202d3a4653606d798693a0acb9c6d3dfe1d7cbc0b5aba399928b84807d7c7d7e81868f939da5afbac3cee0dfd2c5b9ada196877b6e6154483b2e211508000000000000000000000007121d27303c464e575e61676b6c6b6963605951493f342a20150a000000000b151e2c364049515a626a6e757c82868b8f9196969798989898979596918e8b86817b736d665e574d453b31271d12070000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7984919ea9b3becad6d7ccc0b5ab9f92867a6e61554b4035291c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151a1b22272b2d2f322f35393a3b3b3b3a3a38342e322f2e2b26211e1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606060b101213141515141313100c07070604000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615447474747474747494c515b63707d8996a9b3becad6e0d4c8bbafa49a887b6e6155483b2e221508000000000000000000000000000000000000000000000007121d27303d474f5960676d7175777776736e69605b544a3f362c1e150b00020c162028343f4a545c606b6f74777776736f6a605d554b42382e23170600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2c38444f59606c7880898e919292908c857c6f6a5f544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10141a1e2021232322201f1b17110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f121515191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1c1b1a18161313100c07050100000000000000000000000000000000000000000000000000000000000000000000000000000000081825323f4b5865727e8b98a5b1becfdadbcfbeb2a5988b7f85929fabb8c5d1d3c6baaea2988a7d70645b6674818d9aa9b3bec9d5d1c5b8ac9f92867e8b98a4b1becfdad5c9bdb2a896897c6f6356493c302316090000000000000713202d3a4653606d798693a0acb9c6d3dfe8dcd1c7bdb5aba39f96918d8a89898b8e92989ea5afb7c1ccd5dfd9d0c4b8ab9e918478695e53463a2d2114070000000000000000000000000b151e2a343c454d52545a5e5f5f5c56544f473f372d22180e0300000007121c27303e48515b636c717c82898f92999b9ea1a8a3a4a5a5a4a4a8a19e9b98928e8780786e695e574d43392f24180c04000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3845515c67727f8c97a2adbac6d0dbd2c7baaea3988c8073675d5145382e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e11171b1f20232624292c2d2e2e2e2e2d2c28232522211e1a15120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607070808070706040000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b3a3a3a3a3b3c414753606d798697a1adb9c6d2dfd8ccc0b6ac95887c6f6255493c2f2216090000000000000000000000000000000000000000000000000b151e2b353d474f555c6064686a6a6966615f57504a42382d241a0c030000040e17232e38424a50596063686a6a6967625f58514b433930261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101b27323d44505b666c747c81848585837f7a6f6a60584e42382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e11141416161513120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090d0f1010101010101010101010101010101010100f0f0e0d0b090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a8b2bdc9d5ddd0c3b7aa9d90849097a2adbac6d3d2c5b8ac9f9285796d605463707c8997a1adb9c6d2d3c7baaea2989084909daab7c3d0ddd2c5b9ada196877a6d6054473a2d2114070000000000000713202d3a4653606d798693a0acb9d0dbe7dfd6cfc9c6bdb5aea8a09e99979696979b9fa2aaafb7c1c9d2deddd2c7beb1a79a8d817467574d42362a1e1205000000000000000000000000030c18222a333b4246484e5153524f4948443d352d241b1006000000000c18232e3942505a636d737e868f949c9fa3ababacb2b0b1b2b2b1b0b2adabaaa39f99928d837b6e695e554b40352921160a0000000000000000000000000000000000000000000000000000000000000000000000000006111c2834404b55606d7a85929faab4bfcad6d7cbbfb4aa9f92857a6d60544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131619181d202021212121201f1c18181514120e09050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b2e2d2d2d2e2f3845515c677885929eabb8c5d1deddd2bcafa295897c6f6256493c2f231609000000000000000000000000000000000000000000000000030c19232b353d434b5153585c5d5e5c5a55534d443f382f261c12090000000006111c2630383f444f54565b5d5e5d5a55544e45403931281e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b162128333f4a545b606a6f7478797876736d6760584e463c2f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090908060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8796a1adb9c5d2ded1c5b8aca0959095a0a9b3becad6cbbfb4ab9b8e8275675d53606d7985929eabb8c5cfd6cabfb4aaa0959095a0acb8c5d1ded1c4b8ab9e918478685d5245392c2013070000000000000713202d3a4653606d798693aab4becad6e1d6cdc5beb9b8b7b8b2acaaa6a3a2a3a4a8acaeb4bcc1c9d2dbdcd7ccc0b6ac9f95897c6f6356493c31251a0e0200000000000000000000000000061018212930363a3b41454645423c3b38322b231b12090000000004101c2834404a54616c737f8b92989ea6acaeb5b7b9bdbdbebebebebdbdb9b7b4aeaba39f9590847b6e675d51453d32271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515d6773808d98a2aebac7d1dcd1c6baada2978b7f72665c5044382c1f160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050609070d111314141515141312100c070808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080a0b0c0c0c0b0a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0b0c0a070704010000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b3535352f35393e46535f697986929facb9c5d2dfd7cbbfb4aa95887b6e6255483b2f22150800000000000000000000000000000000000000000000000000071119232b30394045464b4f5151504d4847423c332d261d140a0000000000000a141e262e343d4348494e5051504d4947433c352f281f160c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b17222d38424a50586062686b6c6c6a66605d554e463d342a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607090a0b0b0c0c0b0b0a080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d687884919eabb7c4d1ded4c8bcb1a7a09da0a7b1bbc5cfd3c7baaea3998a7e716455505c6674818e9aa9b3becad6d0c6bcb1a7a09da0a7b1bcc8d4dccfc2b5a99c8f827669564c4135291d11040000000000000613202d394653606c798698a2aebac6d3dacfc5bbb3adabaaacb1b9b7b3b0afb0b1b4b8babfc5ced3dbd8d1cbc1bbafa49a9083766b6054483b2f1f1409000000000000000000000000000000060f171f252a2d2e3438393836302f2c2721191109000000000006121f2c3844515c66717e8a919fa3aab0b9bbbfc4c5c9cecbcbcbcbcfc9c5c4bfbab5afa7a0969083796d60584e43382c20150a0000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414b55616d7a86929fabb5c0cbd7d6cabeb3a99e9184796d6053463d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060c10121315171818191818161414110e080705020000000000000000000000000000000000000000000000000000000000000000000000000000070c101313171818171413110d0802000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544741414141424045475058616e7b8898a3aebac7d3e0d3c7baaea398877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000710191e272e34383a3e42444443403b3a373128221c140b02000000000000020c141c232832383b3c41444443403c3b373229241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f444e54565b5e5f5f5d5954514c433d342b22180b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080d111314161718181919181717151312100c060605030000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566976828f9ca9b5c2cfdcd9cec3b9b1acaaacb1b9c3cdd7d2c5b9ac9f92867a6d60544a5463707d8997a1adb9c6d2d8cec3b9b1acaaacb1b9c3ced9d9cdc0b3a69a8d8073675a4d403024190d0100000000000006121f2b3844505b667885929fabb8c5cfd0c9beb3a9a19e9da0a7b1bcc0bdbcbcbec1c5c6cad0d7d5d2cfc6bfbab0a69f93887c6f62594f43382c1f0d0300000000000000000000000000000000050d141a1e2021272b2c2c292322201b160f070000000000000713202d3a4653606d7984919ea3aeb4bcc1c7cbd1d2d5dad7d8d8d7dad5d2d0cbc7c0bbb1a8a0958e81746a6054483c31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a46525e6874808d99a3afbbc7d2dbcfc5b9aca1968a7e7164594f44382c20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315171c1f20222325252625242321201e191514120e090400000000000000000000000000000000000000000000000000000000000000000001080d12181c1f202325252421201d19130e090300000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544e4e4e4e4e4e4b51535a616a73808c99aab4bfcbd7dfd2c5b9ac9f9286796d6053463a2d201307000000000000000000000000000000000000000000000000000000070c151d23282c2d3135373736332e2d2b261f17110a020000000000000000020a111721272c2f3035373736342f2e2b262018120c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333d4347494e515252504c4745413a312b221910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c10131416191d202122242425252525242322201f1c171513120f0b060000000000000000000000000000000000000000000000000000000000000000000000010d19242f404d5a6773808d9aa6b3c0d1dcdfd5cbc3bcb8b7b8bcc3cbd5d7ccc0b5ab9c8f8276685d524653606d7985929eabb8c5d0dbd5cbc3bcb8b7b8bcc3cbd5dfd7ccc0b5ab978b7e7164584b3e3125180800000000000000030f1c28333f4a546a7683909da9b3bdc3c4bfb9ada197929195a0aab3bbc2c7cbd1cecfcfcfcecfc9c6c2bcb4aea69e948d80736a6054473d32271b0f00000000000000000000000000000000000002090e1214151b1e201f1c1615130f0b04000000000000000a1623303d495663707c8996a1adbabfc6ced3d7dbd6d3d2cfcfd1d2d5d9dfdcd6d1cbc3bab1a79f93877c6f62584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000007131d2a36414c56616e7b86929facb6c0ccd8d5c9bdb2a89d9083776b6054483c32261b0f03000000000000000000000000000000000000000000000000030506090c0d0c0a0706040100000000000000000000000000000000010407070a0c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10151b1f2123282c2d2e303132323231302e2d2a2522211e1a14100c07000000000000000000000000000000000000000000000000000000000000040c13191d23282c2d303232312d2c29241e1a140d05000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615b5b5b5b5b5b5b555d60646c707c86929facb9c5d1dcdccfc3b6a99c908376665c5044382b1f120600000000000000000000000000000000000000000000000000000000030b12181c1f2025292a2b292722211e1a150b06000000000000000000000000060b161b1f2223282a2b2a2722221f1b150d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c222832383b3c4145464543403a39352f281f191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12181c1f202324292c2d2f31313232323131302e2d2c282322201f1b17110f0903000000000000000000000000000000000000000000000000000000000000000000081825313e4b5864717e8b97abb5c0cbd7e3ddd5cec8c5c3c5c8ced5ddd4c7bbafa4998b7e7165564c44505c6674818e9aa9b3becad6ddd5cec8c5c3c5c8ced5dde0d4c7bbafa499887c6f6255493c2f22160900000000000000000b17222d3f4c5966727f8c97a2abb3b7b7b4aea49e9285849198a2a9b0b9bbc0c1c2c3c3c2c1c0beb9b8b0aaa39f948f82786d60584e43342b21160a0000000000000000000000000000000000000000020507080e1213120f090907030000000000000000000c1926323f4c5965727f8c98a8b2bdcbd0d8d9d5d0cac6c5c3c2c4c5c9ced4d9dfdcd7ccc3bbafa49a8f82766a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a46535e6975818e9aa4afbbc8d4dacec4b8aca095897d7063584e43372b1f140900000000000000000000000000000000000000000000060b0f121316191a19171413110d070100000000000000000000000001080d11131417191a19171413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f262b2e2e34383a3b3d3e3f3f3f3e3d3b3936302e2d2a261f1c18120b06000000000000000000000000000000000000000000000000000000060d161e24292e34383a3d3e3f3d3a3935302a251f170f070000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e686868686868686869676d71767e869298a3aebac7d3dfd4c8bcb1a7998d807366544a3f34281c1003000000000000000000000000000000000000000000000000000000000000070c101313181c1e1e1d1a1514120e09030000000000000000000000000000040a0f1315161b1d1e1d1a1615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a111720272b2e2f3538393937332d2c29241e160d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11171c1f23292c2d302f35393a3c3d3e3e3f3f3e3e3d3b3a38342e2f2d2b27221b1a15100b05000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3afbbc7d4e0e7dfd9d4d1d0d1d4d9dfdfd2c6b9ac9f93867a6d6154473f4a5463707d8a97a2adbac6d3dfdfd9d4d1d0d1d4d9dfe7dfd2c6b9ac9f93867a6d6053473a2d20140700000000000000000614212d3a4754606d7a859299a2a9aaaaaaa29f928a7e7c8692979fa6acafb5b4b5b6b6b5b4b3b3adaba69f98928c82796d665c50463d3222190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cfdbd6cec9c5bebab8b6b6b7b9bdc4c8ced5ddded8ccc0b6ac9f94887b6f6255483c3025190e020000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36424d57626f7c87939facb9c2cdd8d4c8bcb1a79c8f82766a5f53473b31251a0e0200000000000000000000000000000000000000020a11171b1f20222526262420201d18130b0600000000000000000000060b13191d20212426262624201f1c18120b06000000000000000000000000000000000000000000000000000000000000000000000000000000000002090c151d23282c32373b3c3f4446484a4b4b4c4b4b494746413f3b3a36312c28231d17110a02000000000000000000000000000000000000000000000000060f181f282f35394045464a4b4b4a4745413a3630292119110700000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a74747474747474747575777a7e838a9298a2aab4bfcbd7d7cdc5b8ab9f95897c6f6256493c2e23170b0000000000000000000000000000000000000000000000000000000000000000000406070b0f1111100d08080602000000000000000000000000000000000000030709090e1111100d090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b161b1f2223282b2c2c2a2621201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c22282b2f34383a3d40414547494a4b4b4c4c4b4a4a4846443f3f3c3937332d2b26201c160e090200000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986929facb9c5d2dfeceae4e0dedddee0e4e9dccfc3b6a99c908376685e52463a4653606d7985929fabb8c5d0dbe6e4e0dedddee0e4eaeaddd0c4b7aa9d918477675d5145382c1f130600000000000000000713202c3945525d68707d8792979c9d9d9c98928b80736f7d8590949c9fa3aba8a9a9a9a8a7a7a9a19e9a948f867f776d675c544a3f342b201007000000000000000000000000000000000000000406070a0b0c0a07070501000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cfd0cac4bdb9b4aeaba9a9aaacb2b8bcc3cbd5dfddd2c7beb0a6998d807366564d41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a75828f9ca6b0bbc7d3d9cdc3b7ab9f94887c6f62574d42362a1e1308000000000000000000000000000000000000070b141b22272b2d2f323333312d2c29241d17110a02000000000000020a11171e24292c2d31333332302d2c29231d17110a020000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e272e34383c4347494a5053555658585958575654524c4c4846423b38342e27221b140b0500000000000000000000000000000000000000000000040e182129313a41454b51535658585754524c46423b332b23191006000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dbcec1b5a89b8e818181818181818181818284868a90949fa2aab3bcc6d1d8cec5bbb0a69d9083766a6054473b2e1c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161b1e1f1f1d191413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c151c23282d333839404547494c4c51545557575858585857565553504a4b4846443f3837312c27211a140d050000000000000000000000000000000000000000000000000000000006131f2c3845515c677784919daab7c4d0ddeaf5f0edeaeaeaedece0d4c8bcb1a7988b7f7265564c413844515c6674818e9baab3becad6e2eeedeaeaeaedf0f5e8dbcec2b5a89b8f827568554b4035291d1004000000000000000004111d2935414c56616b707d858c8f90918f8c867f736e6b6f7b828a8f9299999b9c9c9c9c9b9a9797928d88827c726c655c554b42382e22190f000000000000000000000000000000000000070c101313161818171413110d080200000000000000000000000c1926333f4c5966727f8c99a9b2bdc8c5bebab2acaaa29f9c9c9ea0a8acb1b9c3cdd7e1d9d0c2b7aa9d918477685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37434e58626f7c89949fabb7c3cdd9d3c7bbb0a69b8e8175695e53463a3024190d01000000000000000000000000000000000810191d262d3337393c3f403f3d3a39352f27221b140b0200000000030c141c23282f35393a3d3f403f3d3a38342f27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000070e171f252a30394045464e5355545c606163646565656463615e565855534d46454039332d261d170e050000000000000000000000000000000000000000020c162029333b434c51555c6063656564605d56524d453d352b22180c030000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dccfc3b6aa9e938e8e8e8e8e8e8e8e8e8e8f9092999c9fa6aeb3bcc5cfd6cec6bcb3a99e948a7e7164584e43382b1f0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090e121312100d0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e262e34383f44464b51535659555d6062646465656564646361605c54585553504947433c38332a251f170e0700000000000000000000000000000000000000000000000000000004101c2934404b556875828f9ba8b5c2cedbe8f8fcf9f7f6f7f7eaddd1c4b8ab9f95877b6e6154483b34404a5463707d8a98a2aebac6d3dfecf8f7f6f7f9fcf2e6d9ccbfb3a6998c807366594d402f24180c000000000000000000010d19242f3a444f59616b707a7f828484827f7a726d6460696e767d82868a8c8e8f90908f8e8d8b8885817b766f6a605b534b433930261c100700000000000000000000000000000001070d12181c1f202325252421201d19130e09030000000000000000000a1723303d4a5663707d8996a1adb9bbb9b3aea8a09e9892908f91969da0a7b1bbc5cfdaded1c5b8aca095877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c4854606a7683909ca7b1bcc8d4d8ccc2b9ac9f92867b6e61564c4135291d120700000000000000000000000000000008121a222b2f383f4446494c4d4c4a4745403a332d261d140b020000030c151e262e343a4145474a4c4d4c4a47454039332d261d140b0200000000000000000000000000000000000000000000000000000000000000000000081019202930363e424b5153585f6266666d6e707172727271706e686865615f5753514b443f382f2920170f050000000000000000000000000000000000000008131e28323b454d555d60676d707172706d68615e574f473d342a1e150a0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9ded2c6baafa59e9b9b9b9b9b9b9b9b9b9b9c9d9fa3ababb0babec5ced0cac3bcb4aaa2978f82756c6155463d32271b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171e252a30383f444a5053555c60636669676d6f70717172727171706e6d66686562605b53534e48443d363029201910070000000000000000000000000000000000000000000000000000000c18232f404d596673808c99a6b3bfd0dce7f3fffffffffff6e9ddd0c3b6aa9d908377695e53463a2e3a4653606d7985929fabb8c5d0dbe7f2fefffffffbefe3d7cbbfb4aa978a7d7164574a3e312417070000000000000000000008131e28323e474f5961686d7276777776726e68625b575e616b70767a7d80818283838281807e7b78746e6a625f585049413931271e140a000000000000000000000000000000040c13181d23282c2d303232312e2d29251e1a140d0500000000000000000713202d3a4653606d7884919ea4acafadaaa29f96918b85838384889195a0a9b3bec9d5e0d4c8bcb1a7978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c38434e5863707d8995a0acb8c3ced9d3c7bbafa3998d8074685d5245392f23180c0000000000000000000000000000060f1a242c343d41495053555859595753514b443f382f261d140a00000b151e2730383f444c5254575959595753514b443f382f261d140a00000000000000000000000000000000000000000000000000000000000000000008111a222b323b424650545c60656a6f7376797b7d7e7e7f7e7e7c7a7875726e6964605c545049413b322921170c030000000000000000000000000000000000010d1924303a444d575f676d73797d7e7e7d7a756e6960594f463c30261c110600000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e3d7ccc1b7afaaa8a7a7a7a7a7a7a7a7a8a8aaacafb5b7bbc2cacec8c6bfbab1aaa29892857b6e615a5045342b20160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001091119202930363e424a50545b6063676d707376787a7c7d7e7e7f7f7e7d7d7b797775726f6c65625f58544f46423b332b231910070000000000000000000000000000000000000000000000000000071724313e4a5764717d8a97aab4bfcbd6e3effbfffffff9ede1d4c8bdb1a8998c7f7266574d42362c3845515c6775818e9baab4bfcad6e2effbfffffff9ece0d3c7baaea398887b6e6255483b2f22150800000000000000000000010c16202c353e474f565d6065696a6a6966615e56514d53596163686d707375767676757474716e6967625f58534e443f382f271f150c020000000000000000000000000000050d161d24292e34383a3d3e3f3d3a3935302a251f170f080000000000000006121f2c3844515c66717e8b929d9fa4a19e98928c847e797676777c839197a1adb9c6d2dfd9cebfb2a6998c7f7366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4855616b7783909da8b2bdc8d4d7cbc0b5ab9f92867a6d60554b4034291c1106000000000000000000000000030e18212c363e464e535b606265666664605d55504941382f261b110607121c273039424a50565d606466666563605c55504941382f261b11060000000000000000000000000000000000000000000000000000000000000008111a232c343d444d525a61666d72777c80838688898b8b8c8b8a898785827f7b76716d66605b534c443b33291e150b000000000000000000000000000000000005111d2935414c565f696e7a8085898b8b8a86817b706b60584e42382e23170c00000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6ddd3c9c1bab6b5b4b4b4b4b4b4b4b4b4b5b7b9bbc0c7c7cdc8c3bdb9b4aea7a09892867d6f695e52483e3322190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131b232b323b414650545c60666c7074797c7f828587888a8a8b8b8b8b8a89888684817e7b78736e6a636059524d453d352b22190d03000000000000000000000000000000000000000000000000000815222f3b4855626e7b8898a3aebac7d3e0ecf9fffffff7ebded1c5b8aca095887b6e6255483b312834404b5564707d8a98a2aebac6d3dfecf8fffffff8ecdfd2c5b9ac9f9286796d6053463a2d2013070000000000000000000000040d1a232c353e444c5254595c5d5e5c5954524c4442464f55565e6164666869696969686764615f5755534e47433c332d261d150d030000000000000000000000000000050f171f282f3539404546494b4b4a4746413a3631292119110800000000000004101c2834404a54626c74808a90939a96918c857f79716d67696a6f7a85929eabb8c5d0dbdacec1b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c38444f5964717e8a96a0acb9c4cfdad1c7baaea2988c7f73675c5145382d22170b0000000000000000000000000915202a333e48505860656c6f727372706d67605b534941382d22170b1118232e39424a545c60686d70727372706d67605b534941382d22170b01000000000000000000000000000000000000000000000000000000000006101a232c353e464e565e616c71797e83888c9092999697989898979697928f8b87837e79716c655e564d453b30271d1207000000000000000000000000000000000713202d3946525d686e7b838d9298989899928e857d706a5f544a3f34281c1003000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6e5dbd3ccc6c3c1c1c1c1c1c1c1c1c1c1c2c3c5c7cbd1cbc3bcb8b2acaaa29f9591867d706b60564d42362c22100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a141c252d353d444c525a61666d71787d8185898c8f92979597979898989797969992918e8b8884807b76706b615e574f473d342b1f150b010000000000000000000000000000000000000000000000000713202d3a4653606d7986929facb8c5d2dfebf8fffffff7eaddd0c4b7aa9d9184776a5f53473a2e232e3a4753606d7985929facb8c5d0dbe7f2fefffff6e9ddd0c3b6aa9d908377665c5044382b1f120600000000000000000000000008111a232c323a4145474c4f51514f4c4746413b363e44484c525457595b5c5d5d5c5b5a5855534d4847433c373127221b140b030000000000000000000000000000040d172129313a40454b51535658585754524c46423b332b231910070000000000000c18232e3942505a646e747e83868888847f7a726d67605c58606873808c99aab4bfcad6dccfc2b6a99c8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d4653606c7884919ea9b2bdc9d5d6cabfb4aa9e9185796d60544a3f33281c0f0300000000000000000000020e1a26313c45505a616a6f787c7f807f7d7a726c655b53493f33271e1319232834404a545c666d737a7d7f807f7d79726c655b53493f33271d120700000000000000000000000000000000000000000000000000000000040e18222c353e474f5860696e767e848b9095999c9fa3aba4a5a5a5a4a9a29f9b9a938f8a847e776e685e574d43392e23180c00000000000000000000000000000005121e2a36424d57616d7a8491959fa2aaaba39f9792867c6f665c5044382c1f1206000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6ede5ddd7d2cfcececececececececececfd0d2d3d7cdc3b9b1aca8a09e98928d837c706b60594f443b30241a1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c262e373f474f565e616c71787e84898e9298999c9ea1a9a3a4a4a5a5a4a4aba39f9e9b9896918d88837d756e6960594f463c31271d120700000000000000000000000000000000000000000000000006121f2b3844505c667783909daab6c3d0dde9f6fffffaede1d5c9bdb2a8998d807366574e42372b1f2c3845515d6775828e9baab4bfcad6e2effbfffff4e7dacec1b4a79b8e817468544a3f34281c10030000000000000000000000000008111a20282f35393a3f434444433f3b3936302a33383a4146474a4d4e4f50504f4e4d4b4847423c3a37312b262017110a020000000000000000000000000000010c161f29333b434b51555c6063656564615e56534d453d352b22190c03000000000007121c27303f48525c646c71777a7b7b79736d68605c55514e56626f7c8898a2aebac7d3ddd0c3b7aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2b3844505b66717e8b96a1adb9c5cfdbd0c6b9ada1978b7e71665b5044382b1f160a0000000000000000000006121e2b37424d57616c707c83888b8c8c8a857f776c655b50443a302419202b353d44515c666d7880868a8c8c8c8a857f776c655b5044392f24180c000000000000000000000000000000000000000000000000000000020c16202a343d474f59616a6f7b828a91969da0a7a9acaeb4b1b1b2b1b1b3adabaca49f9c96918b827a6e695e554b4034281c100400000000000000000000000000000714212d3a46535f6974818e96a0a8aeb4b5afa9a2989184786d6053463a2d201307000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6ebe3dbd5d0cdcccbcbcbcbcbcbcccdcfd2d4d8ddd4c8bcb1a7a09d96918c8680796f6a60594f473d32291f12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e384049515960686e757e848b91969b9fa2aaa9abadb3b0b1b1b2b2b1b0b5afacaaa8a8a19e99948f89827b6f6b60584e43392f24180c00000000000000000000000000000000000000000000000003101c28343f4a546875818e9ba8b4c1cedbe7f7fffff8ebded2c5b9aca096887c6f6255493c31261d2935404b5564717d8a98a2aebac6d3dfecf7fffff2e5d8ccbfb2a5998c7f7266594c3f2e23170b000000000000000000000000000000080d161e24292c2d3236373736332e2d2a2521282c3035393a3d40424343434241413e3b3a37312e2b26201b150b060000000000000000000000000000000008131e28313b454d555d60676d707172706d68615e574f473d342b1e150b0000000000000b151e2d36414a525a6164686d6f6e6c66605d56514b454653606d7985929facb8c5d2ded1c4b8ab9e9185786b5e5245382b1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54606d7984919ea9b3becad6d5c9beb3a99d9184786c6053463d32271b0f030000000000000000000814212e3a47535f69707e87909598999998928c81776c60564c4135291e29323d47515b606d78818c929899999897928b81776c60554b4035291d1004000000000000000000000000000000000000000000000000000008131e28323c464f59616b707c858f949ea1a8acb1b6b9babfbebebfbebdbebab8b6afaca8a19e948f847b6e675c5145382c1f130700000000000000000000000000000815222e3b4855616e7b87939fa8b1babfc0bbb3aaa0968b7e7164584b3e3125180b000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6e3d9d1cac4c0bfbebebebebebebfc0c3c6c8ccd2d1c4b8aca095908884807a736d675f584f473d352b20170d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37404a525b626b707a818a91969ea0a8abaeb4b6b8b9bebdbdbebebebebdc0bbb9b7b5b2acaba69f9c948f857d6f6a60554b4035291d10040000000000000000000000000000000000000000000000000b17232e3f4c5966727f8c99a5b2bfcfdae6f2fefff7eaddd1c4b7aa9e9184776a5f54473b2e2018242f3a4753606d7985929facb8c5cfdae6f2fffbeee2d6cabeb3a9968a7d7063574a3d3024170600000000000000000000000000000000040c13191d202126292a2b292621201e19161c1e25292d2e313335363636363534312e2d2b26211f1a150f0a0400000000000000000000000000000000010d19242f3a434d575e676d73797d7e7e7d7a756e6960594f463d30271d12070000000000030c1b242f3841485055565d606262605b54524c45403944505c667784919daab7c4d0ddd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3845515c67727f8c97a2adbac6d0dacfc4b8aca0968a7d7064594f43382c201509000000000000000004101d2935404b55626e7b869299a0a7a6aaa29f938c7f72685d5245392c26303b444f59636d74818e939fa2aaa6a9a29f938b7f72675d5145392c1f130600000000000000000000000000000000000000000000000000030c1925303a444e58616b707d8691979ea6adb2b8bcc3c5c7cbd1cbcbcbcfcac6c5c0bbb9b2ada69f969083796d6053463a2e23180c00000000000000000000000000000c1925323f4c5865727f8b99a4afbac3cacbc5bcb2a89b8f8275685c4f4235291c0f020000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6dbd1c7bfb8b4b2b2b2b2b2b2b2b2b3b6b9bbc0c7d0c3b6aa9d90837b77736d68605d554e463d352b23190e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19232d374049525c636d727d858f939ea0a8acb2b8babec2c5c6c9cfcacbcbcbcad1cbc7c5c4c1bdb9b7b0aba69e9792867c6f675d5145382c1f1306000000000000000000000000000000000000000000000000061724303d4a5763707d8a96a9b3bec9d5e1eefaf9ece0d4c8bcb1a7998c807366584e43372b1f131f2c3945515d6775818e9ba9b3bec9d5e4eef9f9ecdfd3c6baada297877b6e6154483b2e211508000000000000000000000000000000000001080d111314191c1e1e1c191414110e0b1013191d2021242628292a2a2928272522211e1a15120f0a0300000000000000000000000000000000000004111d2935414c565e696e798085898b8b8a86817b706b60584e42392e23180c00000000000009121d262f363e45494c5254555553504a45413a34343f4a546976838f9ca9b6c2cfdcd2c5b8ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2834404b55606d7a85929faab4bfcad6d4c8bdb2a89d9083766b6054483c31261a0e020000000000000006131f2c3845515d6775818e98a2abb1b3b4aea59f92857a6d6054473a2d2e38424d56606b727f8c939ea5aeb4b3b3ada59e9285796d6053473a2d201407000000000000000000000000000000000000000000000000000b151e2935414c565f6a707d869298a1a9b0b9bdc4c8ced2d3d7dcd5d4d5dbd6d3d2ccc8c4bdb9b0a8a0958b7f7265544b4034281c1004000000000000000000000000010e1b2834414e5b6774818e9aabb5c0ccd6d7cec3b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e0d5cabfb5ada8a5a5a5a5a5a5a5a5a6a9acafb6bec2c4b8aca09590837b6f6b6059514b433c342b23191107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212b353f49515b636e737f8792979ea5acb2b9bdc3c6cad0d1d2d5dad7d7d8d8d7dcd7d3d2d1cec9c5c2bbb7b0a9a1989184796d6053473a2d2014060000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a1adb9c6d2dfecf8f8eaddd1c4b8ab9f95887b6e6255483c32261b101d2935404b5563707d8a97a1adb9c7d2dde8f4f8ebded2c5b8ab9f928578695e52463a2d20140700000000000000000000000000000000000000010407070c101111100c080705020002080d111314171a1b1c1d1d1c1b1a181514120e09060200000000000000000000000000000000000000000613202c3945525d686e7b838d9298989899928e857d706a60544b4034281c10040000000000000b141d242c33393a414547484846443f383530282e424f5c6875828f9ba8b5c2cedbd2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515d6773808c98a2aebac7d1d9cec3b7ab9f95897c6f63574e42372b1e1408000000000000000714202d3a4753606d7986929faab4bdbfbebaaea2988b7e7164584b3e31343f4a545e69707d87939fa5afbabfbfbeb9ada1978a7d7063574a3d3024170a00000000000000000000000000000000000000000000000007121d27303946525e686f7c869298a3aab2bbc2c9cfd4d6d3d2cecac8c7c8c9cacdd0d2d4cfc9c2bab1a79d908377665c5145382c1f1306000000000000000000000000020f1c2835424f5b6875828e9ba8b5c1d0dcded1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dcd0c4b8ada39c99989898989898999a9c9fa4acb0b8c2bcb1a79f9590857d706b60584e42382d221711070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333d47515b636d73808b9299a2a9afb9bdc4c8ced3d6dbdededbd8d7d6d5d6d6d7d9dbdddddad5d2cdc7c1bbb3aaa0968b7e7265584b3f2e23170b0000000000000000000000000000000000000000000000000714202d3a46525e697885929eabb8c5d0dce7f2ede2d6cabeb3a99d9083766a5f53473a2a20150c18242f3a4653606d7985929eacb6c0ccd8e2edefe7dccfc2b6a99c8f827669574d42362a1e1205000000000000000000000000000000000000000000000000030404030000000000000000010507070a0d0f1010100f0e0e0b080806020000000000000000000000000000000000000000000005111e2a36424d57606d7a8390959fa2aaaba39f9792867c6f665c5145382c1f1306000000000000020b121a22282d3035393a3c3b3938332d29242835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414b55616d7a86929fabb5c0cbd7d3c7bcb1a79b8f82756a5f53473b3025190e01000000000000091623303c4956636f7c8998a3aebcc6cfcabeb4aa9a8e8174675b4e41333b44505c666e7b859299a4afb7c1cacfcabeb3a9988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000c18232e3942505a616d7a849198a2aab4bcc4cdd5d8d0cac6c5c1bdbcbbbbbcbdc0c3c5c7cbd1ccc3b9ac9f9386796d6053463a2d201307000000000000000000000000010e1b2734414e5a6774818d9aaab4bfcbd5d6cdc4b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d9cdc0b4a89c918c8b8b8b8b8b8b8c8d90939a9fa6b0b8c2b9b1a79f9792867d706a5f544a3f33281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a25313b454f59626d737f8c929fa3abb3bbc1c9ced4d9dfdbd6d3d2cecccac9c9c9cacbccced1d2d4d9dfd8d3cdc5bcb2a89c90837669544a3f34281c1003000000000000000000000000000000000000000000000005121e2a36424d576875828f9baab4bfcbd6e0e5e2dcd3c6baada2978b7e7265584e43372b190e07121f2c3844505c6673808d9aa4afbbc6d1dce2e3ded4c8bcb1a7998c7f7366594c4030251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e6974818e95a0a7aeb4b5afa9a2989184796d6053463a2d20130700000000000000000810171d1e24292c2d2f2f2d2b28221c192835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000000000000020405050505000d18242f3a46525e6874808d99a3afbbc7d2d8cdc2b9ac9f93877b6e62564c41362a1d13070000000000000a1724313d4a5764707d8a97aab4bfced8d0c2b5a89b8f8275685c4f423b454f59606d78829097a1abb5c0c9d6d1c7bdb1a7988c7f7265594c3f3226190c000000000000000000000000000000000000000000000004101c2834404b54616c75818e96a1aab4bcc6cfd6d2ccc5bebab8b4b0afaeafafb1b3b6b9bbc0c5c7c6baaea298877a6d6054473a2d211407000000000000000000000000000b1825323e4b5865717e8b98a3aebac2c9cbc4bbb1a79b8e8275685b4f4235281c0f020000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d8ccbfb2a5998c7f7f7f7f7f7f7f7f8083878f949fa6b0bbc2b9b1a9a29892857c6e665b5044382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202a36424d57606b727f8b919ca4afb5bdc5cdd5d9dfd8d4cfcac6c5c1bfbdbcbcbcbdbebfc1c4c5c8ced2d3d7d6cec4b8ab9f928578665c5044382b1f12060000000000000000000000000000000000000000000000020e1a25303f4b5865727f8b98a3aebac5ced4d9d5d1cabfb4aa9f9285796d6053473c31261a0703101c28343f4a54626e7b87939faab4bfcbd1d5d7d3ccc4b8aca095897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000001040607090b0b0c0c0b0b090707050100000000000000000000000000000000000000000000000000000814212e3b4754616e7b86929fa8b1babfc0bbb3aaa0968b7e7165584b3e3225180b000000000000000000050c1113191d20212222201f1c17111b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000004080a0a0f11121212121207131d2a36414c56616e7b86929facb6c0ccd8d4c8bbafa49a8e8174685e52463a2f24180d0000000000000b1824313e4b5764717e8a97a4b1bdd1d7cfc2b5a99c8f8276695c4f43424d57616b73808d949fa9b3bdc7d2d7cbc0b5ab9f95897c6f6256493c2f231609000000000000000000000000000000000000000000000006131f2c3845515c66707d8a939ea8b2bcc6cfd8d0c7c0bbb3adaba7a4a2a1a2a3a4a7aaacafb5b9bbc0b5ab9f9285796c605346392d201306000000000000000000000000000814212e3b4754616e7a86929fa7b0b9bebfbab2a9a0958a7d7164574a3e3124170b000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a7272727272727273767b828f949fabb7c3c2bbb3aaa2979083786c60544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a46535e69707d87929fa3adbbc0c7cfd7dfdbd6cdc8c5bebab8b5b2b0b0afb0b0b1b3b5b7b8bdc2c5c7cbd1d3c6baaea29886796d6053463a2d2013070000000000000000000000000000000000000000000000000914212d3a4754606d7a86929fa9b3bcc4c8cec9c6bfbaaea2988d8073675d5145392a201509000c17232e3847535f6975828f98a3aebabfc6c9cbc7c2bab0a69d9184776b6054483b2f22150900000000000000000000000000000000000000000000000000000000000000000406080d11131416171819191817161413110d08060401000000000000000000000000000000000000000000000c1825323f4b5865727e8b99a3afbac3cacbc5bcb2a89c8f8276695c4f4336291c10000000000000000000000002080d111314151513120f0b061b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000050b101416171b1d1e1f1f1f1f1f1f1925303a46535e6974818e9aa4afbbc8d4d8ccc0b6ac9f92867a6e61554b4035291c110600000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b6a99c8f8376695c503f4a545e69707d88939fa6b0bbc5d0d6cdc5bbafa3999083766a6054473b2e22150800000000000000000000000000000000000000000000030f1c28333f4a54606d7984919ea5afbac4ced7d0c7beb6afa9a29f9b9795949596979a9d9fa3abacafb5afa4998f8275655b5044372b1f1205000000000000000000000000000714202d3946525e6873808d959fa6adb3b4aea9a1979083786c605346392d201306000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e65656565656667696e78828f9ca7b1bcc8c5bcb3a99f958b7f72665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a44505a616e7b859299a3afb6bfcbd1d9e0d7d0cac2bcb8b3adaba8a5a4a3a2a3a3a4a6a8aaacb2b5b9babfc5c6c5b8ac9f928579665c5044382b1f12060000000000000000000000000000000000000000000000000713202c3945525d6874818e97a1aab2b8bdbcbdb9b4aea49f92867a6e61554b403529180e030006111c2b37424d57616e7b86929fa4aeb4b9bec0bbb9b1a89f948b7e7165594f43382c1f1307000000000000000000000000000000000000000000000000000000000000070c101313191d2021222425252525242321201d191413110d080100000000000000000000000000000000000000000e1a2734414d5a6774808d9aabb5c0ccd6d7cec4b8ab9e9184786b5e5245382b1f1200000000000000000000000000010407070908060603000e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000001080d171c202324282a2b2b2b2b2b2b2b2b2b2a36424d57626e7c87939facb9c2cdd8d2c7baaea3988d8073675d5145382e23170c00000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b6a99c8f8376695c5044505c666e7b85929aa4afb8c2cdd6cfc5bbb0a69f92877c6f62584e43382b1f13060000000000000000000000000000000000000000000006121f2b3844505b66727f8b96a0acb7c1ccd6d2c7beb6aca49f97928e8a898888898a8d9092999c9fa3aba39f93877c6f6253493f33271b0f030000000000000000000000000005111e2a36414c56606d798390949ea1a9aaa39f9791857b6e655b5044372b1f1205000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615858585859575f666f7c8895a0acb8c5cec5bcb1a79e9184786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56626c76828f97a1abb5c0c8d7dcded6cec6bfbab1aba9a29f9b99979696969798999b9ea0a8a9acaeb4b8babbb2a99d9083766a544a3f34281c100300000000000000000000000000000000000000000000000004111d2935414c56616d7a859298a1a9acb1afb2acaba39f928c7f72685e5243392f2418060000000e1a26313c46535f69727f8b929fa3aaadb3b5afaca79f969082776c6053463d32271b0f0300000000000000000000000000000000000000000000000000000003090e12181c1f2024292c2d2f3132323232312f2e2d2a2521201d19130f0a040000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1d0dbdfd2c5b8ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000040c131921282d3031353738383838383838383838313b47535f6a75828f9ba6b0bbc7d3d7cbbfb4aa9f92857a6d60544a3f34281c1003000000000b1824313e4b5764717e8a97a4b1bdcad7cfc3b6a99c908376695d504f59606d78829097a1acb6c0cad4d1c7bdb3a99f948d80736a6054463d32271b0f03000000000000000000000000000000000000000000000613202d394653606c7884919ea8b2bdc9d3d8ccc0b6aca49a938d85817d7c7b7c7c7e8083868b8f92999b99928c7f736a605441382d22170b0000000000000000000000000000010d1925303b45515c676d7a828c9297979898928e857c6f695f53493f33271b0f03000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544c4c4c4c4d545f6a7784919daab7c4d0cec3b9aca1968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e68717e8b949fa9b3bdc7d1dadfd6ccc4bcb4aea79f9d97928e8c8a8989898a8b8c8e9196989c9fa3ababaeaeaaa1968c7f7265594c3f2e23170b00000000000000000000000000000000000000000000000000010d1924303a46525e68707d8691979da0a8a3a8a19e99928c80746d62564c4131281d120700000009151f2a36424d57626d74808c92989ea1a9aba39f9c9590847b6e655b5044372b21160a000000000000000000000000000000000000000000000000000001080d141a1d23282c2d2f35393a3c3e3e3f3f3e3e3c3a3936302d2c29241e1b150e0903000000000000000000000000000000000e1a2734414d5a6774808d9aaab4bfcad5d7cec4b7ab9e9184786b5e5145382b1e1200000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000040d161e242933393c3d4244454545454545454545454545434e58626f7c89949fabb7c3cdd9d1c6baada2978c7f72665c5044382c1f160b000000000b1824313e4b5764717e8a97a4b1bdcad7cfc3b6a99c908376695d4d57616b73808d949fa9b3bec7d2d7cbc0b5aba1979082786d60584e43342b20160a0000000000000000000000000000000000000000000004101c2834404b5563707d8a96a1acbac4cedbd4c8bbafa49a9388817a74716f6e6f707174777a7e82868b8e8c877f736d63584e432f261b110600000000000000000000000000000008141e2834404b555e686d797f85898a8b8986817a6f6a60574d41382d22170b00000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473f3f3f424e586875828e9ba8b5c1ced5c9bdb2a89a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56616d7a85929fa6b0bbc5cfd9e1d6cdc4bab2aaa29f95908a85827f7d7d7c7d7d7e808284878b8f92999b9fa2a39f989184796d6054473a2d211406000000000000000000000000000000000000000000000000000008131e2935414c56606b707d848c919595969596918d867f776c605b51443b301f160c01000000030e1a26313b45515b646e747f868d919795969992908b837b6e695e53493f3327190f0400000000000000000000000000000000000000000000000000040c13191f252a2e34383a3e414547494a4b4c4c4b4a494746413e3a39352f2b26201a140d050000000000000000000000000000000b1825313e4b5864717e8b98a2aebac2c9cbc5bcb1a79c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000020c161f282f353e44494a4e50515252525252525252525252525254606a76828f9ca7b1bcc8d4d6cabeb3a99e9184796d6053463d33271c10030000000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6a99d9083766a5d545e69707d88939fa6b0bbc5d0d5ccc3bbafa39992857b6e665c50463d3222190f040000000000000000000000000000000000000000000006131f2c3845515c6775828e9ba8b2bdccd6d4c8bcb1a79f93887e746d6764626162636467686d71767a7e81807b736d635b52463d321d140a00000000000000000000000000000000020c18232e39434c565e666d72797c7e7e7d7a746d6860584e453c2f261b110600000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b3230414e5b6774818e9aa7b4c1cddacec3b6aa9d9083776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e6873808d97a2adb8c2cdd7e1d9cfc4bbb2a8a198928b837d79757271706f7070717375777b7e82868a8e929899928f867d6f675d5145392c2013060000000000000000000000000000000000000000000000000000020d1925303a444f59606b707a7f84878889888784807b736c655b50493f32291e0d04000000000009141f2a333f49525c646d727b80858789898886837e786e695e574d41382d22170700000000000000000000000000000000000000000000000000060d161e24293136394045464a4c5154555758585858575654524c4b4745413a37322a251f170f0700000000000000000000000000000714212e3a4754616d7a86929fa6b0b9bebfbab3aaa0958b7e7164584b3e3125180b00000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000a141e28313a41454f55575b5d5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5863707d8995a0abb8c4d1dbd0c5b9ada1968a7e7164594f44382c20150a0000000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6a99d9083766a5d5c666e7b85929aa4afb9c2cdd7cec3baafa59f92877d70695e544a3f342b20100700000000000000000000000000000000000000000000000713202d3a4653606d7985929facb8c4cedfd1c4b8ab9f958c7f726c605d555655555657565e6165686d7174736e6a635b524940342b200b02000000000000000000000000000000000007121d27303a444c545c60666d6f7171706d67615e564e463c332a1d140a0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473d3d3e424e586875828e9ba8b5c1cedbd1c4b8ab9e9185786b5e5245382b1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54616e7a86929fa9b3becad4dfdcd1c7bdb3a9a19691867e78716d66666463636364656668696e72767a7e8185898886827b6f6a60554b4135291d110400000000000000000000000000000000000000000000000000000008131e28323d474f5960686d72777a7c7c7b7a78746e69605b53493f372d20170d000000000000030e18212d37404a525b62696e74787b7c7c7b7a76716c665e574d453b2f261b11060000000000000000000000000000000000000000000000020a11171f282f353b42464b515357555d606264656565656462615e565854524c47433c3631292118120b030000000000000000000000000713202d3946525d6873808c949fa6adb3b4aea9a1989183786d6053463a2d20130700000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000006111c26303a434c52596164686a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7783909daab6c3d0ddd5c9bdb2a89d9083776b6055483c31261b0f0100000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6aa9d9083776a5a606d78839097a2acb6c0cbd4d0c5bcb1a89e938c7f726b60574d42382e22190f0000000000000000000000000000000000000000000000000a1723303d4a5663707d8998a2aebac6d3d4c8bcb1a79d9083786c605a514c494849494b4c5254565e61656866625f58524940372e22190f000000000000000000000000000000000000000b151e2a333c454d535960636768686764605d5650483f372d22180b020000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544a4a4a4b4d545f6a7784919daab7c4d0ddd2c5b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6673808d98a2aebbc5cfdce3d7cbc0b5aba19791847c716c65605c5457565656575859575e6165676d7175797c7c7a756e6960584e433a2f24180d01000000000000000000000000000000000000000000000000000000020c16202b353d474f565d6066686d6f706f6d6867625f57504941382d251b0e0500000000000000060f1b252f38404951575e6167696e6f6f6f6d6764605b544d453b33291d140a0000000000000000000000000000000000000000000000020b141b2227313a41454d53555c606467676d6f7171727271716f6d686865605d56534e46423b3328231d150c04000000000000000000000005111d2935414c56606d788290949ea1a9aaa39f9792867c6f665c5044382b1f120600000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000b17232e38424c565d606c707577787878787878787878787878787878787878787e8a97a4b0bdcad7dacfc4b8aca095897d7063584e43372b1d130700000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6aa9d9083776a616c74808d959fa9b3bec7d2d6cabfb4aaa0958e81756d62594f453b30261c10070000000000000000000000000000000000000000000000000d192633404c5966737f8c99aab4bfcad6d1c5b8aca095897c6f665b5045413c3b3c3d3e4146474c5254585b5955534e4640372e251c100700000000000000000000000000000000000006111c262f3c454d575f616b7073757574716d68625a51493f342a20150a0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615757575758575e666f7c8896a0acb8c5d1dfd2c5b8ac9f9285796c5f5246392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985919eaab4bfcdd7e1dfd3c7bbafa39991857b6e6a605b53504a4a4a494a4a4b4d4d5254555d6064666d6f6f6d68625f574e463d31281d13070000000000000000000000000000000000000000000000000000000000040e19232b353d434c5254565d61626362615e5655534d443f382f261b130900000000000000000009131d262f373f454d5354575e61626362605d5553504a423b332921170b0200000000000000000000000000000000000000000000020b141d262d333e434c52575e61676d7174777a7c7d7e7f7f7e7d7c7a7875716d68625f58534d453f342e271e160d0400000000000000000000010d1924303a44515c666d7a828c9297979898928e857d6f6a5f544a3f34281c100300000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000003101c28343f4a545d686d767d81838485858585858585858585858585858585858484919eabb8c4d1dee0d4c8bcb1a79c8f82766a5f53473a2f24180d01000b1824313e4b5764717e8a97a4b1bdcad7d0c3b7aa9d9084776a69707e8a929da7b1bbc5d0d4cac2baaea2989183796d605b51473d33291e150a000000000000000000000000000000000000000000000000030f1b27333f49536975828f9ca8b5c2d0dbd0c3b7aa9d9084776b60544a3f352f2e2f303036393a4146474b4e4d4847433c332e251c130a000000000000000000000000000000000000000b17222d38424d575f696e767d808282817e7a716c635b51463c32261b0f0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e64646464646466696e78828f9ca8b2bdc8d4ded1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b5464707d8a97a1adbcc6d0dfe1d5c9beb3a99f92877d6f695f585049443f3e3d3c3d3d3e404246484c5154545c606362605d56534d453d342b1f160c01000000000000000000000000000000000000000000000000000000000000081119232b313a4145474c525455565554524c4847423c332d261d140a01000000000000000000010b141d252d333b4246484d525456565553514b46443f382f2920170f0500000000000000000000000000000000000000000000020b141d262f383f444f565d60696e74797d818487888a8b8b8b8b8a898785817e7a756f6a615e575145403930281f160d030000000000000000000008131e2834404a545d686d787f85898a8b8986817a6f6a60584e42382e23170b0000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000006121f2b3844505c666d7a828a8e90919191919191919191919191919191919191919197a1adb9c6d2dfe4d9cec3b7ab9f94887c6f62554b4135291d1104000b1824313e4b5764717e8a97a4b1bdcad7d0c3b7aa9d908477666e7b85929fa4aeb9c2cdd6ccc2b8aea49f92867c6e675d51493f352b20170c0300000000000000000000000000000000000000000000000005121f2b3744505b657784919eaab7c4d1d8ccc0b6ac998c7f7266594f42382d24222223252a2d3035393a3e41403b3a37312a211c130a01000000000000000000000000000000000000030f1c28333f4a545f696e7b83898d8e8f8e8b857e726d63584e43372b1c110600000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a7070707070707172757b828f949fabbac3ced9ddd0c3b6aa9d9083776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6675828f9ba9b3beced8e2dbcfc6b9ada1978d80746b60574e443f38342e303030313230363a3b4145474b5153565554524c47423c332b22190d0400000000000000000000000000000000000000000000000000000000000000000811191f282f35393a4146474949484746413b3a373127221b140b020000000000000000000000020b131b212931363a3b4246484949484745403938332d261d170e0500000000000000000000000000000000000000000000000a141d262f384149505961686d747b80858a8e9196959798989898979596918e8b86817c756e69625b514b433931281f150b01000000000000000000020c18232e39424c565d666d72787c7e7e7d7a746e6860584e463c30261c11060000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000713202d3a4653606d78828f949b9d9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a9b2bec9d5e1eadfd3c7bbb0a69a8e8174675d5145392c201306000b1824313e4b5764717e8a97a4b1bdcad7d0c4b7aa9d9184776d78839097a2adb6c0cbd4cfc4bab0a69d928a7e716a5f554b40372d23190e05000000000000000000000000000000000000000000000000000613202d394653606c7986929facb9c5d2d4c8bbafa49a897c6f6356493d2f261c151616191d2025292d2e3235332f2e2b2620180f0a010000000000000000000000000000000000000006121f2b3844505b666e7b8590959a9b9b9a97928b7f726a5f5347382d22170e09030000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d7cabeb1a4978b7e7d7d7d7d7d7d7e7f82868f949ea6b0bbccd5e0dbcec1b5a89b8e8275685b4f4235281c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929facb8c4cfdfe2d6cabeb3a99e91857a6d60594f453c332d28232323232425252a2d2f35393a40454649494745413a37312a2119100700000000000000000000000000000000000000000000000000000000000000000000070d161e24292c3035393a3c3d3c3a3936302e2b262017110a020000000000000000000000000001090f171f252a2d30363a3b3c3c3c3a38352f2b28221c140b05000000000000000000000000000000000000000000000006111b262f38424a535b606b707a81868d92979a9ea0a8a4a4a5a5a4a4a9a19e9b98928e87827b726d605c554b433931271d12070000000000000000000007121c27303a444c545c60666c6f7171706d67615e564e463d342a1e140a000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000005111e2a36414c5665727e8b949fa6aaababababababababababababababababababababadb2bbc4cfdae6efe3d8ccc2b8ac9f92867a6d6054473a2d211407000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7aa9e91847774808d959fa9b3bec8d2d1c6bdb2a89f948d80736c61584e433a2f251b110700000000000000000000000000000000000000000000000000000714212e3a4754616d7a8799a3aebac7d3d2c6b9ac9f93867a6d6053473a2d20140a09080d1113191d202125282622211f1a150e060000000000000000000000000000000000000000000613202d394653606c788390979fa7a8a8a9a29f92877c6f62544a3f33281c1a140e0902000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d8ccbfb3a69b908b8a8a8a8a8a8a8b8c8f92999ea6b0b8c2cddee2d4c8bcb1a7988b7f7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8998a2aebac6d3dfdfd2c6b9ada2978b7e71675d51473d3327221b1717161717181a1e2024292c2e34383a3c3c3a39352f2b261f180f07000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2024292d2e2f302f2e2d2a25211e1a150b060000000000000000000000000000000000050d141a1e21252a2d2e2f302f2d2c29241f1c17110a020000000000000000000000000000000000000000000000050e17222d38414a545b656c737d848d92999fa2a9aaacb2b0b1b2b2b1b0b2adabaaa39f9a938f867f746d675d554b43392f24181007000000000000000000000b151e28323a424a51545b6062646563605d55524d443d342b22180c02000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000714202d3946525e687784919da6b0b6b7b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9bec4cdd6e0ebf4e9e0d3c7baaea2988a7d7063574a3d3024170a000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7aa9e9184777e8a929da7b1bbc5d0d7cbbfb5aba1968f82786d605a50463c31281d130a0000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894abb4bfcbd7d2c5b8ab9f928578675d5145392c20130200000105080d111314181b1a1514120f0903000000000000000000000000000000000000000000000a1724313d4a5764707d8a95a0a9b1b5b5b3ada3998e8175665b5044382d2a251f1a140b060000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dbcfc3b7aca29b9797979797979797999b9fa3abb0b8c1cad4ded9d0c7b8aca095887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99aab4bfcad6e2ded1c5b8ab9e9285796d60554c41342b2117110c06090a0a090e1214191d2023282c2d302f2d2c29241e1a150e06000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113191d202122232221201e1914120e09030000000000000000000000000000000000000003090e12141a1e2021232322201f1d18120f0b06000000000000000000000000000000000000000000000000020d172027333f49535b666c777f8891969fa3abadb3b7b9bdbdbebebebebdbdb9b8b4aeaca49f98928b81796d675d554b40352922190c03000000000000000000030c162028303940444a50535657585653514b46413b322b2219100600000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000814212e3b4754616e7a8795a0acb8c2c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c6c9cfd6dfe8e9e9e9e2d6cabfb4aa998c7f7266594c3f3326190c000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7ab9e91847b85929fa4aeb9c3cdd5cbc3bbaea39991847a6d665c50483e332a1f160c010000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2aebbd1dcd1c4b7ab9e9184786b554b4035291d10040000000000010507070b0e0d080806020000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b1bbc1c2beb5ab9f9285796c6053463f3836302a251f17110a02000000000000000000000d1a2633404d596673808c99a6b3bfccd9dfd4c8beb4aca6a4a3a3a3a3a3a3a4a5a8acaeb5bdc1cad3dcddd2c7beb2a89d9083776a5f53473a2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976828f9ca9b6c2d0dbe1d5c9beb3a99a8d8074675c51433a2f22190f060000000000000205080d1113181c1f20232221201d19130e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d1113141616151413110d08060200000000000000000000000000000000000000000000000205090e1214151616151413100c0703000000000000000000000000000000000000000000000000000008141e29323b44505b656c78818c939aa1a9aeb5babec4c5c8cecbcbcbcbcfc9c5c4bfbab6afaaa29f938e82796d675d514540342b1e150b00000000000000000000040e161e272e34383f4446494b4b4a4745403a363029201910070000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000916222f3c4955626f7c8895a7b1bccbd1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d2d5dadcdcdcdcdcdcdcdad0c0b3a69a8d8073675a4d4034271a0d000b1824313e4b5764717e8a97a4b1bdcad7d1c4b8ab9e9185839098a2aeb6c0cbd4cdc3b9afa59f92877c6f685e544a3f362c21180d04000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbd2ddd0c4b7aa9d9184776a544a3f33281c0f0300000000000001050707080706040000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3cdd0c7baada297877a6e6154504a46423b363028221c140b030000000000000000000d1a2633404d596673808c99a6b3bfccd9e6dad0c6beb7b3b1b0b0b0b0b0b0b1b2b5b9bbbfc6cfd3dcdbd6ccc0b6aca0968b7e7165584e43372b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697885929eabb8c5d1dedfd2c6b9ada197887c6f62554b4031281e1007000000000000000000000104070c10131316161413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050707090a090707050100000000000000000000000000000000000000000000000000000000000205070809090907060400000000000000000000000000000000000000000000000000000000010d1925303b44505a606c77818e939fa4acb2bbbfc6cad0d2d4d9d6d5d4d6dad5d2d0cbc7c0bbb4aea59d948f82796d605b51463d30271d120700000000000000000000040c151c23282d3338393c3e3e3d3a39352f2a251f170e07000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3afbbc7d1cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc9bdb2a8998c7f7366594c403326190d000b1824313e4b5764717e8a97a4b1bdcad7d2c6b9ada197919095a0aab3bec8d2d0c5bbb1a79e938b7f726a60564c42382e241a0f0600000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895acb6c0ccd8d1c5b8ab9e928578665b5044382b1f12060000000306080d111314151413100c07010000000000000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0d6cabeb3a995887b6e62605b54524d46423b332d261d150d0400000000000000000d1a2633404d596673808c99a6b3bfccd9e6e2d8d0c8c3bfbebdbdbdbdbdbdbebfc2c5c7cbd1d8dcd7d0cac0bbafa49a9184796d6053463c31261a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a2adb9c6d2dfded1c5b8ab9e9285786a5f5343392e1f160c00000000000000000000000000000004060709090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56616c737f8c939da5afb6bec4cbd1d6d4d1d0ccc9c8c8c9cbd0d1d4d6d2ccc5bebaafa69f948e81756d63584e42392e23180c0100000000000000000000030b12181c22282b2d2f3132302d2c29241d19140d0500000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c0c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2beb9ada1968a7d7063574a3d3024170a000b1824313e4b5764717e8a97a4b1bdcad7d5c9beb3a9a19e9da0a7b1bcc5d0d6cabeb3a9a0958e81746d62584e443a30261c12080000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b879aa4afbbc8d4d2c5b9ac9f9286796c605346392d20130904060a0f1215191d202122201f1d18120f0a03000000000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0dbd0bbaea295887c736f6c66615e57524d443f382f271f160d04000000000000000d192633404c5966737f8c99a6b2bfcfdadcdcdcdcd4cfcccacacacacacacacaccced2d3d7d9d4d1cbc5bebaaea59f93887d70665c5144382a201509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a9b3becad6e2dbcfc2b5a89c8f827569584e4330271d0d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090a0b0b0c0c0b0a0806060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232d3946525e68707e88939fa5afbbc0c7d0d7d5cec8c5c4bfbcbbbbbcbfc3c4c8cdd5d8d0cac1b8b0a69e938c7f726a60544b4034281d1307000000000000000000000000070c11171c1f202324252320201d18130e08020000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000613202c3945525d687683909ca5afb5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b3ada49e9184796d6053463a2d201307000b1824313e4b5764717e8a97a4b1bdcad7dacfc4bbb3adabaaacb1b9c3ced7d3c6baada2979083796d605b51463d32291e140a000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86939facb9c6d2d3c7bbafa399887b6f6255483c31261a121013131b1f2124292d2e2e2d2c29241d1a150e060000000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0dcd0c3b6a99d90837f7c78736e69615e57504a4239312820160c030000000000000c1825323f4b5865727e8b98a9b3bec9d0cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcecdcec8c7c0bbb4aea49d938c80736b60544a403428180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcfdbe6d9ccbfb2a6998c7f7366594c403226150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608070c10131415171818191918171513120f0b0605010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c38444f59616e7a85929aa4afb7c0ccd2d7cfc9c3bcb8b7b2b0aeaeb0b2b6b8bcc2c9ced6d6cac2b8afa59f92877c6f665c51453a2f24180d0100000000000000000000000000060b0f1213161818171413110d070100000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000004111d2935414c5663707d8a939fa3aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a9a19e928a7e71675c5145382c1f1306000b1824313e4b5764717e8a97a4b1bdcad7e1d6cdc4beb9b8b6b8bcc3cbd5ded2c5b8ab9f92857b6e675d51493f342b20170c020000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677885919eabb8c4d1d7cbc0b5ab988b7e7265574e42372b231f1c1f20262b2e3035393a3b3a38352f2b262018100700000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0ddd1c4b8ab9f95908c8985807b756e69605b544b433a32281e150a000000000000091623303c4956636f7c8997a1adb9bec2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1bfbcb8b5afaaa29f928d81776c60594f42392e231806000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8e3d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050a0f121515181d1f20222424252525252422201f1c1713110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323b4854606b75818e97a1acb6c0c9d8d6cdc5beb9b1acaaa6a3a2a1a3a5a9abb1b9bdc4ccd4d4cac1bbafa3999083796d60554b4035291d1104000000000000000000000000000000030606090b0b0a07060401000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000010d19242f3a4855616b74818d92999b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a97928b80736c61554b4034281c1004000b1824313e4b5764717e8a97a4b1bdcad7e8ded6cfc9c5c4c3c4c8cdd5dddbcec1b4a89b8e81756e635c524a40372e251c130a0100000000000000000000000000000000000000000000000000000000000004101c2934404b55697683909ca9b6c3d2dcd1c2b6a99c8f82766a5f53473e342e2b282c2d31373a3c414647484745403937312a22191107000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0ddd4c7bcb1a79f9d9997928d87817b726c665c554c443a30261c110600000000000713202d3a4653606d7985919ea5aeb3b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b5b4b2b1acaba39f98928b80786d655b50473d30271c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9e2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11151a1f212224292c2d2f303132323232302f2d2b2822201d19130e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f5963707d89939ea9b3bec7d2d6ccc4bbb3ada7a09d9996959596989d9fa7acb2bac3cbd4d7cbc0b5aba0958b7f72675d5145392c20160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000008131e2c38444f59606d7880878c8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8d8a857e736e635a5043392e23180c00000b1824313e4b5764717e8a97a4b1bdcad7e0d6ccc4bdb9b7b9babfc6cfd8dbcfc2b6aa9e938c80736e635c524a40372e251c130a010000000000000000000000000000000000000000000000000000000000000c18232f414d5a6774808d9aacb6c0ccd8d0c3b7ab9f94887b6e625a504440393734383a3c4347484c52545553514b47433c342b23190e050000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0ddd8cdc2b9b1aba9a9a19e99928e867f786d675d564c42382e23170c040000000006121f2c3844505c66727f8b939fa2aaa8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a8a7a6a7a09d99928e867e746d665c53493f352b1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cddae1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e13191d20262b2e2f2f35393a3c3d3e3e3f3f3e3d3b3938332d2d2a251e1a150c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b7683909da5afbbc5d0d7cec4bab2a9a19e95918c898888898c90959ea0a8b1b9c3ccd6d1c7bdb1a79e9285796d6053473d32271b0f030000000000000000000000000000020608080b0c0b09080603000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000001101c28333e44505c666d747b7f8182838383838383838383838383838383838383838383838383838383838382817e7a716c635c52483e30271d120700000b1824313e4b5764717e8a97a4b1bdcad7dacfc4bab2adabacaeb4bcc6cfd8d2c6baafa59c928c80736e635c524a40372e251c140a020000000000000000000000000000000000000000000000000000000000071824313e4b5764717e8a9aa4afbbc8d4d3c7bbb0a69b8f82756c6159514a4644404546494e5355565d6161605d55534e463d352b20170d0200000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0dcded4cbc2bcb8b6b3adaba39f98928b81796d685d544a3f342820150a0000000003101c28343f4a54626d74818c92989a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a999795918c87817b716c605c544a41382d23190c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1cddae0d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e252a2d31373a3c3f404547484a4b4b4c4c4b4a4846443f3a3936302b261f18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55636f7c89959fabb7c1cdd7d0c5bcb2a8a197928a847f7d7b7b7d7f838991969fa7b1bac4ced9cfc3b9ada1978b7f7265594f43382c1f130700000000000000000000000003090e1214151819181615130f0a0400000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000b162128343f4a545c60696e72757676767676767676767676767676767676767676767676767676767676767574716d67625a524a40362c1e150b0000000b1824313e4b5764717e8a97a4b1bdcad7d5c9bdb2a8a19e9fa3aab4bcc6cfd8cbc1b7aea49c928c80736e635c524a40372e261c140a01000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87939facb9c6d0d8ccc2b6aa9e938a7e716b605c5453504b515355585f6267686d6e6d67625f584f473d32291e140800000000000000000000000000000004111e2b3744515e6a7784919daab7c4cbd1d1d2d5cdc7c4c3beb9b5afaaa29f938f827a6d665c50443c32261b0f03000000000c17232e3842515b606c777f858b8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c8a8784807b746e69625a504a42382f261b11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1cedae0d3c6baada093877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171f252a3036393c4347484c4b515355575758585858575553504a4746413a373129241d150d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6775818e9ba7b1bcc9d3d6cabfb4aaa19691857e7773706f6e7072767d8490959fa8b2bdc9d5d5c9beb3a99d9184776b6054483b2f22150800000000000000000000050b10151a1e212224252522211f1b15110c060000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000050b17232e38424a50575f626668696969696969696969696969696969696969696969696969696969696969686764605d55504840382e241a0c030000000b1824313e4b5764717e8a97a4b1bdcad7d2c5b9ada196919298a3aab4bdc6cfd3c9bfb6aea49c928c80736e635c524a40382e261c130a000000000000000000000000000000000000000000000000000000000714202d3946525e687683909daab4bfcad6d2c6bbb0a69f92867d726d6662605b545c6062666a6f73777a7b7a756f6a60594f443b3025190e02000000000000000000000000000003101d2a3643505d697683909cacb6babfc2c5c6c9cfd4d1cfc9c7c0bbb4aea59e948f82786d60584e43372b20150a0000000006111c26303f44505b656c727a7e818283838383838383838383838383838383828282817f7d7b77736e69615e5750443f3830261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1cddae1d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1117202930363a4146474e535558555d60626364656565656362605b5454524c47423c352f271f180f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c2cddfd3c6baaea29891847b716c6663626263656b7079839096a0acb9c1ccd7cfc5b8aca096897c6f6356493c2f24190d010000000000000000080f161c1f262b2e2f3132312f2e2b26201d170c0700000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000006111c2630383f444d5355595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a5754514c433f362e261c1208000000000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7ab9e9184869298a3abb4bdc6cfd1c8bfb6aea49c928c80736e635c524a40382e251c120800000000000000000000000000000000000000000000000000000005111e2a36414d5665727f8c98a2aebac6d0d7ccc1baaea39892867f79726e6c656a666d6f72777c8084878886827c706b60564c41362a1e11050000000000000000000000010406070e1b2834414e5b6774818e9aa4acaeb4b5b8b9bec5c8ccd2d5d1cbc5bebaafa69f948d80736a5f53473c31261a0f02000000000a151e27333f49535b60686d717475767676767676767676767676767676767675757473706e6966615e57524d453f342e261e140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cddae1d5c8bbaea295887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b2227323b42464c5254585f626568676d6f707171727271706e6c6665615e56534d454039312a211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a98a3aebac7d3d5c9bdb2a89f92867c6e69615a565555565960676d7a84919ea6b0bbc6d2d4c8bdb2a8998d807366564c4135291d1104000000000000010a111a21272c31373a3b3e3f3e3c3b37322d282218120b030000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000a141e262e343c4247484c4e4f50505050505050505050505050505050505050505050505050505050504f4e4b4745413a312d241c130a00000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f827d869299a3abb4bdc6cfd1c8bfb6aea49c928c80736e635c524a40372e241a0e050000000000000000000000000000000000000000000000000000020e1925303b4754606d7a86929faab4bfcbd6d7cbbfb4aaa398928c847f7b79787778797c7f83888d919699928f867d70685e5246392d20140700000000000000000001070d111314181b232f3c4956626f7c87939b9fa3aaa8abadb3b9bbc0c7d0d6d7d0cac1b8b0a69f92877c6f62584e43372b1f120600000000030c17222d38414950565d6065676969696969696969696969696969696969696968676664615e5754534d46423b3328231c140c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9e2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333f444d52565e61656a6f7275787a7b7d7e7e7f7f7e7d7b7976726d68625f57514b433c332b231910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b556874818e9baab4bfcbd7d2c5b9aca0968c7f726a5f57504a48484a4f555e68707d89939eaab6c4cfd9cec3b7aa9d908477685d5245392c2013060000000000010a131c232b33383c4247484b4c4b4947433c393428231c150c0300000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000020c141c232831373a3b3f4243434343434343434343434343434343434343434343434343434343434342413e3a39352f281f1b120a0100000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f82767d879299a3abb5bdc6cfd1c8bfb6aea49c928c80736e635c524940362c20170c0200000000000000000000000000000000000000000000000000000814202c3945525d6874818e98a3aebac3cfd8d1c6bcb4aaa39f96918c888685848586888c90959a9ea0a39f9892857a6e6154473b2e23180c0000000000000000040c13181d20202528292e3b4854606a737f898f9298999b9ea1a9acafb6bec4cdd6dbd6cac2bbafa3998f82756a5f53473a2e211409000000000006111b262f383f444c5254585b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b595754524d4846423b3630292117110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfcbd8e3d7cabdb0a4978a7d7164574a3e3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f4450565e61686d72777b7f828486888a8a8b8b8b8b8a8885827f7a756e69605d554e463d352b22190e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677784919daab7c4d1dcd1c4b7aa9e9184786d60574e453e3c3b3d434c56606b75828f9ba9b2bdc9d5d2c6b9ac9f93867a6d6054473a2d21140700000000000a131c252e353d44484d535557585855534e49453e342e271e150b00000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000020a11171f262b2e2f33353636363636363636363636363636363636363636363636363636363636363534312d2c29241e160d09000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276707d879299a3abb5bdc7cfd1c8bfb6aea49c928c80736e635b52483e32291e1308000000000000000000000000000000000000000000000000000004111d2935414c56616e7b86929fa8b2bdc6d1d8cfc6bcb4aea8a09d9999929191919299999da0a7aaacafaaa1978d807366544a4034281c1004000000000000080d161d24292c2d3235363438434e58636d737d8286898c8f92979b9fa4acb2bbc4ced7dcd7cbc0b5ab9e94887b6e6255483b31251a0e0200000000000a141d262d333a4145474b4e4f505050505050505050505050505050504f4f4f4e4c4a4846423b3a36312a251f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0bdcfdae5d9ccc0b3a6998d8073665a4d4032271b0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384149505a62696e747a7f84888b8f91939a9697989898989698928f8b86817b736d675f584f473d342b20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86939facb9c6d2d5c9bdb2a8998c7f72665c50453c332f2f313a444f5963707d8996a1adb9c5d2d4c8bbafa49a897d706356493d3023160a0000000006101c252e3740474f54575f62646564625f58555044403930271c1207000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000060b151a1e2122262829292929292929292929292929292929292929292929292929292929292929272421201d19130c0400000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f82766b707e879299a3abb5bdc7cfd1c8bfb6aea49c928d80736d635a50443a3025190d0100000000000000000000000000000000000000000000000000010d1924303a46525e6973808d96a0abb5bfcbd7d8cfc6bfbab2acaaaba39f9e9d9e9fa3abaaacb1b7b9bbb3a99d918477665c5144382c1f1206000000000008111a1f282f35393a3e4142413e3d46515b636b7075797c7f8285898e939aa1a9b2bcc6d0dbdcd1c7bdb0a69a8d807367574d42362a1e12050000000000020b141b22273035393a3e41424343434343434343434343434343434343424241403d3b3a36302d2a251f1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a8b2bdc9d5e1dccfc2b5a99c8f827669594f43382c1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606d717b81868c9196989b9e9fa4aca4a4a5a5a4aaa29f9c99928e8780796e6a60594f463c32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c899aa4afbbc8d4d2c5b9ada196877b6e61544a3f332a222228323d4653606c7884919eabb8c4d1d8ccc0b6ac988b7f7265584c3f3225190c000000030e18222e37404952596063696e7172716f6a64615a514a42392e23180c050000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000003090e121415191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b181413110d08010000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276696c707e879299a3abb5bdc7cfd1c8bfb6aea49c928c7f736c61564c41362a1d1105000000000000000000000000000000000000000000000000000008131e2a36424d57606d79849199a3aebbc0c9d6d8d1cbc3bdb8b7b5afacabaaabacafb5b6b8bcc3c5c5b8aca09686796d6053463a2d2013070000000008111a232c313a4045474b4e4f4e4b46454951596063676d707275787c81889196a1aab4bfcad6e3d9cfc1b7aa9e918477695e53463a2d211407000000000000020a11171e24292c2d323436363636363636363636363636363636363636353433312e2d2a25211e1a140e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8796a1adb9c5d2dfded1c5b8ab9e9285786b605448392f24180c02000000000000000000000000000004060707060603000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c747e868d92999da0a8a8abacafb6b1b1b2b2b1b4aeacaba39f99928d837c6f6b60584e443a3025190d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97acb6c0ccd8d1c4b7ab9e918478695e5242382e211816202b3744505b6575828e9ba8b5c1ceddd2c0b3a69a8d8073675a4d4034271a0d0000000a15202a343f49525c636b70777b7e7f7e7c77716c605c544a40342822170c0000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000020608080c0f1010101010101010101010101010101010101010101010101010101010100f0e0b0706040100000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f827669616c707e879299a3abb5bdc7cfd1c8bfb6aea49c928a7e71685e5246392d2013070000000000000000000000000000000000000000000000000000020e1a25303b45515d676f7c87929fa4aeb7c0cad0d7d7cec8c5c4c0bbb9b8b7b8b9bbc0c3c4c8cdd2c7bbafa399877a6d6154473a2e211407000000040e1a232c353d434b5153585b5c5b5753514b474f54555d606366656c6f757c849198a2aebac6d3dfded2c5b9aca096877b6e6154483b2e2115080000000000000000060b13191d20212528292929292929292929292929292929292929292928262421201e1a14120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687884919eabb7c4d1dedfd2c6b9ada197897c6f63554b4035291e1308000000000000000000000206070c1013141413120f0b06000000000000000000000000000000000000000000000000000006131f2b37434e58606c77818b92989fa3abacb2b5b8b9bbc0bdbebebebebfbab8b4aeaba39f9591857d6f6a60564c41362a20160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bed2ddcec2b5a89b8f827568574d4230261c0f0f1b27333f495365727f8c98a5b2bfcbd8cec1b5a89b8e8275685b4f4235281c0f0000030f1b26313c46515b636e737d83888a8b8b88847e746d665c51443e33281c110300000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695a616c717e879299a3abb5bdc7cfd1c8bfb6ada49f92857a6d6154473a2e21140700000000000000000000000000000000000000000000000000000009141f2935404b55606a727f8b929da5aebabec5ced3d8d4d1d1cbc7c5c4c4c4c5c7cbd1d1d4d4ccc3b9ac9f9286796d6053463a2d2013070000020c16202c353e474f555d606568696764605c554f47484b515356535b60636b6f7c86929facb8c5d2dde1d4c8bdb2a8978a7d7064574a3d3124170a00000000000000000002080d111314181b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1c1b19171514120e090502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c566875828f9ba8b5c2cfdae2d6cabeb3a99a8e8174675d51453a30251910070000000000000306090f1214181c1f2021201f1c17110e090300000000000000000000000000000000000000000000000815212e3b47535f6a73808d939fa2aaaeb4b8bdc2c4c6c8ccd2cbcbcbd0cac6c5bfbab5afa7a09792867c6f685e52463d32271b0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9cdc0b3a79a8d8074675a4d413027140a0b17222d3e4b5764717e8a97a4b1bdcad7cfc2b5a89c8f8275695c4f4236291c0f000006121f2b37434e58636d738089909597989796918a81786d605a5045392d20150900000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000040607090b0b0c0c0b090707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c5a616c717e879299a3abb5bdc7cfd1c8bfbaaea2988c807366594d4033261a0d000000000000000000000000000000000000000000000000000000020c18242f39434e58626d74808d929ca4aeb3bcc1c7cdd1d4d9d7d3d2d1d0d1d2d4d7d4d2cdc8c1bab1a79d908376665c5044382b1f1206000008131e28323e474f5961676d71747574716d67615951494045474949505359606a73808d99abb5c0ccd7e3d9cebfb2a5998c7f7266594c3f3326190c0000000000000000000000010407070b0e0f10101010101010101010101010101010100f0f0e0d0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303f4c5966727f8c99a8b2bdc9d5e1dacfc5b8ab9f9285796d60564c41362a2218120c070706070a0f12151a1f2123292c2d2e2d2b28221c1a140e06000000000000000000000000000000000000000000000916222f3c4955626f7c87939fa5aeb4babfc6c8ced1d2d2cfcbc9c7c7c8cbd1d1cbc7c0bbb1a9a29891857a6d61584e43382b1e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9ccbfb3a6998c807366594d4033261a0d061723303d4a5663707d8996a3b0bcc9d6cfc2b6a99c8f8376695c504336291d1000000815212e3a47535f6a727f8c929da0a7a5a8a09e938e81746c6155493c31261a0e02000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4c1cddad2c5b8ac9f9285796c5f5246392c1f13000000000000000000000000000000000000000000000205070c101314151718191818161413110d0805020000000306070a0c0d0c090806030000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c505a616c717e879299a3abb5bdc6cfd6cabeb3aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000000000000000000007121d27313d46515b606c77808d929fa2aab0b7bbc2c5c8cececfcfd0cfcfced2ccc8c6c2bcb8afa89f958b7e7265544a3f34281c100300010d1925303a444f59616b70797e8182817e79706b625b51493f3a3d3f44464f58626f7c8899a4afbbc7d4e0dacdc0b4a79a8d8174675a4e4134271b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000816222f3c4955626f7c8896a1adb9c5d2dfdfd3c6baada2978b7f72685e52463e3428231c1814131313151b1f21262b2e2f34383a3a3938332d2a261f180f070000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa4afbabec5cbd1d4d1cbc7c5c2bfbcbababbbec4c6c9cfcbc3bbb3aaa1978e81756a6054473a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9ccbfb2a6998c7f7366594c40332619070a1623303d495663707c8996a3afbcc9d6cfc3b6a99c908376695d5043362a1d100004101c2834404a54626f7c87939fa4acb1b2b2aca59d938a7e7164574e42372b1e1206000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0ced6d1c4b8ab9e9185786b5e5245382b1f12000000000000000000000000000000000000000002090e1114181c1f202224252525252321201d1914120e09060b10121317191a191615130f0a04000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f505a616c717e879299a3abb5bdc5ced0c4b7ab9e9184786b5e5145382b1e1205000000000000000000000000000000000000000000000000000000010b151f2b343f44505b656c77808a92989ea6abb0b7b8bdbfc1c2c2c3c3c2c1c0c0bbb9b7b1aba59e969083786d6053463a2e23170b000005111d2935414c56616b707d858b8e8f8e8a847d726d625b51473e3433373d4653606c7986939facb9c6d2dfdbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b47535f6a7884919eabb7c3cdd8e2d6cabeb3a99f92857a6d61594f463d342e282321201f2022262b2e31373a3b4045474746443f3836312a211911070000000000000000000000000000000000000000111e2a3744515d6a7784909dacb6c0cad0d4cfc9c7c0bbb9b5b2afaeadaeb1b8b9bec4cdcdc5bcb2a99e93897c6f62564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9cdc0b3a69a8d8073675a4d402f24180c0a1724313d4a5764707d8a97a3b0bdcad6cfc2b5a99c8f8276695c4f4336291c100006121f2c3844515c6675818e99a4afb8bcbebdb9afa59d9184776a5f53473a2e211408000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a6b0bcc5cac8c0b6ac9d9083766a5d5043372a1d1000000000000000000000000000000000000003090f141a1e2023292c2d2f3132323231302d2c2924201e1a1411171c1f202326262522221f1b150f0a0400000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f48505a616c717e879299a3abb4bcc3c4bfb4ab9d9083776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000030d192227333f49535b656c737e858f949c9fa6aaacb2b2b4b5b6b6b6b5b5b3b6afacaaa79f9d938f847b6e665c5044382c1c110600000713202d3946525e68707d8791979b9c9a9691887f726d62594f463e372f3845515d677885929fabb8c5d2dedbcfc2b5a89c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e586774808d9aa7b1bcc8d4e0dbd0c5baada2978e81746b61584f444039342e2e2d2c2d2f32373b3c4347484b51535453504a46423b332b23190f0500000000000000000000000000000000000000121e2b3845515e6b7884919eabb7c4d2ccc8c4bdb9b5afaca9a5a3a1a1a1a5abadb2bbc4cfcec4bbafa59b8e8275685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfcbd8cec1b4a79b8e817468554b4035291d100b1425323e4b5865717e8b98a4b1becbd7cec2b5a89b8f8275685c4f4235291c0f000713202d3a4653606d7985929fabb5c0c8cdc9c0b8aca095887b6e6255483b2f221508000000000000000000000000000000000000000000000915222f3c4855626f7c88949faab4babebbb9afa49a8d8073675a4d4034271a0d0000000000000000000000000000000001070d151a1f252a2d2f34383a3c3e3e3f3f3e3c3a3935302d2a251f1c23282b2d303333322f2e2b26201b150f07000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4348505a616c717e879299a2aab1b7b7b4aea3998d8073675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000071017222d384149535b606c717b82898f94999da0a8a6a7a8a9a9a9a9a8a7aca49f9d9995908a827a6e695e544a3f34281c0a0000000714212e3a4754616d7a859299a1a9a8a8a19a938b7f726b615850474241424a54606d7a86939facb9c6d2dfdbcfc2b5a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323c4955626f7c88959fabb8c4ced9e1d6cabeb3a99f93887d706a6059514a45403c3a3a383a3b3e4347484e5355555c6061605b54534d453d352b21170d03000000000000000000000000000000000000111e2a3744515d6a7784909daab7c1c7c0bbb9b2adaba39f9c9896949495989ea1a9b2bdc6d1cdc1b9ac9f92867a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1becfdad0c3b6aa9d908377675d5145382c1f15141d2a36424d576774808d9aa7b3c0cddacdc1b4a79a8e8174675b4e4134281b0e000815222e3b4855616e7b8898a2aebdc7d2d9d4c8bcb1a7978a7d7164574a3e3124170b000000000000000000000000000000000000000000000815212e3a47535f6a76839098a2aaaeb3afaca59f93877c6e6255483b2f221508000000000000000000000000000000040c121820262b30363a3b404547484a4b4c4b4b494745413b3a363029262e34383a3d3f403f3c3b37322b27201910080000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f433e48505a616c717e8792989fa7aaaaaaa29f92867b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000006111b262f384149505a61696e757d82888d919697999b9c9c9d9c9c9b9a989a93918d88837d756d685e564d42382e23170c0000000d192633404c5966737f8c97a2abb3b5b2aca49f93877d706a615a534d4d4e545c66707d8a9aa4afbbc8d4e0dbcec1b4a89b8e8175685b4e4235281b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15222e3b4754606a7783909da8b2bdc9d5e1dbcfc5bbafa49a92867c6f6b605c54514b4947464546484a4e5355585f6266676d6d6c66615f574f473d33291f14090000000000000000000000000000000000000e1b2834414e5b6774818e9aa6b0bab8b6afaca8a19e99928f8c898787888b9197a1abb5bfcbd3c7bbaea3998a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a9b3bec9d5d2c5b9ac9f9286796d6053473d31271f1f262f3846525e697683909da9b6c3d0d9ccbfb2a6998c7f7366594c403326190d000916222f3c4955626f7c8895a9b3bec9d5e2d9cebeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000006121f2b37434e58626f7c8692989fa2aaa49f9d938d80746a5f53473a2e2114080000000000000000000000000000060d161d242931373b4246474b51535557585858585654524c4846423b3530383f44464a4c4d4c4947433c37322b221a110800000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f43363e48505a616c717d8690959b9d9d9c98928b7f72695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000a141d262f383f4450575e616b70767b8084878a8c8e8f8f90908f8e8d8b8a8684807c76706b615d564d443b30261c1106000000111d2a3744505d6a7783909da9b3bdc2beb6afa49992867d706c625f575a585f666d7883909dacb6c0ccd8e4dacdc0b4a79a8d8074675a4e4134271b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5864717e8b96a0acb9c2cfd8e1d8ccc0b6aca29892857d726d66605c5556545351535557585f62666a6e72767a7a79756e6960594f453b31251a0e0200000000000000000000000000000000000a1623303d495663707d89949ea7aeacaca49f9c96918c86827f7c7b7a7b7e859199a3aebbc7d3cbbfb5ab998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a1adb9c6d2d3c7bbafa3998a7d7164594f4339302b2b2f38414d56616e7b86929facb9c5d2d6cabeb3a9978a7e7164574b3e3124180b000815212e3b4854616e7b8797a1adb9c6d0d8d4c8bcb1a7978a7d7064574a3d3124170a00000000000000000000000000000000000000000000030f1b26313c47545f6a707d868e9298969a93908a81786d60584e43372b1f1206000000000000000000000000000810181f282f353c43474d5254555c6062646565656463605d5654524d46413e424a50535659595855544e47433d342c231a0f05000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336363e48505a616b707c838a8e90918f8c867f726d62574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000020b141d262d333e454d525960636a6e73777a7d7f81828383838282807f7d7a77736f6a636159524c443b32291e150a00000000121f2c3945525f6c7885929fabb8c5cfc7c0b5aba29892867e756e696867686a6e78808e95a0abbec7d2dde3d7cbc0b5ab988c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323c4653606d7984919ea7b1bcc6d1dcddd2c7beb3aaa29792877f79716d67656261605c606264676a6f73777b7f83868785817b706b60574d42362a1e130800000000000000000000000000000000000916222f3b4854606b75828f959fa2a09d9a938f8a847f7a7672706e6e6e727c86929facb9c5d2d1c1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697885929eabb8c5d1d7cbc0b5ab9c8f82766b60554b423b38373a4149535e68737f8c99a3afbbc7d4d3c6baada297887b6e6255483b2f221508000613202d394653606c7985929eaab4bfc7ccc8c0b8aba095887b6e6155483b2e22150800000000000000000000000000000000000000000000000a15202b37434e58616b707b818588898886837e756d665c51463c31261a0f0200000000000000000000000008111a222a313940454e53575e6166676d6f71717272716f6d6866615e57524c4750545c6063666665625f58544e463e352c21170d030000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f43362c363e485059606a6f787d818484827f7b726d625b51453b31261a0e02000000000000000000000000000000000000000000000000000000000000000000020b141b2227333b42464f54585f6266686e7173747576767676757472706d6866625f58554f46413a322920170c0300000000131f2c3946525f6c7985929facb8c5d2d2c7bdb4aaa298928a817b77747474777b828e939da7b1bcd0d9e4e0d3c7bbafa399897d7063564a3d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3844515c66717e8a959faab4bfcbd7ded9d0c5bcb3a9a299928c847e7975716f6d6d676d6e7174777c8084888c909298928e867d70695e53463a3025190d01000000000000000000000000000000000713202c38444f59616d7a838d929896918c87827d79726e6865636161626a7783909daab6c3d0cfc2b6a99c8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576975828f9ca8b5c2cdd8d1c7b7ab9f94897d70675c544d464444464c525b656e7b85929fabb5c0cbd7d2c5b8ab9f9285786c605346392d2013060006121f2b3844505b6674818d98a2aeb5bbc0bcb8aea49d908377695f53463a2d2114070000000000000000000000000000000000000000000000040f1b26323c464f5961696e74797b7c7c7a77716c605c544b40342a20150a00000000000000000000000008121a232c343c434b51585f62696e7276797c7d7e7f7e7e7c7a77736e69615e56515a61666d707273726f6a6260584f473e33291f14090000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336292c363e474f585f666c7075777776736e68625b51493f33291f14090000000000000000000000000000000000000000000000000000000000000000000000020a1117212930363d44484e5355565e6164666869696a696968676563615d5655534e48443e35302820170e050000000000121f2b3845525e6b7885919eabb8c4d1d9d0c5bcb4aaa29f938e888381808183878f949da5afb9c3cde2eadfd2c5b9ac9f92867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54606c78839098a3aebac2ccd5dfd7cec5bcb3aba39f96918a85817e7c7a7979797b7d8184888c9195999c9fa29f9892857b6e61564c41362a1d11050000000000000000000000000000000004101b27323d46525e686d798085888784807b76716d66615e5656565d606a7683909da9b6c3d0d0c3b6a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303f4c5865727f8b98a7b1bcc8d4d3c7bbb0a69d9183796d665e5753505053565d606c77818f97a2adbdc7d1d6cbbfb4aa9b8f8275655b5044372b1f120500030f1c28333f4a54616e7b86929fa3abafb6b1aca49d92897d7063574d42362a1e12050000000000000000000000000000000000000000000000000a15202a343e474f575e61666d6e6f6f6d6864615a514b42392e22180e03000000000000000000000008111a242c353e464e555d606a6e757b7f8386888a8b8b8b8b8986837f7b746d68605b626c70787d7f807f7c776f6a61594f453b31251a0e0000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f433629242c353d464e545b6064686a6a6966615e5651483f372d21170d0300000000000000000000000000000000000000000000000000000000000000000000000000060f171f252a32383c4347484d525457595b5c5c5d5d5c5b5a585754524c4847433c383329241e160e05000000000000101d2a3643505d697683909ca9b6c3ced9d7cec5bcb4aea59e9b95908e8d8e90939a9fa6afb7c0cbd5dfe1d6cabeb3a99c908376675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3944505b656f7c86929fa6b0bac3cdd6dfd7cec5bdb5afa8a09d97928e8b8987868686888a8d9196999da0a8a9acaeaaa2988e8175685e5246392d20130700000000000000000000000000000000000b16212935414c565e676d74797b7b77736e6964605c5453585f62686d727c87939facb9c6d2cfc2b6a99c8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222e3b4855616e7b88959fabb8c4cfd8ccc2b8aca0958f82786e6962605b5b6062686d74808d939ea9b3becfd9d3c7baaea3988b7e716453493f33271b0f0300000b17222d3846525e69717e8a92999fa4aca7a09d928d80736b6155453b31261a0e02000000000000000000000000000000000000000000000000040e19222c353e454d53545c60626362615e56555045403930271d0f060000000000000000000000060f1a232c363e474f585f676d747b82868c90929997989898979a93908c86817a706b626d727d84898c8c8b88837c706b61574d42362a1c120700000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291a232c343c424a5053575b5d5e5c5954524d443f362d251b0f06000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a21272c31373a3b4146474a4c4e4f5050504f4f4d4c4a4746413c3a37312c282119130c04000000000000000e1a2734414d5a6774808d9aa8b2bdc8d4ded7cec5bfbaafaaa7a09d9b9a9b9d9fa4acb0b8c0c9d2dde3d8cfc6b9ada1978b7e7165554b4035291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27333f49535f6a727f8c949fa8b2bbc5cdd6dfd7cfc7c0bbb2aca9a19e9b98959499929995979a9ea0a8aaacb1b6b9bab3aa9f92867a6d6154473a2e2114070000000000000000000000000000000000040d1925303a444c555d60676d6e6e6966615f5753545c60646a6f747a7f859299a4afbbc7d4cec1b4a89b8e8175685b4e4235281b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697683909da9b3bec9d5d4c8bdb1a89e948f827b736f6c66656c6e737a818d929da5afbcc5d0d8cfc5b8ac9f92867a6d6154473a2d22170b00000006111c2a36424d57616c717f878f939a989795908a80786c60594f4433291f1409000000000000000000000000000000000000000000000000000007101a232c333b42464a505355565554524c49453e342e271e150b0000000000000000000000030d18212b353e485059616a6f7980878e92999c9fa3aba4a5a5aca49f9d99928d857d716c727f8891969999989590867d70695e5346392e23180c00000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c1a222a2f383f44464a4f5151504c4746413b322d241b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e161b20262b2e3036393b3e4041424343434342413f3d3a3935302e2b26201c160d080200000000000000000a1623303d495663707c8996a0acb8c2ccd6dfd7d0cac1bab6b1acaaa7a7a7aaacafb6bec2cad2dbe4dcd1c6bdb1a79e92857a6d6053473a2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414e58606d78828f96a0a9b3bbc4cdd4ddd9d1cbc3bdb8b3adaba8a4a2a0a39fa3aba4a7aaacb2b7b8bdc3c5c5bbafa3998a7d7064574a3d3124170a00000000000000000000000000000000000008131e28323a434c51555c6062615e575554575e61666d71767c81868b9297a2abb5c0ccd4c8bcb1a7988c7f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5764717e8b97a1adb9c3d0d9cec3bab0a69e948f86807c797878797b80848e939da4aeb7c1ced7d1c6bdafa59b8e8174685d5246392d1b1106000000000e1a25303b45505a626d717c82878a8b8a88837d746c665b50473d3321180d0300000000000000000000000000000000000000000000000000000008111a21293136383f44464849494746413a393428231d150c0300000000000000000000010b151f2a333d47505a616b707c848d92999fa3abacafb5b1b2b1b6afacaba39f9791877e727e8a939aa1a8a6a79f9892857b6e61544a4034281c1004000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10181d262d3338393d42444443403b39363029201b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10151a1f21252a2d2e3133353636373636353432302e2d2924211f1b15100b05000000000000000000000613202d394653606c7884919da6b0bac4cdd6dedbd6cbc6c3bcb8b7b4b3b4b7b9bbc0c7d0d3dce2d9d2cbbfb5aba0958c7f72675d5145392c1d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3c44505c666d7a849197a1a9b2bbc2cbd4d9dcd7cec8c5beb9b8b4b1afb5afacafb5b0b4b7b9bdc4c5c8ced2cbc0b5ab988b7e7265584b3f3225180c000000000000000000000000000000000000020c162028313a41454b515355545255596063696e73797e83888e92989fa2a9b3bdc7d2cdc4b8aca095887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b4753606d7985919ea8b2bdc7d2d5ccc1b8b0a69f98928d8886858486888c91979ea5aeb6c0c9d3d7cbbfb5ab9e93887c6f62564c4135291d0a000000000009141f29333e48505a626a6f767b7d7e7d7b77706b605b544a3f352c210f060000000000000000000000000000000000000000000000000000000000080f171f252a2e34383a3b3c3c3a3935302d282218120b03000000000000000000000007121d27313c454f59616c717d8691969fa3abafb5b9bbc0bebebec0bbb9b5aea9a19992877e85929ea4acb2b3b1aaa2978e8174665c5144382c1f1206000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100b141c22282b2d3135373736332e2d2a251f170e090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f1214191e202124262829292a2a292827252421201d1915120f0a0400000000000000000000000006121f2b3844505b66717e8a949fa8b2bbc4ccd5daddd7d2cec8c5c3c1c0c1c3c6c8ccd2d9e2dfd7d0c7c0bbaea3999183796d60554b4035291d0c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28343f4a545d686e7b859297a1a9b1b9c0c8ced6dad9d4cfcac6c5c1bebcc0bbb9bbc0bdc0c4c5c9ced1d4d9d6cabfb4aa988b7e7265584b3f3225180c00000000000000000000000000000000000000040e161f282f35394045474e545a61646b6f757b80858a90949a9fa2aaadb3bbc5d0cdc4bbb0a69d9083776a5f53473b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3845515c67727f8b96a0abb5c0ccd7d3cac1b8b0aaa29f9a999291919299999ea1a9afb7c0c8d2d6cdc4bbaea3998e82756a5f54443a3024190d0000000000020d17212c363f4850586062696e7071716e6a636159504a42382d231a1000000000000000000000000000000000000000000000000000000000000000050d141a1c23282c2d2f302f2e2d29251e1d170c07000000000000000000000000000c18242f39434d57606b717e879298a0a8afb5bbc0c5c7cbd1cbd2ccc8c6bfbbb3aba399938b9297a1adb6bebfbcb3a99f9285796d6053463a2d201307000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10020a11171c1f2024282a2b292621201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080e11141417191b1c1d1d1d1c1c1a19171413110d0806030000000000000000000000000000030f1c28333f4a54616c76828f96a1a9b2bac1c9cfd6dbdfd9d4d1d0cecdced0d2d4d8dddfd8d3cdc5beb6afa39f92877c6f675c51433a2f24180d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17232e38424c565f696f7c8591979fa7aeb8bdc3cacfd5dadad6d2d1cecbd1cbc7c5c7cbd1cdd1d2d5d9ded8d4ccc4baaea298897d7063564a3d3023170a0000000000000000000000000000000000000000040d162029323b434b515860626c70767c82878d92979c9fa6acaeb4babec5cdccc3bbb3a99f948a7e7164584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55606d78849199a4afbbc2ccd5d3cac2bcb4aeababa39f9e9e9fa3ababadb2bbc1c9d2d7cec4bbb1a79f92877b6e62584e4332281e1308000000000000050f1a242d363f464e54575e61646564625f57554f443f382f261c1108000000000000000000000000000000000000000000000000000000000000000003090e11171c1f2022232221201d1913110c060000000000000000000000000004101d2935404b555f69707d879299a2aab2bbc0c7cbd1d3d7dcd7ddd8d4d1cbc4bdb5aba49f989ea1a9b3bec7cec5baaea298887c6f6255493c2f221609000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100300060b0f1213171c1e1e1d191414110e0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0e0f101010100f0e0c0a070705010000000000000000000000000000000000000b17222d3842505a616e7a849197a1a8b0b9bec5cad0d4d9dddfdddadadadddfdddbd6d3cdc7c1bbb3aca49f918b7e716a60554b4031281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444d575f6a6f7c8590959da4acb2b9bec5c9ced2d5dadbdbd7dcd7d3d2d3d7dcdadddbdad5d2cdc8c1bab2a89f92857a6d6053473a2d201407000000000000000000000000000000000000000008131e28323b444d555d606a6f767d83898f93999ea1a9abb0b8babfc6cad0c7c0bbb1a9a1978f82776c6053463c32261b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3944515c666f7d87939fa6b0bac3ccd4d4cec5bebab8b5afacababacaeb4b8b9bec4cdd2d6cec6bcb3a99f958c7f73695f53463c3220160c020000000000000008121b242d343c43474d525457585755534e48443e332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000060c1012131516161413110d08020000000000000000000000000000050f19232c3945515d676e7b869299a3abb4bcc3cbd1d7d7d3d2cecac9c8c8cacdcfc7bdb5afaca5abadb3bbc5cfd6cabfb4aa96897d7063564a3d3023170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10030000000306060a0f1111100d080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3e46525e686f7c8591969ea6adb3babfc5c8cdd0d2d3d6dbd6d3d2d1d0cac6c2bcb7afa9a19a938c7f736c62584e43392f1f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323c454e585f6a6e7b838d929ea0a8adb3b9bdc4c5c9cfcfd0d2d3d6dcd4dbd6d3d2d0cfcec9c5c2bcb8b0a8a0968d8074675d5145392c20130600000000000000000000000000000000000000010d1924303a444d565e676d747c838a90959b9fa4abadb3b7bcc2c6cacbc7c2beb6afa8a09791857b6e655b5044372a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2834404a54606b73808d949fa8b2bac2cbd5d7d0cac6c5c0bbb9b8b7b9babfc4c6c9cfd6d6cdc4bcb4aaa1979083786d60574d42342a200e0400000000000000000009121b222b32373b4246474a4b4a4847423c383328221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000003060708090907070501000000000000000000000000000000000b16212b37434e58606d79839098a2abb4bdc6ced7d8d1cbc7c5c2bebcbbbcbdc0c5c6c7c0bbb9b1b8b9bec5cdd7dbd0bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10030000000000000002040403000000000000000000000000000000000000000000000000000000000407090a0f12131313131313131313131313131313131313131313131212100f0c0907060400000000000000000000000000000000000000000000000000000000000000000000000a141d2a36414d565f6a6f7b848f939ea1a9aeb4b8bcc1c3c5c6cad0cbc7c5c4c2bebab8b1aba59e9792887f736d635a50463d31271d0d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202a333c464e585f696e78808991969ea1a9acb2b7b9bdc0c2c4c5c7cbd0c7cfcac6c5c3c2c0bdb9b7b1aba69e9691847a6d60554b4035291d11040000000000000000000000000000000000000004111d2935414c565e686e79808790949d9fa7acafb5b9bec5c7cdc9c7c0bbb9b0aca49f9591857c6f695e53493f3327180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e39424f59606d78828f96a0a8b1b9c0c9ced5d6d3d1cbc7c5c4c4c5c7cbd1d2d5d6d0cac2bbb3aaa29891857b6e665c50453c3122190e000000000000000000000009101920272b30363a3b3d3e3e3b3a37312c282117110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333b4754606a74808d95a0aab3bdc6cfd7d3cfc6bfbab9b5b1afaeafb0b4b8b9bec5c7c6bec5c6c9cfd7dfd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000000000000000000000000000000000000000000000000000050b101416171c1f202020202020202020202020202020202020202020201f1e1d1b19161313100c07030000000000000000000000000000000000000000000000000000000000000000020b1925303b444e585f696e7a828b92979fa2aaacb1b4b7b8babfbbbfbab8b7b5b3aeaba79f9d938e857d726d635b51483f342b1f150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18212a343c464e575e666d747d848c92979ea1a8abadb2b3b5b7b8babfbabababebab8b7b5b3b2acaba79f9d948f847b6e675d51433a2f24180d01000000000000000000000000000000000000020d17202c3945525d686e7a838d939a9fa6abb1b9bbc0c7c9ccc8c5beb9b5afaca69e9a938e837c6f6a5f574d41382d221706000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303d44505c666d7a8491969fa7afb9bdc4c9cfd3d6d7d3d2d1d1d2d3d7d6d3d0cac6bfbab1a9a19892867d6f695e544a3f332a201007000000000000000000000000070f151b1f252a2d2e3132312f2e2b26201c170b060000000000000000000000000000000000020507080c0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0c080705020000000000000000000000000000000713202c38444f59626f7c87929fa7b1bcc5cfd8d2cac1bcb4aeaca8a4a2a1a2a3a7abadb3bbc0c7d0d1d2d5dae1e9d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000000000000000000000000000000000000000000000001070d161c202223282b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a282623201f1c18120f0b060000000000000000000000000000000000000000000000000000000000000008141f29323c464e575f686d757e858d92989da0a7a7aaacaeb4aeb4aeacaaa8aaa29f9b959089817b706b625b514940362d22190d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a333c454d545c606b70797f858c91969a9ea1a8a7a8aaacaeb4aeaeadb3adabaaa8a6a8a19e9995908a827a6e695f554c4131281d13070000000000000000000000000000000000000008131e2c38444f59606d7a8490959fa4acb0b8bcc2c7cccac7c0bbb9b3adaba39f9b948f8781796e6a5f584e453b2f261b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e28343f4a545e686e7a8490959da5acb2b9bdc4c6cacfcecfcfd0cfced0cbc7c5bfbab4aea79f9791867d706a60574d42382e21180e000000000000000000000000070d151d24292c2e34383a3a3a38342e2d29241e160e08000000000000000000000000000002080e111414181b1b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b1b181414110e0902000000000000000000000000000916222f3c4854606b76829099a3afb9c3ced7d2c8c0b8b0aaa39f9b97969595979a9ea1a9afb5bdc7cfd9e3e6ece3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000000000000000000000000000000000000000000000040c131821272c2f303538393939393939393939393939393939393939393939393938363532302d2c28231f1b17110b060000000000000000000000000000000000000000000000000000000000020d17202a343c454d565d606c717a80858b9095989b9d9fa2aaa1aaa39f9e9b9998928e89837d756e696159514940372e241b10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018212a333b424b515960676d72797f84898d9196979a9c9d9fa3aaa1a1a0a9a29f9d9c9a9796918d88837d756d685f574d433a2f1f160c01000000000000000000000000000000000000010d1925303c4855616b75828f96a0a7afb6bec2c8cdcac5bebab6afaca9a19e99928e88827c746d675f574e463c33291d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17232e38424c565e686e7a838e939ea1a8adb2b8babec0c1c2c3c3c2c2c0bfbab8b4aeaaa29f9590857d706b60584e453b30261c0f0600000000000000000000000710191f272f35393a3f4446474645403a39353028201a1108000000000000000000000000050d14191e2021252728282828282828282828282828282828282828282828272521201e1a140d05000000000000000000000005121e2a36424d5763707d89949fabb5c0cbd5d3c9c0b6aea69e98928f8b8988898a8d92979fa4abb5bdc7d1dce8f4e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0bdced9cfc2b5a89c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000040d161d242933383c3d424546464646464646464646464646464646464646464646454543423f3c3a38342e2b27221b17110a0200000000000000000000000000000000000000000000000000000000050e18222a333c444c525a62686d737a7f83888b8e9092989494949892918f8c8985817c76706b615e564f473f372e251c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f182029303940454f555c60676d72787c8084878a8d8f91929893949494939792908f8d8a8784807c76706b615e564d453b31281e0d040000000000000000000000000000000000000005111e2a36414c5663707d8a949ea8b1bbc0c7d0cec6bfbab3adaca49f9c97928d87827c766f6a605d554e453c342a20170b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444d565e686e79818991969ea1a8abadb3b3b5b5b6b6b5b5b3b4aeacaaa29f98928c837b6f6a60594f463d33291e150a0000000000000000000000071019222b31394045474a50535453514b4746413a322c231a110800000000000000000001090e171e252a2d2e32343535353535353535353535353535353535353535353534322e2d2a251f170e0a010000000000000000000714212d3a46535f6976828f9ca6b0bdc7d1d7cdc1b7aea49d948f86827e7c7b7c7d81858d9399a3abb5c0cbd7dee9e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000a1723303d4a5663707d8996a7b1bcc8d2cdc1b4a89b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000030c161f282f353d44484a4f52535353535353535353535353535353535353535353535251504e4c494645403937332d27221b140b0600000000000000000000000000000000000000000000000000000000061018212a323a414550565d60676d72777b7e81838587878887878584827f7c79746f6b636059524d443e352d251c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171e272e343d434b51555d60656c6f74787b7e8082848586878787878786858482807e7b78736f6a636159524c443b332a1f160c00000000000000000000000000000000000000000713202d3946525e6876838f9ca6b0bac3ccd2cbc3bcb4aea9a29f9a938f8a85807b756f6a625f58514b433c332a22180e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28323b444d565e676d747d848b91969b9fa2a9a6a8a9a9a9a9a8a7aaa39f9c98928d867f786e6960584f473d342b21170c0300000000000000000000040d19222b343c434b5153545c6061605c5554524c443d352c231a0f06000000000000000109131b20293036393b3f4142424242424242424242424242424242424242424242413f3b3a363029201c130a0100000000000000000815222e3b4855616e7b87939facb9c2cfd9cfc5bbafa59d928d827b75716f6e6f70747980879299a3afbbc2cdd8e3e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000815212e3b4854616e7b8795a0acb8c1c5c3bbb0a6998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000b151e28313a41454f54565b5e5f60606060606060606060606060606060606060605f5f5e5d5b595653514b46443f38332d261d18100600000000000000000000000000000000000000000000000000000000060f18202830353e434c52555d6065696e727477797a7a7b7a7a79777573706d66636059544f46423b322c231b130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c151d2328303940454b51535b606367696e7174757779797a7b7b7a7a7978777573716e6966625f58554f46413a322a21180d0400000000000000000000000000000000000000000714212e3a4754616d7a87949fabb8c1ccd8cfc3b9b1aaa29f97928d87827e79736e69626058544e45413a3631292118100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162029323b444c555c606b70797f848a8e929798999b9c9c9d9c9b9a9898928f8b86807a726c665e574e463d352b22190f0500000000000000000000010c161f2b343d464e555d6066666d6d6d6766615d564f473e362c21180e0300000000000009131b252d323b4146474b4e4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4e4b4746423b332e251c13090000000000000005111e2a36414c5666737f8c9aa4afbbc8d4d6cabeb3a99e938d80756e696463626264676d737e87929fa6b0bbc7d3dee3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000714212d3a46535e697784919da5afb7b9b8b2a99e94887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000007121d27303a434b51596063686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b69686563605c54535049443f382f2a2217110a02000000000000000000000000000000000000000000000000000000060e161e2429313a41454c5154575f6165686a676d6e6e6e6d686b686663605c54544f48443d363029201a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e272e3439404549505356575e616467696a676d6d6e6e6d6d6d666a696764615e5755534e48443e36302920180f060000000000000000000000000000000000000000000b1724313e4a5764717d8a97a6b0bbcad3d1c6bcb1a7a098928c85807b76716d67615e5753555553514b46423b332a22180c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029323b434b515961676d72797d8285888b8d8e8f90908f8f8d8b8986827e7a736e68605b544d453d342b23191007000000000000000000000008131e28313d464e5860676d7277797a7977736d68605950483e332a1f14090000000000050e1b252d373f444c5254585a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5854524d4540372e251b0d030000000000000714202d3946525e687783909dacb6c0ccd8d2c6b9ada2978e81776c615e57565556555c606c727f8b949fabb7c2cdd8e4d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000005121e2a36424d5764717e8b939ea5abacaba8a0978f82756a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000000000c18232e39434b555d606b7075787979797979797979797979797979797979797979797978787675726f6d6663605b535049413c3428221c140b02000000000000000000000000000000000000000000000000000000040c13191f282f353a4145474d5355585b555d60616161605d565c595653514a48433d38332a251f170e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151d23282f35383f4446494d5354575a5c555c606061616160605c545c5a5754534d4947433c38332a251e170e06000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfcdd7cbbfb4aaa09590867f7a736e6964605c55545c606262605d55534d453c342a1e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029303940454f555c60666d7075797c7e80828283838282807f7c7976716d67615e56504a423b332b221911070000000000000000000000010d19242f3a434e58606a6f797f8386878684807a706b615a50453c31261a0e01000000020c17202d373f4951565e616567686868686868686868686868686868686868686868686765615e57514940372d1f150b0100000000000814212e3b4754616e7a87939facb9c6d2d7cbbfb4aa9e92857a6d655b534d4948494b515a626d76828f9ca6b0bbc7d3dfd6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000020e1a25313b4956626c75818e939b9e9f9e9c9691857a6e61584e43372b1f12060000000000000000000000000000000000000000000000000000000000000004101c2834404b555d676d757d828486868686868686868686868686868686868686868686858483817f7c7975706c65605b534e463f332d261d140a0000000000000000000000000000000000000000000000000000000002080d161e24292f35393b4246484b4e4b515454555454524c4f4c494644403938322c272119140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d24292d3337393c4246484b4d4f4b5153545454545453504a4f4d4a4846423c3b37322c282119130c0500000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdd3c7baaea39890837b726d67615f5754586062666d6f6f6d67615e574e463c30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e272e343d434b51545c6063666c6f717375767676767574726f6d6765605d55524c443f382f292119100700000000000000000000000004111d2935414c55606a6f7c848c90939996918c857d706c61574d42372b1e130800000008131e29323f49515b62686e72747575757575757575757575757575757575757575757574726e69635b51493f31271d120700000000000a1724313d4a5764707d8a9aa4afbbc8d4d3c7baaea3988c7f72685e5349423c3b3c4045515b626f7c88949fabb7c4d0ddd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000009141f2d3945505a606d7981898e919292908b847b6e685e52463c31261b0f030000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676d7981898e91929993939393939393939393939393939393939399929291908e8c8985817d78716c655f5851443f382f261c11060000000000000000000000000000000000000000000000000000000000040c13191e24292c31363a3b3f4141454747484747454142403d3a38342e2c27211c160e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c12181b22272b2d31363a3b3e4142404546474848474746443f42403e3b3a36312e2b26201c160d08020000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8b4c1ced2c5b9ac9f92867b6e69605d55555d60656a6f74797c7c7a756e695f584e42382e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c151d2328303940454a5053545b606265666869696a6968676563605c5554514c46413b332d261d170f07000000000000000000000000000613202c3945515d676f7c8691969d9fa4a09d9792877e70695f53463a2f24190d0100010d1925303a44515b626d727a7e8181828282828282828282828282828282828282828281817e7b736d635b5143392f23180c00000000000d1a2633404d596673808c99acb6c0ccd8d2c5b9ac9f92867a6d61564c4138312f2f343f47535f6a7683909ca9b6c3d0dbd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000003111d29343e45515c676d757d82848685837f796e695f564c41342a20150a0000000000000000000000000000000000000000000000000000000000000004101d2935404b55606d79828e939b9e9fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9c9b9898928e89847e786f6a625b504a42382d22171007000000000000000000000000000000000000000000000000000000000001080d13191d20262a2d2e322f35393a3b3b3b3a39352f33302d2c28231c1b16100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11171b1f20252a2d2e31342e34383a3a3b3b3a3a3a38342e34312e2d2a25211f1b15100b0500000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8b4c1ced1c4b7aa9e918477695f585c6063676d72777c8085888886817b6f6a5f544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e272e34383f44464a505355585a5b5c5d5d5c5c5a585653514b4745413a363028221c140b0500000000000000000000000000000714212d3a4754606d7a849198a1a8acafaca9a29992867b6e61564c4135291d11040005111d2a36414c56626d727f868b8d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8b867f736d62554b4034291c1004000000020f1c2935424f5c6875828f9ba8b5c2d2ddcec2b5a89b8f8275685d52443a2f2622232b37434e5865717e8b98a9b3becad6d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000c17222934404b555c606b707578797876726d665f574d443b3022180e04000000000000000000000000000000000000000000000000000000000000000613202c3945515d6773808d949ea5abacafb5acacacacacacacacacacacacacacacacb5aeacababa9a8aaa29f9b96918b837c726d605b544a3f332822190c0300000000000000000000000000000000000000000000000000000000000001080d11141a1e21222524292c2d2e2e2e2d2c29242623201f1c18120f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131a1e2121242723282c2d2d2e2e2e2d2d2c2823272421211e1a15130f0a04000000000000000000000000000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cfd2c5b9ac9f92867a6f6a69676d70747a7e83888d929799928e857c6f665c5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151d23282e34383a3f4446494b4d4f4f50504f4f4d4c494645403a39352f2a251e17110a02000000000000000000000000000005111e2a36414c566673808c96a1aab2b9bbb8b3aba2988e8175685d5245392c201306000713202d3946525e68727f8b92989a9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a99928b7f72675c5145382c1f130600000004111d2a3744505d6a7783909daab6c3d0d8cbbfb2a5988c7f7265564c4132281d141a26313c4855626e7b8897a2adbac6d3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000060c18232f39434b51596063686b6c6b6965605c544d453b32291e100600000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929fa6afb8b9bbc0b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbbb9b8b7b6b4b3aeaba8a09d9590877f746c665b50443f342b1e150a00000000000000000000000000000000000000000000000000000000000000000104090e12141518181d202121222121201d1919161312100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090e121415181a181c1f202121212121201f1c171a171514120e0906030000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a9b3bec9d3c7bbafa39990827c777677797d81858b90959a9ea1a39f979184786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c23282c2d3338393c3e40424343434342413f3c3a38342e2c29241e19140b06000000000000000000000000000000000714202d3946525e687784919ea9b2bcc4c7c5bdb4aa9f92867a6d6054473a2d211407000714212e3a4754616d7a86929fa3aaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aba39e9285796d6053473a2d20140700000005121f2b3845525e6b7885919eabb8c4d1d6c9bcafa396897c706356493d3023160b13202d394653606c7985929fabb8c5d2d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000007121d27313940454f54565b5e5f5f5d5853514b423b332a20170d0000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a98a2aeb8c1c5c7cbd1c6c6c6c6c6c6c6c6c6c6c6c6c6c6d1cbc7c5c5c4c3c1bebab8b2aca7a099928c81786c605b51473d30261c11060000000000000000000000000000000000000000000000000000000000000000000002050708070d1113141415141413110d080a070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b070c10131314151514141312100c060b080705020000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8997a1adb9c6d1cbc0b5ab9f94908784838486898e92989da0a7abadaea9a0958a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c11171c1f22282b2d2f32333536363736353432302d2c2823201d19130d080200000000000000000000000000000000000814212e3b4754616e7a8796a0acbbc4ced4cfc6bbafa3998a7d7063574a3d3024170a000b1825323e4b5865717e8b98a2aeb4b4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4ada197897c706356493d3023160a00000006131f2c3946525f6c7985929facb8c5d2d4c8bbaea195887b6e6255483b2f221508121f2b3744505b657784919daab7c4d0d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000010b151f272f343d44484a4f515352504b46454039302a21180e050000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98aab4bfcad2d3d7dcd2dcd7d3d2d2d2d2d2d2d2d2d2d2d2d2d3d2d2d1cfd0cac6c3bdb8b1aba39f938e81746d63594f42382e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070708080707070603000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eabb5bfcbd1c7bdb0a69f9a9391909092999b9fa2aaacb1b8b9bab1a89a8d8073675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1012171c1f2022252728292a2a2929272523201f1c1813110d0801000000000000000000000000000000000000000916222f3c4955626f7c8895a8b2bdcbd7e0d7cbc0b5ab988b7e7165584b3e3225180b000e1a2734414d5a6774808d9aaab4bfc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1beb3a9988b7e7165584b3e3225180b00000005121f2b3744505b657986939facb9c6d2d4c7baada194877a6e6154473b2e2114080f1b27333f4953697683909ca9b6c3cfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000030d151d232933383c3d42454645433f3a38342e271e180f06000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfd0d9e0e3e1d8d1cbc7c5c5c5c5c5c5c5c5c5c5c5c6c7ccd2d0d1d4d6d3cec8c3bdb5aea59d938c7f726b60544a3f34281c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6674808d99a3aebbc3cecfc2b8b0aca49f9e9c9d9fa3abacaeb4b8bcc3c6c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f121316181a1c1c1d1d1c1c1a19161313100c0704010000000000000000000000000000000000000000000815222f3b4855626e7b8899a3afbbc7d3dcd6cabeb3a9978a7e7164574b3e3124180b000e1b2835414e5b6874818e9ba7b4c1cfcacacacacacacacacacacacacacacacacacacad1cbbeb2a5988b7f7265584c3f3225190c0000000613202d394653606c798698a3aebac7d3d3c6baada093877a6d6054473a2d2114070b17222d43505c6976838f9ca9b6c2cfd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000030b121821272c2f303538393836322d2c28231d150c0600000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5e2d8cfc6bfbab9b9b9b9b9b9b9b9b9b9b9b9bbc0bfc3c4c8cdd5d9d4cfc6bfbbafa59f92877d6f665c5044382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b86929fa8b2bcc5cecbc2beb6afacaaa9aaacaeb4b8babfc6c8cdcabfb4aa9a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606090b0d0f101010100f0e0c09070604000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c1cbd1ccc3b9ada197897c6f6256493c2f231609000d1a2734404d5a6773808d9aa9b3bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc0bbb0a6978a7e7164574b3e3124180b00000005121f2b3744505b657986929facb9c5d2d4c7bbaea194887b6e6155483b2e221506111d2935404b556a7783909daab6c3d0d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000001070c161c202223282b2c2c2a25201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e7dcd1c6bcb4aeacacacacacacacacacacacacafb5b2b7b8bcc3c9cfd6d8d1cbc0bbafa3999083786d60544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3846535e6973808d96a0a9b3bcc4cdd0c7c0bbb9b7b6b7b9babfc5c6cad0d0cac1baaea2988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6776828f9ca5afbbbfc2c0bbb1a79e9285786d6053463a2d201307000b1824313e4b5764717e8a97a1abb1b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b5afa89e94877b6e6154483b2e211508000000030f1b27333f495f6c7885929fabb8c5d2d5c8bbafa295887c6f6255493c2e23170b13202c3945515d677784919eaab7c4d1d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000050b101416171c1e201f1d181313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e3d7cbbfb4aaa39f9f9f9f9f9f9f9f9f9f9f9fa4aba5aaacb1b9bec5cdd6dcd7cbc0b5aba0958b7e72665c5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36424d57606d79849197a2aab3bbc2c9ceccc8c6c4c3c3c5c7cbd1d3cfcac5bebaafa69f92867a6d6154473a2e21140700000000000000000000000000030608090b0d0d0b08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507080b0d0d0b0807050200000000000000000000000000000000000004101d2935404b5563707d8a939ea6aeb5b6b6afa8a0958c7f73665c5044382b1f1206000714202d3a4753606d798591999fa7a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4aba39f968f8275695e53463a2d211407000000000b17222d44515e6a7784919daab7c4d0d7cabeb1a4978b7e7164544a3f34281c1117202d3a4753606d7a86939facb9c6d2d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000407090a0f121312100c070604000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e0d3c7baaea3989292929292929292929292939995989da0a7adb3bbc4cdd6dcd1c7bdb1a79e9184786d6053463a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313b45515d676e7c859298a1a9b0b9bdc4c7cbd1cfcfd0cfced0cac6c5beb9b3ada59e948c8073685e5246392d2013070000000000000000000000030a0f121515181919181514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111414181919181514120e090300000000000000000000000000000000010d18242f394855616b75818e949fa3aba9aca49f959083796d60544a3f34281c10030006131f2c3845515d67707d879095969797979797979797979797979797979797979797979799928e847a6e61574d42362a1e120500000000061c2936434f5c6976828f9ca9b5c2cfdacdc0b4a79a8d8174665c5044382e231c212834404b5463707c8999a4afbbc7d4d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dfd2c5b9ac9f9286868686868686868686868687898c90959ea1a9b2bbc4cfdad9cfc3b9aca0968a7d706353493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935404b555f6a6f7d8691979fa6acb2b9babfc1c2c3c3c2c2c0bfbab8b3ada9a29f938f82786d60564c41362a1d1105000000000000000000040a0f151a1f21222526262522211e1a150f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d14191e20212426262522211e1a140e090200000000000000000000000000000007121d2c38444f59606d79828d92999b9c9b9a938e837b6e675d5142382e23170b000004101d2935404b55616b707d8387898a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8986817a6e685e52453b31251a0e02000000010e1b2734414e5a6774818d9aa7b4c0cfdad1c4b8ab9e9184796d60544a3f342d2a2c333b45515c6674808d9aabb5c0ccd7d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000030506090c0d0c0a070604000000000000000000000000000000000000010507070b0c0d0b0808060200000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b79797979797979797979797a7c7f838a9297a1a9b2bec9d5e1d5c9bdb2a89b8e8175655b5044372b1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18242f39434e58606b6f7c858f949ea0a8acaeb4b4b5b6b6b6b5b4b4aeaca9a19e97928b81796d665c51443a3025190d010000000000000000070f161b20262b2e2f323333322f2e2b261f1b150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181e252a2d2e313333322e2d2a261f1a140d05000000000000000000000000000001101c28333e45515d676d7880868c8e8f8f8c87817a6e695e554b4030261c11060000000c18242f39434f59616b6f767b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7a756d685e564c4133291f140900000000000b1825323e4b5865717e8b98a9b3bec9d5d2c5b9ada1968a7d70665c50443f3836383d454e57606d7985929eabb8c5d2ddd6cabdb0a3978a7d7064574a3d3124170a00000000000000000000060b0f121316191a19171413100c07010000000000000000000000000002080d111314181919181514120e09030000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6c6c6c6c6c6c6c6c656c6d6f72777e859197a1adb9c3ced9d9cec4b8ab9f9285786c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c464f59606a6f7a828a91969c9fa3aaa7a8a9a9a9a8a7aaa29f9c97928d857e776d675d544a4032281e1308000000000000000008101921272c31373a3c3e40403e3b3a37312b2620181008000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24293036393b3e40403e3b3a36312a251f170f0600000000000000000000000000000b16212935404b555d666d737b7f828382807c756d685e574d43392f1e140a0000000007121d27313d474f596063696e70717171717171717171717171717171717171717171706f6d67615e564c443b3021170d0300000000000916222f3c4955626f7c8897a1adb9c6d2d5c9bdb2a99d9083786d605a504a464145464f575f6a737f8c97a1adb9c6d2e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000020a11171b1f202325262624201f1c18120b030000000000000000000001070c13191d20212426262522211e1a150e0903000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615f5f5f5f5f5f5f5b606062656c717b85919ea7b1bcc8d4dfd3c6baada297887c6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333d474f5860686e767e848a8f9298999a9c9c9d9c9b9a9898928f8b85807a726c655d554b42392e20160c020000000000000008121a222b32383c4347484b4c4c4b4847423c37322a221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000040e161f282f353b4146474b4c4c4b4846423b36302921180f0600000000000000000000000000050c18242f39434b545c60696e72757675736f6a605d564d453b31271d0c0200000000010b151f2c353d464f54575e61636464646464646464646464646464646464646464646463605d55524c443b32291e0f050000000000000613202d394653606c7985929eabb8c4cfdacfc4b8aca0958c7f726c605b54524c51535960696e7c86929fa9b3bec9d5e2d6cabdb0a3978a7d7064574a3d3124170a00000000000000070b141b22272b2d2f323332302d2c29231d150d090000000000000000030b12181e25292d2e313333322e2d2b261f1a140d060000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154535353535349505354565a6169707d8a95a0acb8c5d1ded6cabeb3a9978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18212b343d464e565e616c71787d8286898c8e8f90908f8f8d8b8985827e79736d68605b534b433930271c0e0500000000000000060f1a242c343d43484e53555859595855534d47433c342c231a0f050000000000000000000000000000000000000000000000000000000000000000000000000000020c162028313a41454c52545759595855534d46423b332a21180c030000000000000000000000000007121d273139424a51575e616568696866625f58524c443b33291f150b000000000000030d1a232c343d43484d525456575757575757575757575757575757575757575757575654514b46413a322920170d0000000000000006121f2b3844505b6674818e9ba8b2bdc9d5d4c8bcb1a79f92877e726c66615e565c60636b707b849198a2aebbc5cfdae6d6cabdb0a3978a7d7064574a3d3124170a0000000000000911191d262d3337393c3f403f3d3a38342f271f1b120b020000000000040d151d24293035393a3e3f403e3b3a37312a261f180f0600000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615448464646463f444647495057616b7783909daab7c3d0dddbd0bfb3a6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222b343c444d525a61666d71757a7c7f818283838382817e7c7975716d67615d565049413931271e150b00000000000000030e18212c363e464f54585f6265666665625f57534e463d352c21170d030000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a434b51565e6164666665615f57524d453c332a1e150b00000000000000000000000000010b151f27303940444d5354595b5c5c5955534e45413a322921170d030000000000000008111a222b32383b4246484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a494745413a36302920170e0500000000000000030f1c28333f4a5463707d8a96a1adb9c5cfd9cdc3bbafa39992877f78716d686b676d70757d849196a1aab4bfcdd7e1e3d6cabdb0a3978a7d7064574a3d3124170a000000000009121b232b2f383f4446494c4d4c4a47454039312d241d140b00000000040d161f272f353a4146474b4c4c4b4847423c36312921181006000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b39392d3337393a3e454f596673808d99a6b3c0ccd9dacec1b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222b323b414650545c6064676d707274757676767574726f6d6764605c55524c443f382f271f150c030000000000000009151f2a333e48505960636a6f717373716e69625f584f473d33291f1409000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c555d60686e717373716e69615e574d453c30271c120700000000000000000000000000030d151e272e343b4246484c4f504f4d4847433c352f2820170f0500000000000000000008101921272c30363a3b3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3c3a39352f2a251e170e050000000000000000000b17222d3a4653606d7884919ea9b3becad6d7cbc0b5aba399928b837e7a797778797d81889196a1a8b2bcc6d0dfe9e3d6cabdb0a3978a7d7064574a3d3124170a0000000006101b242c353d41495053565859595753514b433f372f261d12090000010c161f28313940454c52545759595855534d46423b332a22180d040000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2c22272b2d2d333f4c5865727f8b98a5b2becbd8dbcec2b5a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019202930363e424a5053555d6063666769696a6968676563605c5553514b46413a332d261d150d0300000000000000020e1a26313c45505a616b6f767b7e7f7f7e7b766f6a60594f453b30251a0e00000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c565d676d747a7e7f7f7e7b756e695f574d42392e23180c0000000000000000000000000000030c151c232831363a3b3f424342403c3a373129241e160d050000000000000000000000070f161b1f252a2d2e3031313131313131313131313131313131313131313131302d2c29241d19130c050000000000000000000006121f2b3844505c66737f8c97a1adb9c3cfd8d1c7bdb4aba39f95908b87858485868a8e939aa1a8b2bac4ced8e2f1e3d6cabdb0a3978a7d7064574a3d3124170a000000040e18222c363e474f535b606265666563605c55514940382f241b0c030007121d283139434b51565e6164666665615f57534d453c342a1f160c0100000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2d2d2d2d2d2e323f4b5865727e8b98a5b1becbd8dccfc2b5a99c8f8276695c4f4336291c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171f252a30383f44464b515356595b5c5d5d5c5c5a585653514b46454039353027221b140b03000000000000000006121e2b37424d57616c717c83888b8c8c8b88827c706b60574d42362a1b110600000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686d7981868a8c8c8b88827b6e695f544a4034281c10040000000000000000000000000000030b12181f252a2d2e32353635332f2e2b262019130c0400000000000000000000000000040a0f141a1e202123242424242424242424242424242424242424242424242321201d18130d0802000000000000000000000003101c28343f4a54606d7a85929ea7b1bdc6d1d9cfc6bdb4aea79f9d9898929192939a9b9fa4acb2bac4ccd6e0eaf4e3d6cabdb0a3978a7d7064574a3d3124170a0000000a15202a343e48505960656c6f727372706d67625b524a40362d1e150b000d18242f39434b555d60686d717273716e69615f574e463c31281d120700000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b3a3a3a3a3a3a3b3d444e586673808c99a6b3bfccd9dbcfc2b5a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e262e34383a404547494c4e4f5050504f4e4b494645403a38342e29241e17110a020000000000000000000814212d3a47535f69717e87909598999998948f867d70695e5246382d22170b0000000000000000000000000000000000000000000000000000000000000000000007131f2c38444f59616d7a838e9299999998938f847b6e665c5144382c1f120600000000000000000000000000000000070c141a1e2121262829292622211f1b150d08010000000000000000000000000000000002090e1214151717171717171717171717171717171717171717171717161413110d070100000000000000000000000000000b17232e3845515d67727f8c95a0abb4bfcbd7d8cfc6bfbab1abaaaaa29f9e9e9fa4acacafb6bec4ccd6dee7edf4e3d6cabdb0a3978a7d7064574a3d3124170a0000030f1b26323c46505a616b70787c7f807f7d79726d645c52483e30271d1207101d2935404b555d676d747a7e7f7f7e7b766e695f584e43392f24180d01000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154484646464646464747494f565f6a7683909ca9b6c3cfdcdbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c141c23282b2f35393a3d3f414243434342413f3c3a38342e2c28231d19130b0600000000000000000000030f1b27333f4953616e7b8692999fa7a6a6a69f9892857b6e6153493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b75828f959fa3aba6a59e969083786d6053463a2d201308000000000000000000000000000000000003090e121415191c1d1c1a1515120f0a030000000000000000000000000000000000000000020507080a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a09070604010000000000000000000000000000000006111c2935414b55606d78839099a3aebac1cad3d8d1cbc3bcb8b6b4aeacaaabacafb6b9bbc0c7d0d2d3d7dce2eae3d6cabdb0a3978a7d7064574a3d3124170a000006121f2b37434e58616c717d83898b8c8c8a857e746e645a5043392e23180c13202c3945515d676d7980868a8c8c8b88827b6f6a5f554b4035291d1004000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154535353535353535354565961686f7c87939facb9c6d2dfdacdc0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f24292c2d30333436363736353432302d2c28231f1c18120d0802000000000000000000000005121f2b3744505b6574818e98a2abb1b2b2b0aaa2978d8074655b5044372b1f1205000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89949ea7afb5b2afa8a0958b7e7165584b3e2f24190d01000000000000000000000000000000000000020507080c0f100f0d0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a44505c666f7c86929fa5afb8c1c9d5dad7cdc8c4c3bfbab8b7b8b9bbc0c6c8cccbc7c5c7cbd1d8e1ead6cabdb0a3978a7d7064574a3d3124170a00000815212e3b47535f6a717e87909598999897928b80746c62554b4034281c121f2b37434e58606d79838d9299999998948f857c6f675d5145392c201307000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e616060606060606060606163666b707a839099a4afbbc7d4e0d7cbbfb4aa988b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1012181d2020232628292a2a2929272523201f1c1813100c0700000000000000000000000000000613202d394653606c7885929eaab4bdbfbfbcb3a99e9285786c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa6b0bbc0bfbab1a79c8f837669564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28343f4a54606a727f8b939da6afb7c0c9cfd6d8d4d1d0cac6c5c4c5c6c8ccd0cac6bfbab9babfc6cfd8e2d6cabdb0a3978a7d7064574a3d3124170a0004111d2935414c56626f7c869299a0a7a6a9a19e928b7e71675c5145382c1f15212e3a47535f6a74818e959fa3aba6a69f979184796d6053473a2f24180c000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6d6d6d6d6d6d6d6d6d6d6e7072777d849095a0abb5c0ccd7e0d3c7baaea398897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070d10131416191b1c1d1d1d1c1b18161313100c0704000000000000000000000000000000000815222e3b4855616e7b8897a2adbcc6cfcec5b9ada197887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c1cbccc3b9ac9f928679685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000407090a0e10100f0d09080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17232e38424e58626d74818e949ea5aeb9bec5cbd0d4d9dbd6d3d2d1d1d2d3cec6bfbab4aeacaeb4bdc6d1dcd6cabdb0a3978a7d7064574a3d3124170a000713202c3945525d6875828f98a3abb1b3b3ada49e9184796d6053463a2d2015222f3c4855626f7c87939fa7aeb4b2b0a9a0968c7f7265554b4035291d10040000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b797979797979797979797a7a7c7f83899196a0a7b1bdc7d2dddfd2c5b9ac9f9286796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0c0e0f1010100f0e0c0907060400000000000000000000000000000000000000091623303c4956636f7c8996a9b3beced8d5c9beb3a996897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4d1d3c7baaea398877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000050b101416171a1c1d1c1a1515120f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303c46515b606d78828e939da4adb3babfc6c8cececfd0cfcfd1cbc7c2bcb4aeaba39fa3abb4bfcbd7d6cabdb0a3978a7d7064574a3d3124170a000714212d3a4754606d7a86939faab4bdbfbeb9ada196897d7063564a3d30231a2733404d5a6673808d9aa4afbabfbfbbb2a89d908377675d5145392c1f13060000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d5c8bcafa3978d87868686868686868686868687898c90959ea0a8b1b9c3d0d9e1d5c9beb2a99c8f8275675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bccfd6dacfbdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d7cbbfb4aa94877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000003090e161c20222327292a292622211f1b150d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2b343f44505c666d79818d929ea1a9aeb4b8bcc0c1c2c3c3c2c1bfbab9b0aaa29f999299a3aebac7d3d6cabdb0a3978a7d7064574a3d3124170a000a1723303d4a5663707d8999a4afbcc6cfc9bdb2a8998c807366594d4033261d293643505c6976838f9cacb6c0cbcdc3b9ac9f93867a6d6053473a2d2014070000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d8ccc0b4a99f979493939393939393939393939496999da0a7acb2bac3cbd5e2d9cfc7b9ada1978a7e7164554b4034291c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1dcd1baada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000060d141a21272c2f3034363736332f2e2b262019130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c192228343f4a545c676d78808a92979fa3aaacb1b3b5b5b6b6b5b4b4aeaca69f98928b86929facb9c5d2d6cabdb0a3978a7d7064574a3d3124170a000b1824313e4b5764717e8a97abb5c0cfd8cfc0b4a79a8d8174675a4e4134271e2a3744515d6a7784909daab7c3d2d4c8bbafa49a877b6e6154483b2e2115080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dcd0c5bbb1a9a3a1a0a0a0a0a0a0a0a0a0a0a0a1a3a5aaacb1b9bdc4ccd5dddcd1c7bdb2a89e9184796d6053463a2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000060f171f262a33383c3d41434342403c3a373129241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071017232e38424b555c666c737d858d92989da0a7a6a8a9a9a9a9a7aba39f9c948f867e828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1bed2d7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d8ccc0b6ac95887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5d7cdc3bbb4afaeacacacacacacacacacacadadafb2b6b8bcc3c9ced5dedad5cbc0b5aba0968c7f72665c5145382c1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000050f17212931363d44484a4d4f504f4d4847433c352f281f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263039434b545b606b707a80868c909597999b9c9d9c9c9b9999928f89827b76828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1ddd2bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5dfd5cdc5c0bcbab9b9b9b9b9b9b9b9b9b9b9babcbfc3c4c8cdd5d9ddd7cfc9bfbbafa3999184796d60544b4034281c0b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a090909080706040100000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000030d172129333b42464f54565a5c5d5c5955534e45413a31281f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e273139424a505961686d737a7f84878a8d8e8f90908f8e8c8a86827d766e76828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5e7dfd7d0ccc8c7c6c6c6c6c6c6c6c6c6c6c6c7c9ccd0d1d4d9dcd7d2ccc5beb9ada49f92877d6f665c5142392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30241716161615151413110d07070604010000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000009141f29333b454d5359606367696a6966625f58514c433a31271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151f272f383f444f565d60686d72777b7e808282838382817f7d7a75706b6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5f2e9e2dcd8d5d4d3d3d3d3d3d3d3d3d3d3d3d4d6d8d8dad5d2d1cbc7c0bbb3ada39c928c7f726b60544b4030271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d302423232323222220201d18171413110d0701000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000020e1a25303b454d575f616b7074767675736f6a605d554c43392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d262d333e434c52565e6165696e717375767676767473706d6863606976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5ece4dcd6d1cecdcccccccccccccccccccccccccccccbcfc9c6c5bfbab5afa9a19e918c80736d62594f42392e1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d302f2f2f2f2f2f2e2d2c29242420201d18130f0b0400000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000005121e2a36424d575f696e767d80828382807c756d675d554b4034291c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141c2228313a41454c5254575e61646668696a6969686663605d565c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5e4dad2cbc5c1c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbebeb9b8b4aeaba49f97928a7f736e645b51473d30271d0c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3c3c3c3c3c3c3c3b3a39352f312d2c29241d1b160f0a040000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000003050614202d3a46525e696e7b83898d8f908f8c8881796d675c5145382e23170b0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171f282f353a4146474d5254575a5b5c5d5d5c5b595754524c5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5dcd2c8c0b9b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b2b2b1b3adabaaa39f99938e857e736d645c52493f342b1e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a494949494949494848474540413e3a39352f2c27211b150b0600000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000003060b0f12131e2b37424d57616e7b8590959a9c9d9c99938e83796d60544a3f34281c14120e0906030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161e24293036393b4246484b4d4f4f50504f4e4c4a47454f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e1d6cbc0b6aea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a5a4a9a19e9b98928e87817a706c635b524a40372d22190c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063575656565656565656555553514b4d4a4745403a38322b262017110a020000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000060b0f12171b1f20222e3a47535f6975828f979fa7a9a9a8a59e958c8073665c5044382b22211e1a15130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d30363a3b3e40424343434341403d3a434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9ddd1c5b9aea49d9a999999999999999999999999999998989697928f8b86817c746e68615a514940382e251b100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70636262626262626262626261605d555a5753514b48443d373228231c140c0400000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000000000000002080d11171b1f22272b2d2f303b4855626e7b88949ea9b1b5b6b5afa79e9285796d6053463a302e2d2b26211f1b15100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d13191d20252a2d2e3133353637363635333036434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dbcec1b5a99d928d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b898785827e7a746f6a615e56504840372e261c13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d706f6f6f6f6f6f6f6f6f6f6f6e6d676a6764605d55544f47433c342e261e160d04000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000000000001080d13191b22272b2d3337393c3f414b5865727e8b98a6b0bbc2c3c1b9ada197887c6f625549413f3b3a37312e2b261f1c18120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141a1e2021242728292a2a2928262936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dacdc0b3a79a8d80808080808080808080808080807f7f7e7c7b7875716d68625f58524c443e362e251c140a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d8cbbfb2a5988c7f7c7c7c7c7c7c7c7c7c7c7c7b7b7a787674716d67636059534e443f3830281f160e040000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000040c13191e24292d3337393f4446494c4d525a6774818d9aa7b4c0cdd0cabeb3a9978b7e716458524c4b4847423c3b37322c28231d17110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090e121415181a1c1c1d1d1c1b1c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b73737373737373737373737373737271706e696864605d56534e46413b322c231c130a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d9ccc0b3a79b918c89898989898989898989898888868583807d7a756f6b625f58504a423a312820160c0300000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000002080d161e24293035383f44464950535559565e616875828e9ba8b5c1cedacfbeb2a5988b7f7265605d565855534d4947433c38342e28231c150c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f10101010101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e66666666666666666666666666656563615e575854524c47433c363029201a110a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6dcd0c4b8ada39b98959595959595959595959595949792908d8a86827c766f6a605c544c433a32281e150b00000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000050d14191f282f353a4145495053535b60626668686e7075828f9ca8b5c2cfd9ccbfb2a6998c7f736f6d686865615f5755534e46454039342e261e18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000203040303101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6159595959595959595959595959585654534d4b4745413a37312a251e170e08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e0d4c9bfb5ada7a5a2a2a2a2a2a2a2a2a2a2a2a2a9a29e9d9a98928e89837c736d665d564c443a30271d1207000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000070e171e252a313a41454c52535b6063656c6f7275787a7c7f84919eaab7c4d1dccfc2b6a99c8f827e7c7a7775726e6967625f5853514b443f383028231c150c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544d4d4d4d4d4d4d4d4d4d4c4c4b494846423e3a39352f2b262019140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3dbd1c7bfb8b3b2afafafafafafafafafafafaeb3adaba9aaa39f9b94908780786d685d564c42392e23180c030000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000081019202930363f434c52565d60656c7074787c7f828587898b9196a0acb8c5d2ddd0c3b7ab9f948f8b898784817e7b77736f6a65605c54504a423d342e271e160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615448404040404040404040403f3e3d3b3a36312d2c29241e1b150e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3e3d9d1c9c4c0bfbcbcbcbcbcbcbcbcbcbcbcbbbeb9b8b6b4aeaca69f99938d827a6d685d544b4034281e150b0000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000008111a222b323b414650565d60686d72787d8185888c8f919796989ea0a8b2bdc8d4dfd3c7bbb0a69f9c979596918e8b8884807c77716d66605c544f444039302820170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b5c2cfd8ccc0b6ac978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b3333333333333333333232302e2d2a2521201d19130f0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3ebe3dbd4d0cccbc8c8c8c8c8c8c8c8c8c8c8cfcac6c5c3bfbab8b0aba49f948f837a6d665c51453d30271d120700000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000008111a232c343c444c525a62686d737a7f84898e9197999b9ea1a9a5aaacb2bac3ced9e3d8ccc2b8b0aba9a4a8a09e9b9896918d88837e79726d666059514a423a322921170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8b4c1cdd2c8bbafa49a897c6f6356493c30231609000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e262626262626262626252321211e1a1413110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3f2e9e1dbd6d3d2d1d1d1d1d1d1d1d2d3d6dbdbd6d2d1d0cbc7c2bdb5afa69f959082786d60594f42392e23180c00000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000006101a232c353e464e565e616c717a80858c91969a9ea1a9a8abadb3b1b7b8bdc3ccd5e0e9ded4cac2bbb7b6b1b2acaaa8a8a09e9a95908b847f78706b605c544c443b332920170c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b0bbc4c5c0b9ac9f93867a6d6154473a2e211407000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211a1a1a1a1a1a191918161514120e090704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3e9e0d7d0cac6c5c5c5c5c5c5c5c5c5c6cad0d0d1d4d8dcd6d3d0c7c0bbb0a79f948d80746b61544b4034281c1106000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000040d18222b353e474f5860686e757e858d92989ea1a8abadb3b5b8b9bebec4c5c8ced5dee7f0e6dcd4ccc7c3c2bebdb9b7b4b2acaaa7a09d96918b837d736d665e564d453b32291e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89949fa9b2b8b9b7aea59d908376685e5246392d201307000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150d0d0d0d0d0d0c0b0a08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3e1d7cec5bebab8b8b8b8b8b8b8b8b8babfbec3c4c8cdd5dae0d9d2ccc2b9b0a69d92897d70665c5145382e23170b000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000010c161f2a343d474f59616a6f7a828b92979fa2aaacb2b8b9bec2c4c6c9cfd1d2d4d9e0e7f0f8eee6ded8d3d0cfcec9c5c4c1bdb9b7b1aca9a19e95908880786d685e574d443a30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a76828f97a1a8abacaba49d928a7d7063564c41362a1d1105000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e6dbd0c5bcb3aeababababababababacaeb4b2b6b8bcc2c9cfd6dfddd7cbc2b8aea49e9184796d60544a3f34281c10030000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000008131e28313c464f59616b707c858f949ea1a9aeb4b9bdc4c6c9cfd1d2d5dadcdddfe4e9f0f8fff6eee7e2dddbdad9d5d2d1cec9c5c3bcb8b2ada7a09a938d827a6e695e564c43392e23180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58616e7b8591969c9e9f9e9b928d81746b6155443a3025190d01000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e2d6cabeb3aaa29f9e9e9e9e9e9e9e9fa2aaa5a9abb1b9bec5cdd5deddd4cac0b9aca1968b7f72665c5044382b1f12060000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000010d19242f3a434e58606b707d8691979ea6adb3babfc5c9ced2d5d5d2d1cdcacfd0d3d8dee6eef6ede4dcd6d1cecdcbced2d3d6d5d2cdc8c4bdb9b1aca49f9490847b6e685e554b4034281e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d46535f696f7c848c909292918e8980786d60594f4432291e130800000b1825323e4b5865717e8b98a4b1becbd7cec1b4a89b8e8175685b4e4231251e2a36414c566b7884919eabb7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6dfd3c6baaea2989292929292929292929895989d9fa7adb3bbc3ccd5dfdcd5c9bdb2a89e9184786d6053463a2e23170c0000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000004111d2935414c555f6a707d869298a1a9b0b9bec5cad0d5d7d3cec9c5c4c0bdc3c4c7cdd4dce6eee4dbd2cbc5c2c0bec1c5c6cad0d5d9d4cfc9c3beb6afa69f9691847a6d675c51453e30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a36424d575f6a6f797f83858684817c746d665c50473e3320170c0200000b1825323e4b5865717e8b98a4b1becbd7cfc2b5a89c8f827569574d42362a232d3946525e687985929facb8c5d2d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6ded2c5b8ab9f9285858585858585858586888b90959ea1a9b1bac3cdd7e1dacec4b9ada1968a7d7064544a3f34281c100300121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000040f19222c3945515d676f7c869298a2aab3bbc1c9cfd6dad5ccc7c4bdb9b7b3b0b6b7bbc2cad4dee7dcd2c8c0bab5b4b1b5b8babfc6c9ced7dad5d0c7c0bbb0a8a0969083796d60594f43392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a26313b454e585f676d7276787978756f6b605c544a3f352c210e050000000b1825323e4b5865717e8b98a4b1becbd7d1c4b7aa9e918477695e53463b322f333b4754616e7a8798a2aebac6d3d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7878787878787879797b7f838a9297a0a8b1bbc5cfdbe0d5c9bdb2a89b8e8175665c5044382c1f120600121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000a16202c38434e58606d7a849198a2aab4bcc4cdd5dad6cec9c1bbb7b2acaaa7a4a9abb0b8c2cdd8e2d6cbc0b6aea9a7a5a8acaeb4b9bdc4ccd2d9d9d2ccc2bab2a89f958d80746b61554b4034281c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333c464e555d6065696b6c6b68636059504a42382e231a10000000000b1825323e4b5865717e8b98a4b1becbd7d2c5b9aca096877b6e61574d443d3c3d454f5964717d8a97aab4bfcad6d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d706b6b6b6b6b6b666d6e72767d859195a0a9b3becad6e0dacfc4b8ab9f9285796d6053463a2d20130700121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000030f1b27323b4854606a74818e96a0aab4bcc6ced6ddd4ccc4bdb9b0aaa8a09e9a979c9fa6b0bbc7d3ddd1c5baaea49d9a989b9fa2aaacb2bbc0c7d0d8ddd8ccc3bab1a79d928a7d70675c5145382e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18212a343c434b5153595d5f5f5e5b56544f443f3830261c1108000000000b1825323e4b5865717e8b98a4b1becbd7d5c9bdb2a8998d8073695f564e4a494a4f57606b76828f9ca9b5c2d0dbd4c7bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d7cbc0b5ab94877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70635f5f5f5f545c6062656b707b839197a2adb9c4cedadfd3c6baada297887c6f6255493c2f22160900121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000006131f2b37434e58626f7c87939fa8b2bcc6cfd8ded4cbc2bab2aca69e9c96918d8a90949fabb7c4d0dbcec2b5a99d928d8b8e92989ea1a8afb5bdc6ced8ded5ccc3b9aea49e9184796d60544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a31394045474c505253514e4948443d342e261e140a00000000000b1825323e4b5865717e8b98a4b1becbd7d9cec4b8ab9f92867b6e686058575657596069707d89949fabb7c3d0e0d4c8bbafa49a877a6e6154473b2e2114080000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfced9d4c7bbafa399877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063575252524b5153555961696e7b85929ea8b2bdc9d5e1d6cabeb3a9988b7e7265584b3f3225180c00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000815222e3b4754606a76828f9aa4afbac3ced8e1d5ccc2b9b1a8a19e948f8984807d82909ca9b6c3cfdacdc0b4a79a8d807e82858b91969fa4abb4bcc6d0d9ded4cbc0b9aca0968b7f72665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000610181f282f35393a3f43454645423c3b383228231c140c0200000000000b1825323e4b5865717e8b98a4b1becbd7dfd3c6baaea29890837a6f6a65636263656b707b84919ea6b0bbc7d3dfd2c6b9ac9f93867a6d6053473a2d2014070000000000000000000000000000000000000b1825313e4b5864717e8b97a8b2bdc8cfcdc5b9ac9f9286796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a4545404546484f575f69727e8b96a1acb9c5d2dedbd0c0b3a79a8d8074675a4d4134271a0e00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000004101c2834404b54626f7c89949facb6c0ccd5e0d9cfc3bab1a79f969189827d787475828f9ca8b5c2cfd9ccbfb2a6998c7f73757a7f848d9399a3aab4bec7d2ddddd5c9bdb2a89e9184796d6053463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161d24292c2d323638393835302f2c272117110a020000000000000b1825323e4b5865717e8b98a4b1becbd7e2d6cabeb4aaa09590837c7672706f7072767d849196a1adb8c2ccd8ded1c4b8ab9e918578675c5145382c1f13060000000000000000000000000000000000000915222f3c4855626f7b8896a0acb8bdc0c0bbb2a89d908377665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d2e34383a3e454d57606d7884919eabb7c4d1dedbcec2b5a89b8f8275685c4f4235291c0f00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000006131f2c3845515c6674818e9ba6b0bec7d2dedcd1c7bdb2a89f9590847d75706c6575828f9ca8b5c2cfd9ccbfb2a6998c7f73676d727980879298a3acb6c0ccd8e1d9cec4b9aca1968a7d7064544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181d2020262a2c2c2b2823221f1b160b0600000000000000000b1825323e4b5865717e8b98a4b1becbd7e7dbd0c5bcb1a7a0959187827f7d7c7d7f83899196a1a8b2bdcad4dedccfc2b5a99c8f827669554b4034291c10040000000000000000000000000000000000000613202d394653606c7884919da4adb2b3b3b0a9a1968c7f7266544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30282c2d333b44505c6674808d9aa7b3c0cddadcd0c3b6a99d9083766a5d5043372a1d1000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000713202d3a4653606d7985929fabb8c2d0d9e4d7cbc0b5aba09690837a706b63606975828f9ca8b5c2cfd9ccbfb2a6998c7f736660676d737e86929aa4afbbc5cfdae0d5c9bdb2a89b8e8275665c5044382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d101314191d1f201e1b1615130f0a040000000000000000000b1825323e4b5865717e8b98a4b1becbd7e4e2d7cec3b9b1a7a09a938f8b8a898a8c90949ea1a8b2bac4cfdce0d4c8bcb1a7998c7f7366594c402f23180c0000000000000000000000000000000000000005121f2b3744505b65717e8a929ea1a8a7a6a69f979184796d6054473a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30241f2028343f4a5464717e8b97a4b1becad7ddd0c3b7aa9d9084776a5d5144372a1e1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000a1623303d495663707d8997a2adbac6d4e2e0d3c7bbafa39991847a6d6860595c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366555d606c707d88939fa9b3bec9d5e1dacec4b8ac9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c101213120f0909070300000000000000000000000b1825323e4b5865717e8b98a4b1becbd7e4e9e0d5cbc3b9b1aca49f9c98969596989c9fa6adb2bac4ccd6e1d7cec6b8aca095887c6f6255483c2f22150700000000000000000000000000000000000000030f1b27333f4953616c73808a9196999a9998948f857c6f675d5145392c1c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30241717232e3d4a5663707d8996a3b0bcc9d6ddd1c4b7aa9e9184776b5e5144382b1e1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000d192633404c5966737f8c99a9b3becad6e6dfd2c5b9ac9f92877c6f685e564f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f736659515a616b73808d97a1adb9c6d2dfdfd3c6baaea298897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7e4e6ded8d3cbc3beb6afaca9a5a3a2a3a5a9abb0b9bdc4ccd6ded8cfc6bcb1a79d9083776a5f53473b2e21150800000000000000000000000000000000000000000b17222d3841505a636e737e84898c8d8d8b88827b6f6a60554b4135291d0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024171a24313d4a5764707d8a97a3b0bdcad6ddd0c4b7aa9d9184776a5e5144372b1e1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800030f1b27333f49536975828f9ca8b5c2d0dbe2d5c9beb3a99b8e81746a5f564c4f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c5059606d7985929eabb8c5d0dbe2d6cabfb4aa988b7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000040607070808080807060503000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7e6ddd4cdc7c4c3c3c0bbb9b5b2b0afb0b2b6b7bbc2c9cfd6dbd6cfc6bdb4aa9f958a7e7164584e43372b1f1206000000000000000000000000000000000000000006111b262f3e48525c636c71797d7f80807e7b766e6960584e433a2f24180d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d302424252a34404b5465717e8b98a4b1becbd7ddd0c3b6aa9d9083776a5d5044372a1d1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080005121f2b3744505b657784919eaab7c4d1dddfd2c6b9ada197887c6f62584e434f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c45515d67737f8c99aab4bfcad6e2dbd0c0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000010407070a070c10131414151515151413120f0b0608070502000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7ded4cbc2bcb7b6b6b7bcc2c2bebdbcbdbfc3c4c7cdd5d8d4d0cac3bdb4aba2989083786c6053463c32261b0f030000000000000000000000000000000000000000000a141d2c36404a525a61666d70737473726e6a615f574e463c31281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d31313130363d45515c6674818e9ba7b4c1cedadccfc2b6a99c8f8376695c504336291d1000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000613202d394653606c7886929facb9c5d2dfded1c5b8ab9e9285796c605346424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c404b55626f7c8898a2aebac7d3e0dbcfc2b5a89c8f8275695c4f4236291c0f00000000000000000000000000000000000306080d111314171a181d1f20212122222121201f1b17181514120e090602000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7d8cdc2b8b0aba9a9abb0b8bcc3c6cad0cbcfd0cfced2ccc8c5bebab1aba39992867c6f665b5044382a20150a00000000000000000000000000000000000000000000020b1a242e38404850545c606366676665625f57534d453c342b1f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3d3d3e3f42464f58606d7985919eabb8c4d1dedacdc1b4a79a8e8174675b4e4134281b0e00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000714212d3a4754606d7a8799a3aebac7d3e0dccfc2b5a99c8f8276655b5044424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c404653606c7985929facb8c5d2dfdcd0c3b6a99d9083766a5d5043372a1d10000000000000000000000000000001040a0f1215191d2021232624292c2d2e2e2f2f2e2e2d2b27222521211e1a14120e090300000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7d3c7bcb0a69f9c9c9fa6acb1b8babec0c1c2c3c2c1c1c0bbb9b3ada7a09992877e706a5f544a3f3328180e04000000000000000000000000000000000000000000000008121c262e363e424b515356595a5a5855534e46423b332b22190d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a4a4a4a4a4b4d5259606a727f8b97a1adb9c6d2dfd7cbc0b5ab998c7f7266594c3f3326190c00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000814212e3b4754616e7a8794abb4bfcbd7e3dacec1b4a79b8e81746853493f424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c4044505b657884919eabb7c4d1deddd0c3b7aa9d9084776a5d5144372a1e1100000000000000000000000001070d10151a1f2124292c2d30332f35383a3a3b3b3b3b3a3937332d312e2d2a25211e1a15100b040000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7d0c4b7ab9f949090949da0a7abaeb4b4b5b5b6b6b5b4b6afaca9a29f9590877e716c61584e42382d221706000000000000000000000000000000000000000000000000000a141c242c30394045464a4c4d4d4b4847423c36312a2119100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d706357575757575758575e616b6f7c86929fa9b3bec9d5e0d3c7bbafa399897d706356493d3023160a00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000815212e3b4854616e7b8794a1aebacfdae6dacdc0b4a79a8d8174675a4e41424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c40404b556a7784909daab7c3d0ddddd0c4b7aa9d9184776a5e5144372b1e110000000000000000000000060b12181d20262b2e2f35393a3d404240454747484848484746443f413e3b3a36312e2b261f1b160e0903000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cfc3b6a99c9082838a90959b9fa2aaa7a8a9a9a9a8a7aca49f9d97928d837c716c615a50463c2f261c110600000000000000000000000000000000000000000000000000020a121b1e272e34383a3d4041403f3b3a37312a261f180f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70646464646464646566696e747d859198a2aebbc4cfdadfd2c5b9ac9f92867a6d6053473a2d20140700121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000714212e3a4754616d7a8794a9b3bec9d5e2dbcec1b4a89b8e817568554b40424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c4045515c677885919eabb8c4d1deddd0c3b6aa9d9083776a5d5044372a1d11000000000000000000020a11171d24292c31373a3c4145474a4d4f4b51535454555554545350494d4b4846423b3a37312c27211a140d060000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e81767d83898e9298989a9b9c9d9c9b9a999a93908b8580796f6a615a50483e342a1d140a00000000000000000000000000000000000000000000000000000000090c151d23282c2d30333433322f2e2b26201a140e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70707070707070717273767b80879197a1aab4becdd6e1d6cabeb3a99c8f8276675d5145392c20130600121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000713202d3a4653606d798697a1adb9c6d2dfdccfc3b6a99c908376675d5145424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c404653606d7986929facb9c5d2dfdccfc3b6a99c908376695d5043362a1d100000000000000000050b141c22282f35393c4347484c525456595b555d60616162626161605b535a5854534d4847423c38322a261f170f0600000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e817470777d8185898b8d8e8f908f8e8e8c8a86837f7a736d675f5850483e362c22180b020000000000000000000000000000000000000000000000000000000000030b12181c1f20232627272522211e1a150e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d9ccbfb3a6998c807d7d7d7d7d7d7d7d7e8083868d9299a1a9b3bcc5d0dfdbd3c6baada2978b7e7165554b4035291d100400121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080006131f2c3845515c677885929eabb8c5d1dedfd2c5b9ac9f92867a6d6053493f4f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c424d5663707d8999a3aebbc7d3e0dbcec1b4a89b8e8175685b4e4235281b0f00000000000000060f171d262d33394045474e5355565d606366686a676d6d6e6e6e6e6d6c65696764615e5755534d48443d3631292117110a030000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174686b7075797c7e81828283838281807d7a77726d67605c554e463e362c241a10060000000000000000000000000000000000000000000000000000000000000000070c10131317191a1a181514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6dacdc1b4a89c928c8a8a8a8a8a8a8a8a8b8d9092999fa3abb3bbc4ced7ddd5c9beb3a99f92857a6d6054473a2f24180d0100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080004101c2834404b556a7683909da9b6c3d2dde0d3c7baaea3998a7e71655b50444f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c46525e6974818d9aabb5bfcbd7e3d9ccbfb3a6998c807366594d4033261a0d000000000000060f1821292f383f444b5153585f6266686d70737577787a7a7b7b7b7b7a79787674716e6966625f57544f46423b3328231c150c0300000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174686063676d6f717475767676757473706d6865605d55514b433c342c241a120800000000000000000000000000000000000000000000000000000000000000000000000406070a0d0e0d0c080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6ddd0c4b9aea49c99979797979797979798999c9fa3abafb5bdc4cdd6ddd4cbc2b9ada1978c8073675d5145392c1d12070000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000c18232e414e5b6774818e9aacb6c0ccd8e3d7cbbfb4ab9d9083786c6059504f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c525b616e7b86929facb8c5d1dce1d4c8bdb2a8978a7d7164574a3e3124170b0000000000040d18212a333b424a50555d60656a6f73777a7d8082838586878788888787868483807e7b77736e69636059534d453f342e261e150c03000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b555c6062656768696a6968676663605d5653514b454039312a221a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e1d5cabfb6aea8a6a3a3a3a3a3a3a3a4a5a6a9acafb5bbc0c7cfd6dcd7cbc2b8afa59e91857a6d60554c4135291d0c010000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000071825313e4b5864717e8b9aa4afbbc8d4e0dcd1c6b8aca0958c7f726b615a525c6975828f9ca8b5c2cfd9ccbfb2a6998c7f736659535c636d75818f98a3aebac7d3e3ded1c5b8aca096877b6e6154473b2e21140800000000010c161f2a333c454d545b60676d72777b7f8386898c8e90929794949595949992918f8d8b8784807b76706b615f5750443f3830271e150b000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4b515356585a5b5c5d5c5b5b595754524c4745403a342f271f181008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3dcd1c8bfb9b4b3b0b0b0b0b0b0b0b0b1b3b6b9bbc0c7cbd1d9d9d1cbc1b9b0a69d938a7e71685d52433a2f24190d000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000815212e3b4854616e7b87939facb9c4cfdae2d4c8bcb1a79f92877d716c615e566975828f9ca8b5c2cfd9ccbfb2a6998c7f7366575f626e737f8c939eaab4bfcbd6e3d8ccc0b6ac9d918477695e52463a2d2014070000000008131e28313c454e575e666c72797e83888c90939a999b9d9fa2a9a1a1a1aba39f9e9c9a9796918c88827d756e69625a504a423930271c12070000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4546494b4e4f4f50504f4e4d4a4745413a39352f29231d150d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcd1dce7e3dad1cac4c1bfbdbdbdbdbdbdbdbdbec0c3c5c7cbd1d7d9d4cfc7c0bbb0a79f948e81746c61564c4131281e1308000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000714202d3a46525e697683909ca9b3bec9d5e1d9cec3bbafa39992867e746d68626975828f9ca8b5c2cfd9ccbfb2a6998c7f736662696e76808c919ca5afbcc6d0dcdfd4c8bbafa49a8c807366574d42362a1e1105000000010d19242f3a434e575f696e787e858b9095999d9fa4aca8aaabadb3aeaeaeb5aeacaba9a7a8a09d99948f89827b716c605c544a42392e2318100700000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e413a3c3e41424343434241403d3a39352f2c29241d18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996abb4bfcbd7dcdcdcdcd5d0cdcccacacacacacacacacbcccfd2d3d7d5d2cec8c3bdb5afa69e959082796d605a50443a2f1f160c01000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000005121e2a36424d5765717e8b97a1adb9c3cfd9dfd7cbc0b5aba3989288817a736e6975828f9ca8b5c2cfd9ccbfb2a6998c7f736a6f747b828d929ca3adb7c1ced8e1d8ccc0b6ac9f93877b6e6255483b30251a0e0200000004111d2935414c555f6a6e7b828b92979da0a7aaacafb6b5b6b8babebabbbbbfbbb9b7b6b3b2acaaa69f9c948f867e746d665c544a40342822190b02000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e41352f323435363736353433302d2c2924201d18130c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3aebac7cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcecdcfc9c5c3bcb8b1aba39f948f82796d675c51483e32281e0d0400000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000020e1a25303b4753606d7985919ea7b1bdc7d1dcdcd1c7bdb4aaa39a938e85807b7775828f9ca8b5c2cfd9ccbfb2a6998c7f74787c81868f949ca4adb5bfc9d3e0d9cfc7bbafa49a8f8275695f53473a2e1f1409000000000613202c3945515d676e7c8490949ea1a9acb1b7b9bbc0c1c3c5c6cacfc8d1cbc7c5c4c2c0bdb8b7b0aba69e98928b81786d665c51443f342b1d140a000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e413528252728292a292828262421201d1913110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929fabb5bdc2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1c1bfbdb9b7b1aca7a099928c82796d675d554b40362c20160c0000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000009141f2c3845515c67727f8c95a0abb5c0cbd7dbd9cfc6bcb4aca49f97928d88848083909daab7c3d0dbcfc2b5a89c8f828184898e92989fa6aeb6bfc7d1dbdcd1c7bdb2a99f93877c6f62574d42372b1e0d02000000030f1c28333f4a54606d7a8491969fa6adb3b8bcc3c6c8ccd2d0d1cecccbcacbcccdd0d1cfcec8c5c2bbb7b0aaa29f938e81786d605b51463d2f261c11060000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b1b1c1c1d1d1c1b1a171413110d080401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d6775828f99a4adb2b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b5b4b2b2adaba7a09d95908780786d675d554c43392e241a0d040000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000004101c2934404b55606d78839099a3afbbc1c9d7dcd8cfc6beb6afa9a29f9a95908d9095a0acb8c5d1dcd0c3b7aa9e948f8e91969b9fa3aab0b8c0c8d1d9d9d2cbc0b5aba1968e81746a6054453c31261a0e0000000006121f2b3844505b6673808d96a0a9b0b9bec5c8ced2d1cfc9c5c4c1bfbebebebfc0c3c6c8ccd2d1ccc7c1bcb4aea59d938e81756d63584e42382d22170b0000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e0f1010100f0e0d0a07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7c87939ea1a8a8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a8a7a5a8a19e9a95908b837c736c665d554c433a30271d1208000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000c18232f3944515c666f7c87929fa5afb7c0cbd1d8d8d0c7c0bbb3adaba7a09d9a9da0a7b1bcc8d4dfd3c7bbb0a69e9c9b9ea1a8acaeb4bcc2cad1dad7d0c7c0bbafa39991847a6d61584e43332a1f1509000000000613202d394653606c7985929ea8b2bbc2c9cfd3cdc8c4c3bdb9b8b5b3b2b1b2b2b4b7b9bbc0c7c9cfd3cec6bfbaafa59e938c7f726a60544a3f33281b110600000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e0203040302010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f394754606a727f8a91969a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a999796918d89837e786f6a605b544b433a31281e150b00000000000000121f2c3845525f6b7885929eabb8c5d1d4c8bdb2a894877a6d6154473a2e2114070000000007121d2834404a54606b727f8c939ea5afbbbfc6cfd6d9d2ccc5bebab8b1acaaa7aaacb1b9c3ced9e3d7ccc1b8b0aaa8a7abacb2b9babfc6cfd4dad5cdc5bdb5afa39f92877d6f685e52463c3221180e03000000000815222e3b4855616e7b8897a1adbac3cdd1cbc7c3bcb8b6b2adaba8a6a5a4a5a6a7aaacafb6b9bec5cdd3d0cac0b7afa59f93877c6f665b5044382d22170b00000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e58626d727d848a8d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8e8c8a8784817c77716c666058504a423a31281f160c0300000000000000111e2b3844515e6b7784919eaab7c4d0d1c5b9aca09686786d6053463a2d20130700000000010c18232e39424f59636d74818e939da5aeb5bdc3cad0d6d8d0cac6c3bcb8b7b3b7b8bcc3cbd5dfe9ded3cac1bbb7b5b4b7b9bdc4c7cbd1d8d5cfc9c2bbb3aba49f918b7f726b60564c41342b200f0600000000000916222f3c4955626f7c8895a7b1bec7cac6bfbbb9b1abaaa8a19e9b99989798999a9d9fa4acadb3bbc1c9d2d6c9c1bbafa4999083786c6053493f33271b0f03000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b27323d46515b626c70797d81828283838383838383838383838383838383828282817f7d7b78746f6b64605b544e443f382f281f160d0400000000000000000f1c2936424f5c6975828f9ca9b3bec5c5bfb4aa9e918477665c5144382c1f1206000000000007121c27303d46515b606d78818e939fa3abb2babec5cad0d3d6d3cec8c5c3c0c3c5c8ced5dde7efe5dcd3ccc7c3c2c1c4c5c9ced3d7d3cec9c4bdb9b0a9a299938b7f736d62594f443a3022190f0000000000000714212e3a4754616d7a87959facb6bfbebab5aeaca79f9d9896918e8c8b8b8b8c8d90939a9ea1a9afb7c0c9d2d7ccc0b5ab9f958b7e71655b5044372b1f1207000000000000000000000000000b1825323e4b5865717e8b98a4b1becfdacec1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343f49515a61666d71747576767676767676767676767676767676767675757472716e696763605953504a423d332d261d160d040000000000000000000c1925323f4c5865727f8b97a1acb4b8b8b4aea2988d807367544a4034281c10040000000000000b151e2b343f44505c666d78818c9299a0a8aeb4babec5c7cdd2d3d4d1d0cdd0d1d4d9dfe7eff7eee5ded7d3d0cfced1d2d5d2d1cbc7c4bdb9b2ada69f9792877f736d635b51473d32281e10070000000000000713202d3946525e687683909aa4aeb4b3adaba39f9b95908c888482807f7e7f7f8184878c92979ea5afb7c0ccd5d2c7bdb1a79d9184786c605346392e23180c000000000000000000000000000b1724313e4a5764717d8a97a8b2bdc9d2cbc0b5ab9a8d8073675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222d373f4750545c606467686969696969696969696969696969696969696968676664615e5756544f46443f382f28221c140b04000000000000000000000714202d3a4753606d7985929aa2aaabacaaa39f92867b6e6154483b2e23180c00000000000000030c192228343f4a545c666d747f8791969fa2aaadb3b7bcc2c5c7cad0cfd1d2d6dae1e9f1f7fef5f0e8e0dad5d2d1cfcfcac6c5c0bbb9b2aca8a19e948f857e726d635b51493f352b20160c0000000000000005111d2a36414c5663707d88939fa2aaa9a29f99928e88837f7b7875737271727374777a7f858e939da5afbac3ced9d0c3b8aca0958a7d7063554b4034281c10040000000000000000000000000915222f3c4855626f7b8896a1adb9c1c5c3bbafa3998b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b252d353e424b5153575a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5b595754534d4948443d38332d261d17110a0200000000000000000000000613202c3945515d67707d8892989d9f9f9d98928b7e71695e52463a2d1c12070000000000000000071017232e38424a545c606d727c848c92989fa2a9abb0b5b8babfc1c3c5c6cacfd7dfe5eef5ece3ded6cfc9c5c4c2c0beb9b8b5afaca8a19e96918a827b706c625b514940372d23190e0400000000000000010d1925303a4854606b727f8b92989a9997928d86817c77726e6968666564656667686d7279818e939da8b2bdc8d4d4c8bdb1a89b8e8175675c5145382c1f13060000000000000000000000000613202d394653606c7884919ea6b0b8b9b8b1a89f92867b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b232c30394045464a4e4f4f505050505050505050505050505050504f4f4f4e4c4a4846423c3b38322b28221c140b060000000000000000000000000004111d2935404b55616b717e868d909292918d867e716c61574d42362a1e0b0000000000000000000006111c263038424a505b626a6f797f858c92979c9fa6a9acaeb4b4b6b8b9bec5cdd3dce5ede3dad1ccc4bdb9b7b6b3b3adababa39f9c96918b847e766e69615a514940372e251b110700000000000000000008131e2c38444f59636d727e868b8d8c8985807b746f6a65615f575958585859565d61676d78818e96a0acb8c4ced9cec3b8ab9f9285796d6053463a2d20130700000000000000000000000005121f2b3744505b65727f8b949ea6abacaba7a0968e8174695e52463a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111a1e272e34383a3e41424343434343434343434343434343434343434242413f3e3b3a36312f2c271f1c17110a020000000000000000000000000000010d18242f3a434f59616c717b8084858584807b716c625a50453b30251a0e00000000000000000000000a141e2630383f44515860666d727a80858b9094989c9fa2aaa7a9abadb3bbc1cad3dee6dbd1c8bfbab2adaba9a7a9a29e9b99928f8a847f79716c615e5750473f372e251c12090000000000000000000002101c27323d47515b636d717a7e807f7d79736e69625f58555759595a5959575553555d666d7984919ea8b2bdc9d5d3c6baaea298897c706356493d3023160a000000000000000000000000030f1b27333f4953606d78828f949b9e9f9e9c9590847a6d60574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080c151d23282c2d31343536363636363636363636363636363636363636353433312e2d2a2522201b160f0b06000000000000000000000000000000000007131d28313e47505a61696e7377787977746e69625a50483e33291f14090000000000000000000000020c151e262e343f464e545c60686d737a7e83888b8f9298989a9c9ea1a9b0b8c1ccd7e0d5cabfb6ada8a19e9c9a9797928e8b86827d79726d67615a524d453e352d251c130a0000000000000000000000000b16212b353f49515a62686d727373706d66615e575d60626465666666656462605c545d67707d8a96a1acb9c5d2d6cabeb4aa998c7f7266594c3f33261908000000000000000000000000000b17222d3844505c666d79828a8f9192928f8b837b6e685d52453b30251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20242729292929292929292929292929292929292929292828262421211e1a15130f0b0300000000000000000000000000000000000000010c161f2c353e4850575e61676a6c6c6a67615f5750483f362d21170d02000000000000000000000000030c151c2328343c424b51565e61676d71767b7f8286888b8e9092979ea6b0bbc7d3dcd0c4b8ada39c96918f8d8b8885817e7a75716d66605d555046423b332c231b130a01000000000000000000000000050f19232e373f4850565e6165676663605c5d6065676d6f717273737372716f6d666460606c7884919eabb7c4d1dbd0c2b5a89b8f8275685c4f423025190d0100000000000000000000000006111b28343f4a545d676d757d82858685837e786e695e564c4133291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313171b1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1c1b19171514120e09070300000000000000000000000000000000000000000000040d1a232c363e454d52545a5d5f5f5e5a55534d453f362d241b0f050000000000000000000000000000030a1117222b303940454c52555d6065696e7276797c7e8183858f949eaab7c3d0dacdc0b4a89c918c8482807e7b7975716d6864605c54514b433e363029211a110901000000000000000000000000000007111c252e363f444c5254585a59565e61686d72767a7c7e7f7f807f7f7d7c7975716d666673808d99a6b3c0d1dcd0c4b7aa9d9184776a564c41362a1d1105000000000000000000000000000b17232e38424b555d606c707578797876716d665e574d433a2f21170d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070b0e0f1010101010101010101010101010101010100f0f0e0c0b08070502000000000000000000000000000000000000000000000000000008111a242c333b4246474d515252514d4846423b332d241b120900000000000000000000000000000000000610191e272e343a41464b5153575f6165666d6f72747678828f9ca8b5c2cfd9ccbfb2a6998c7f787674716e6c6564615e5653504a454039312a251f170f0800000000000000000000000000000000000a131c242d323a4146474b515a62686d747a7f8286888a8c8c8d8c8c8a8886827e78716c707d8a97abb4bfcbd7d2c5b8ac9f928579685e5246392d2013070000000000000000000000000006111c26303a434b515a6164686b6c6b6965605c544d453b31281e0f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a202930363a3b4044454644413b3a363129211b120900000000000000000000000000000000000000070c151d232830363a4045474d5355545c606265676975828f9ca8b5c2cfd9ccbfb2a6998c7f7369676462605b5354524c46443f38352f271f1a140d05000000000000000000000000000000000000010a121b20293039434b555c606c717a80868b8f92999798999999989798928f8a847e756e7b8799a3aebac7d3d3c7baaea298877a6d6154473a2e21140700000000000000000000000000000a141e28313a41455055575c5e5f5f5c5853504a423b33291f160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0c0a070604010000000000000000000000000000000000000000000000000000000000010507070b0c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e171f252a2d2e3437393937342e2d2a261f170f09000000000000000000000000000000000000000000030b12181e252a2f35393b4246484a515355585b6875818e9ba8b4c1d0d9d0beb2a5988b7f72655a58555350494746413a38342e29241d150d09030000000000000000000000000000000000000000040e17232e38424b555d676d747e858d92989c9fa3aba5a6a6a6a5aaa29f9c96918a82797986929facb9c5d2d6cabfb4aa94887b6e6155483b2e2215080000000000000000000000000000020c161f282f353e44494a4f525352504b46443f38302921170d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131417191a19171413110d08010000000000000000000000000000000000000000000000000002080d11131417191a19161313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2021272a2c2c2b2722211e1a140d06000000000000000000000000000000000000000000000000070c13191d24292c31363a3b404446494d5a6774808d9aaab4bfc9d0c7bdb1a7978a7d7164574b4846443f3a3936302c28231c18120b03000000000000000000000000000000000000000000020c162028343f4a545d676d79818b92979fa2aaacaeb4b2b2b3b2b2b4aeaca8a19e948f837a85929eabb8c5d1dbd0bbaea295887b6f6255483c2f221509000000000000000000000000000000040d161d242933393c3d42454645433e3a38342e261e170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b12181c1f20232626262421201d19130c070100000000000000000000000000000000000000000001080d13191d20212426262623201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141a1e1f1f1e1a1514120e0903000000000000000000000000000000000000000000000000000002080d13181d20262a2d2e34383a3e4b5764717e8a98a2aeb9bdbebdb5ab9f95877b6e6154483b3937332d2d2a251f1c17110c07010000000000000000000000000000000000000000000008131e28323a44505c666d79828e939fa2a9aeb4b9babfbfbfc0bfbfbfbab8b2ada69e958f8384919eabb7c4d1d5c8bcafa295897c6f6256493c2f23160900000000000000000000000000000000040c131822282d30313538393836322d2c28231c150c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171d23292c2d30323333312d2c29241e18120b0300000000000000000000000000000000000000040c13191e25292d2e31333332302d2c28231d150c09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080d111213110e0807050200000000000000000000000000000000000000000000000000000000000001070d11141a1e2123282c2e3a4754616d7a86929fa5adb2b1b1aba499908376695e53463a2d2b2722201d1913100c06000000000000000000000000000000000000000000000000010d1925303a44505a606d78828f949da5adb3babfc5c7cbd1ccccccd0cac7c4bdb9b0a79f948f9196a1acb9c5d2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000001070d171c202324292b2c2c2925201f1c17110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22282f34383a3d3f403f3d3a39352f29231d150d040000000000000000000000000000000000050d161e24293035393a3e3f403f3d3a38342e271e1b120b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090e1214181c202d3946525e6873808d939ea1a8a4a79f9993877d7063574d42362a1f1b1713110d0803000000000000000000000000000000000000000000000000000005111d2935414c56616c74808d949fa6afbabec5cad0d3d4d1d0d1cbc7c5c7cbc9c1b9b0a69f9c9ea1a8b2bdc9d5d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000050b101416171c1f201f1d181312100c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d33394045474a4c4d4c4a4745413a342f271f160d04000000000000000000000000000000050e171f282f353a4146474a4c4d4c4946454039302d241d140b0100000000000000000000000000000000000000000000000000000000000001050708090b0b0c0c0b0b0a080706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070c111d2a36414c56606d78818b91969798979590877f726b6054453b31251a0f0b060501000000000000000000000000000000000000000000000000000000000713202d3946525e68707e8a929da6b0b8c1cacfd6d6cdc8c4c3bfbfbbb9bbbfbfc3c2b8b0aba9abacb2bac4cedad5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000004080a0a0f121312100b070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f383f444b5153565959595754514c45403931281f160c0100000000000000000000000000020d172029313a41454c5254575959595653514b423f372f261d13090000000000000000000000000000000000000000000000000000020507080d1114141618181919181717151313100c0707060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a44505c666d777e84888a8b8a87837d726d62594f4433291f14090000000000000000000000000000000000000000000000000000000000000005121e2b37424d57616d7a85929ea4aeb8c2cad6d7d0cac3bcb8b7b2b5aeacaeb5b2b7b8bcbbb7b6b7b9bdc4ccd6e0d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f38424a50555c606365666664605d55514b433a31281e13080000000000000000000000000008141e29323b434c52565e616466666563605c54514941382f251b0d03000000000000000000000000000000000000000000000003090e121415191e2021232425252525242322201f1c18161312100c0604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28343f4a545c656c72787c7d7e7d7b76706b625b51473d3221170d03000000000000000000000000000000000000000000000000000000000000000714212d3a46535f6974808d97a1adb6c0cad4d7cec6bfbab1acaaa5aba39fa3aba5aaacb1babfc2c4c5c9ced6dee8d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a545b60676d70727372706d67605c554c433a2f24190d040000000000000000000000010d1925303b444c565d60686d71727372706d66625b534b41372d1f150b010000000000000000000000000000000000000000060b0f141a1e2121252a2d2e30313232323131302f2d2c282323201f1c1712100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17232e38424a535b60656c6f7171706e6963605951493f352b210f050000000000000000000000000000000000000000000000000000000000000004111d2935414c56616e7b87929fa9b3bec8d2d8cec6bcb4aea7a09d989599929995989da0a7aeb4bcc6cfd5dae0e8e2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b666c72797d7f807f7d7a736d675d554c41352920150a000000000000000000000005111e2a36414c565e686d747a7d7f807f7c79726d645d53493f31271d1207000000000000000000000000000000000000020a11171c1f252a2d2e3036393b3c3e3e3f3f3e3e3d3b3a38342e302d2c28231f1c18120e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263038414950535b6062646564615e57544f473f372d23190f00000000000000000000000000000000000000000000000000000000000000000713202c3945525d6874818d99a3afbbc5cfdcd0c6bcb4aaa29f95908c88878686888c90959fa2aab4bdc6d1dce7f3e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c787f85898c8c8c8a8680796d675d51453d32271b0f03000000000000000000000714202d3946525e686e7a81868a8c8c8c89857e746f645b5143392f24180c0000000000000000000000000000000003090b141c22282b31363a3b3f414647494b4b4c4c4b4a4a48464540403c3a38342e2c28231c19140c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262f383f444950535557585754524d48443d352d251b110700000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929fabb5c0cdd6d6cbbfb4aaa298928b837f7b7a797a7b7f838c9298a2abb5bfcbd7dee9e2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55606c78818c929798999998928d83796d60584e43372b1f130600000000000000000007131f2c38434f59616e7a848e929999999897918b81746d62554b4035291d10040000000000000000000000000000050d141a1d262d33383b4246484c4c525456575858585857565553514b4c4946443f3a38342e2a251f18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141d262d33383f4446484a4b4a4846423b38322b231b1309000000000000000000000000000000000000000000000000000000000000000004101d2935404b5565717e8b98a2aebdc7d1ddd3c7baaea39892867f78726f6d676d6e72787f869299a3aebbc2cdd8e4e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d67737f8c939ea1a9a6aaa29f958e81756a6054473b2e2215080000000000000000000915222f3b4854606b76828f969fa3aba6a9a19e938b7f72675d5145382c1f130600000000000000000000000000080f171f252a2f383f44464d535458565e61636465656564646362605c54595653504a46444039363029231d150d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272d3337393c3e3e3d3b3a36302c272119110901000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d6776828f9caab4bfcfd9d3c7bbb0a69f92867d726c6662605d6062666c727d87929fa6b0bbc7d3dfe2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929fa5adb3b3b4aea79e93897c6f6256493c2f231609000000000000000000091623303c4956636f7c89949fa8aeb5b3b3ada59e9285796d6053473a2d2014070000000000000000000000010a111a212931363e424a5053575e616568686e6f717172727171706e6d66696663605c5453514a46413b342f271f1810080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b22272b2d2f3132312e2d2a251f1b160f07000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c5d0dfd0c3b7ab9f948a7e716b605b54545153545b606b717e8b949fabb7c3cdd9e4d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a2adb9bebfbfbaafa59a8d8073675a4d4034271a0d0100000000000000010e1a2734414d5a6774808d9aa6b0bbbfbfbeb9ada1978a7d7063574a3d3024170a00000000000000000000010a131c232c333b424650545b6064696e7275787a7c7e7e7f7f7e7d7d7b797775736f6d6664605c54524d454039312a221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b11171b1f202224252421201e1a14100b0400000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8999a3aebac7d3d4c8bcb1a79c8f82766c6159504a4745474a5059626c76828f9ca7b1bcc8d4e0d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a9b3becacfcac1b6a99d9083766a5d5043372a1d10040000000000000003101d2a3643505d697683909ca9b6c2cbcfc9beb3a9998c807366594d4033261a0d000000000000000000010a131c252d353e454d535a61666c71767b7f828587898a8b8b8b8b8a89888684827f7c7975716d66615e56514b433c342c231a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213151718171514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99abb4bfcbd7d1c5b8aca095887c6f625a50443f3a393a3f44505a626f7c8895a0acb8c4d1ded5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1d0dad1c4b7ab9e9184786b5e5145382b1e12050000000000000005111e2b3844515e6b7784919eaab7c4d1dacfc1b4a79a8e8174675b4e4134281b0e00000000000000000009131c252e373f474f575e616c71787e83878b8f929796979898989797969992918f8c8985827d79736e68605c554e463d352c23190d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090b0b0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b5c1d1dcd0c3b7aa9d9084776a6054483e332d2c2d333f4754606a7783909daab6c3d2ddd5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000008111b252e374049515961696e757d848a8f939a9b9ea2a9a4a4a5a5a4a4aba39f9e9c9998928f8a85807b736d675f584f473d352b1f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a546a7783909daab6c3d0d9ccbfb3a6998c807366584e4336282220222b37434e5865727f8c98acb6c0ccd8d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000040e1a232d374049525b636b707b828a91959c9fa4acabadb3b1b1b2b2b1b0b5afacaaa8aaa29f9b97918d8680796f6a61594f473d31281d13070000000000000000000000000000020507080b0d0d0b0807050200000000000000000000000000000000010507070b0d0d0b0807050200000000000000000000000000000000010407070b0c0d0c080806020000000000000000000000000000000000000000000006121f2b3844505b667885929eabb8c5d1d6c9bdb0a3968a7d7063574a3d322417131b27323c4956636f7c899aa4afbbc8d4d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000020c16202b353f49525b636d727d858f949da0a7acafb6b8b9bebdbebebebebdc0bbb9b7b5b4aeaba9a19e98928d847c706b61594f433a2f24180d01000000000000000000000002090e111414181919181414110e090200000000000000000000000002080d111314181919181514120e090300000000000000000000000002080d11131417191a181514120e090300000000000000000000000000000000000000000613202d394653606c7986939facb9c6d2d6cabfb4aa94877b6e6154473b2e21140a14202d3a4753606d7a86939facb9c6d2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000008131e28323d47515b636d737f8892979ea6acb1b9bbc0c5c6cacfcbcbcbcad1cbc7c5c4c2bebab8b3adaaa29f9691867d706b60554b4135291d110400000000000000000002080d14191e20212526262521201e1a140d0802000000000000000001070d13191d20212426262521211e1a140e0902000000000000000000070c13191d20212426262522211e1a150e09030000000000000000000000000000000000000714202d3a4753606d7a869aa4afbbc8d4d3c7baaea29886796d6053463a2d201307131f2c3945515d677885929fabb8c5d2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000010d1925303a444f59626d73808c939aa2a9b0b8bcc3c8ccd2d2d3d2cfcecdcccdcecfd2d1d0cac6c4beb9b4aea8a09892867d6f675d5145392c2013060000000000000000040c13191f252a2d2e313333312e2d2a251f19130c05000000000000040c13181e252a2d2e313333322e2d2a251f1a140d05000000000000030b12181e24292c2d313333322f2e2b261f1a140e0600000000000000000000000000000000000714212e3a4754616d7a8794a0b6c0ccd8d2c5b8ac9f928579665c5144382c1f1206101d2935404b556b7884919eabb7c4d1d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000005111d2935414c56606b727f8b929fa4acb3bbc1c8ced4d3d0cac6c5c3c1c0c0c0c1c3c5c7cbd1d2cfc9c6bfbab2aaa2989184796d6054473a2d21140700000000000000050e161e252930363a3b3e40403e3b3a36302a251e160e0500000000040d161d24293036393a3e40403e3b3a36312a251f170e0600000000030c151d23283035393a3e3f403f3b3a37312a261f180f06000000000000000000000000000000000714212e3a4754616d7a8794a0b6c0ccd8d2c5b8ab9f928578665b5044382b1f12060f1b27333f49536a7784919daab7c4d0d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000040f19232d3946525e68707d87929fa4afb6bec5cdd4d0cac6c5bebab8b6b4b3b3b3b5b6b9babfc5c6c9cfd0cac3bcb4aaa1978c7f7266594c3f3326190c000000000000050e17202830353b4246474b4c4c4b4746423b36302820170e050000040e161f282f353a4146474b4c4c4b4846423b36302920180f060000030d151e272e343a4145474a4c4d4b4847423c36312a211810060000000000000000000000000000000714202d3a4753606d7a869aa4afbbc8d4d2c6b9ac9f9386796c605346392d201306121f2b3744505b657885929eabb8c5d1d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000b16212c38434f59616d7a859199a3afbbc0c7d0d3cec5bebab8b3aeaba9a7a7a6a7a8a9acaeb4b8b9bec5c8cdcec6bcb2a99d9083776a5d5044372a1d110400000000020b172029323a41464d52545859595854524d46413a322920170b02020c162028313a41454c52545759595854534d46423b332a21180c03010b151f27303940454c52545759595855534d46423b332a22180d0400000000000000000000000000000613202d394653606c7986939facb9c6d2d4c8bbafa49a877a6d6154473a2e21140a13202d394653606c7986929facb9c5d2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000003101b27323b4854606b75818e97a1abb5c0ccd2d2c9c1bcb3adabaaa29f9c9b9a999a9b9c9fa3aaabadb3b8bcc3c8cfc4b8ab9f9285786c5f5245392c1f1206000000000a141d29333b444c52565e6164666664615e57524c443b32291d140a08131e28323a434b51565e6164666665615e57524d453c332a1e150b07121d273139434b51565d6064666665625f57534d453c342a1f160c010000000000000000000000000006121f2b3844505b667885929eabb8c5d1d8ccc0b6ac96897c706356493d32261b1118222f3b4855626e7b8899a3aebac7d3d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060202020202020205121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000713202c38444f59636f7c89939ea9b3bdc7d1d2c8c0b7afa9a29f9a9892908e8d8d8d8e9092989a9ea1a9abb1b8bcc3c3b8ab9f9285786c5f5245392c1f120600000006111b262f3b454d565e61696e717373716e69615e564d443b2f261b110d1924303a444c555d60686d717373716e69615e574d453c30271d120c18242f39434b555c60686d717273726e69615f574e463c31281d120700000000000000000000000000030f1c28333f4a546a7783909daab6c3d0ddd2bfb2a5998c7f7266584e43372b221d222a36414c5664717e8a97abb4bfcbd7d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120e0e0e0e0e0e0e0e0e121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000916222f3b4854606b7683909da5afbbc4cfd4cac0b6aea59e97928d88858381808080828386898d92979da0a7acb1b7b7b1a79c908376695d5043362a1d10030000000b17222d38414d575e686d747b7e7f7f7e7b756d685e564d41382d2217111d2935414c565d676d747a7e7f7f7e7b756e695f574d42392e2318101d2935404b555d676d737a7d7f807e7b766e695f584e43392f24180d01000000000000000000000000000b17222d424f5b6875828e9ba8b5c1d0dbd0c3b6a99d9083766a5f53473e342c292c343c46525e6875828f9ba8b5c2d1dcd5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1b1b1b1b1b1b1b1b1b1b1b1f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000005111d2935414c5663707c89959fabb7c1cdd6ccc2b8aea49c938e85807c7876747473747576797c80858a90959da0a7aaaaa7a0958b7f7265584c3f3225190c000000030f1b27333f49535e696e7a81878b8c8c8b87817a6e695e53493f33271b13202d3946525d686d7981868a8c8c8b87827b6e695f544b4034281c131f2c3945515d676d7980868a8c8c8b88827b6f6a5f554b4035291d100400000000000000000000000000061926333f4c5966727f8c99aab4bfcad6d1c4b8ab9f95887c6f625a50463e3935393e464f59616d7a86929facb9c5d2dfd5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c282828282828282828282828282b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000713202d3946525d6875828f9ba7b1bcc9d3d3c7bbb0a69c928d817a736f6a696867666768676d7073797e838a90959b9e9e9c959083796d6053463a2d20130700000005121f2b3744505b656e7b848e939999999a938e847b6e655b5044372b1f202c38444f59616d7a838d9299999998938f847b6e665c5145382c1f1f2b37434e58606d79828d9298999998948f857c6f675d5145392c201307000000000000000000000000000a1623303d495663707c8998a2aebac6d3d4c8bcb1a79c8f82756c61585047454145475058606b74818e99a3aebbc7d3e0d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245393535353535353535353535353535353845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000714212e3a4754616d7a86929facb9c2cddfd0c3b7ab9f948d80756d686260585b5a5a5a555c6063666d71777d83898e91918f8b837b6e675c5145382c1f13060000000613202d394653606c778390969fa4abaca49f969082776c605346392d20222f3b4854606b75828f959fa3aba6a59e969083796d6053463a2e23212e3a47535f6a74818e949fa3aaa6a69f979184796d6053473a2f24180c000000000000000000000000000714202d3a4753606d7985929facb8c5d0d8cdc2b7aa9e948a7e716a615a54514c51545a616a707d88939fabb5bfcbd7e3d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245414141414141414141414141414141414145525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000b1825313e4b5864717e8b99a3afbbc7d3d4c8bcb1a79c8f82776c615e56544e4f4f4f4f4b5153545c60646c70777d818484827f796e695e554b4034281c10040000000b1724313e4a5764717d8a959fa8afb5b6afa89f948a7d7164574a3e2e2323303d495663707c89949ea7afb5b2afa8a0958b7e7265544a3f3428222f3c4855626f7c87939fa6aeb4b3b0a9a0968c7f7265554b4035291d100400000000000000000000000006131f2c3845515c6775828f9ca9b3becad6d3c7bbb0a69f92867d716c64605d555d60646c717c85929aa4afbdc6d1dce7d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f524e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0005121e2a36424d576875828f9babb5c0cbd7d1c4b8aba095887c6f655b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a61646b7075777776726d665e574d43392e23180c000000020f1c2935424f5c6875828f9ba7b1bbc0c0bbb0a69c8f827569544a4034282834414e5b6774818e9aa6b0bbc0bfbab1a79d908376665c5044382c2733404d5a6673808d9aa4afbabfbfbbb2a89d908377675d5145392c1f130600000000000000000000000004101c2934404b5564717e8b97a2adbac6d0d7ccc1baaea29892857e76716d676b676d71767e859297a2acb6c0cfd8e3e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000714212d3a46535f697885929eabb8c5d1dcd0c3b6aa9d9083776a686868686868686868686868686868686868686868686b6b6965625f58524c443a3025190d04000003101c28343f4a546b7885919eabb8c2ccccc2b8ab9e928578665c5144382c2a3744515d6a7784909daab7c1cbccc3b9ac9f9286796d6053463a2d293643505c6976838f9cacb6c0cbcdc3b9ac9f93867a6d6053473a2d201407000000000000000000000000000c18232f3a4753606d7985929faab4bfcad6d6cabfb4aaa297928a827e7a7877787a7e828a9297a2a9b3bec7d2e1eae2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c68686868686868686868686868686868686868686868686b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000815222e3b4855616e7b8897a1adb9c6d2dacdc1b4a79a8e81757575757575757575757575757575757575757575757575757574726f6a615e564c41362a21160a000006121f2c3844505c667986929facb9c5d2d2c6b9ac9f9386796d6053463a2d2b3845525e6b7885919eabb8c4d1d3c7bbafa399877a6e6154473b2e2a3744515d6a7784909daab7c3d2d4c8bbafa49a877b6e6154483b2e2115080000000000000000000000000007131f2c3845515d6774808d98a2aebac4d0d9d0c6bcb3a9a29f948f8a87858485878a8f949ea2a9b3bcc5d0d9e4f3e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f928578747474747474747474747474747474747474747474747474747885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000a1724303d4a5763707d8a96a9b3bec9d5ddd0c3b7aa9d90838182828282828282828282828282828282828282828282828281817f7c766d685e52463d32271b0f03000713202d3a4653606d798699a3afbbc7d3d4c8bbafa49a867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d7cbc0b5ab94877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d8ccc0b6ac95887b6e6255483b2f2215080000000000000000000000000004101d2935404b55616e7a86929fa8b2bec7d2d7cec5bcb3ada69f9c979792919297979c9fa6adb3bbc5ced7e2ebf0e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f928781818181818181818181818181818181818181818181818181818186929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f000c1925323f4c5865727f8b98a5b2becfdaded1c5b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8b88827a6d61594f43382c1f1307000713202d3a4653606d798693a0b5c0cbd7d8ccc0b6a093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2dcd1baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1ddd2bbaea195887b6e6255483b2f22150800000000000000000000000000000c18242f3946525e6873808d96a1acb6c0ccd8d7cec5bebab0aba9a9a29f9e9fa2a9a9abb0b9bec5cdd0d3d8dee5e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7bbaea399928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a3aebac7d3dbcec1b5a89b8e8275685b4f4235281c0f000d1a2733404d5a6673808d99a6b3c0ccd9e0d4c8bcb1a7a09d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a98948f82766b6054483b2f221509000713202d3a4653606d798693a0acb9d1dcddd2b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000007121d2a36414c56606d7984919aa4afbbc1cbd4d7d0cac2bbb7b6b3adabaaabadb3b5b7bbc2c7c3c2c3c7ccd3dce5d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd7cbbfb5aba39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa3aab4bfcbd6dbcec1b5a89b8e8275685b4f4235281c0f000e1b2734414e5a6774818d9aa7b4c0cddae5d9cec3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7a69f94897d6f6356493c30231609000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000010e1925303b45515d67707d88939fa6b0b9c2cad6dbd6ccc7c3c2bebab8b7b8babec2c3c7c2bbb7b5b7bbc2cad3dbd5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdcd1c6bdb5aeaca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bcc6d0dcdbcec1b5a89b8e8275685b4f4235281c0f000e1b2835414e5b6874818e9ba7b4c1cedae7dfd5cbc3bcb8b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4b0a6998c7f7366594c403326190d000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000008141e2935404b55606b73808d949ea6b0b8c1cad0d7d8d3d0d0cac6c5c4c5c6cacfc9c1b8b0aaa9aab0b8c1c9d3d6cabfb4aa96897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe3d8cfc6bfbbb9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b8babfc6ced8e2dbcec1b5a89b8e8275685b4f4235281c0f000e1b2835414e5b6874818e9ba7b4c1cedae7e2d8cfc6bfbab9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9babfc1c1c1c1c1c1c0b4a79b8e8174685b4e4135281b0e000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000020d18242f39434f59606d78828f949fa6afbabec5cbd1d5d9dbd6d3d2d1d2d3d0cac0b7afa69f9c9fa6afb7c1ccd0c7baaea298887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbeae1d8d1cbc7c5c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c7cbd0d8e0eadbcec1b5a89b8e8275685b4f4235281c0f000e1a2734414d5a6774808d9aa7b3c0cddae7dcd1c6bdb4aeacacacacacacacacacacacacacacacacacacacaeb4bcc6d1cececec1b5a89b8e8275685b4f4235281c0f000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000007121d28313d44505c666d79828f949ea5aeb3bbc0c7c9cececfd0cfcfcfc9c6bfbaafa59e948f949ea5afb9c2c4bfb5ab9f9285796d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8eae3dcd7d3d2cececececececececececececececececececececececececececed2d3d6dce2eae8dbcec1b5a89b8e8275685b4f4235281c0f000d1a2633404d596673808c99a6b3bfd2dde3d7cbbfb4aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3aab4bfcbd7dbcec1b4a89b8e8175685b4e4235281b0f000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000010c161f28343f4a545d676d7a828e939fa2aaafb5b9bdc0c2c2c3c3c2c1beb9b4aea59d938e828f939ea7b0b7b7b4aea4998f8275675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f2e9e2dbd6d3d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d4d8dde4ebe8dbcec1b5a89b8e8275685b4f4235281c0f000b1825323e4b5865717e8b98abb5c0ccd7e0d3c7baaea3999292929292929292929292929292929292929298a3aebac7d3dacdc0b4a79a8d8174675a4e4134271b0e000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000040d17232e38424b555d686d79818b92989fa3abacb2b3b5b6b6b6b5b4b3adaaa29f938e8179818f959fa6aaaaaaa39f93877c6f62554b4034291c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8e9e0d7d0cac6c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c6c8ccd2d9e2ebdbcec1b5a89b8e8275685b4f4235281c0f00091623303c4956636f7c8999a4afbbc7d4dfd2c5b9ac9f9286858585858585858585858585858585858586929facb9c5d2d9ccbfb2a6998c7f7366594c403326190d000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000006111c263039434c565d676d757e858d92999ea0a8a6a8a9a9a9a8a7a9a19e98928b81786d7a8390949b9d9d9c98928b7f726a605443392f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe9e0d7cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9bbc0c7d0d9e4dbcec1b5a89b8e8275685b4f4235281c0f000714212d3a4754606d7a86939facb9c6d2dacdc0b3a79a8d8079797979797979797979797979797979797f8c99a5b2bfccd6cabeb3a9978a7e7164574b3e3124180b000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000a141e27313a434c555c606c717a81878c9196989a9b9c9d9c9c9a9897928d867e746d686e7a828a8e90918f8c867f726d63584e4331271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe1d7cec5bcb4aeacacacacacacacacacacacacacacacacacacacacacacacacacacacacafb6bec7d2dddbcec1b5a89b8e8275685b4f4235281c0f000613202c3945515d677783909daab6c3ced9cfc3b6a99c908376696c6c6c6c6c6c6c6c6c6c6c6c6c6775818e9ba8b4c1ced2c6b9ada197887b6e6255483b2f221508000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000020c151f28313a434b515a61686e747b8084888b8d8f8f90908f8e8c8985807a716c605e686e777d81848483807b726d635b51463d321f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdbd0c5bcb3aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0ccd8dbcec1b5a89b8e8275685b4f4235281c0f0004111d2935414c556773808d9aa8b2bdc8d4d2c6b9ac9f93877b6e61595f5f5f5f5f5f5f5f5f58606d7a86929facb8c5d2d1c5b8ab9e9285786c605346392d201306000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000000030d161f283039404550565e61696e73777b7e808283838382817f7c79746e68625a565e656c7075777776736e69625b51493f342b200d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd6cabeb3a9a298929292929292929292929292929292929292929292929292929292939aa4afbbc8d4dbcec1b5a89b8e8275685b4f4235281c0f00010d19242f3c4955626f7c8896a0acb8c5cfd4c8bbafa49a8e81746b60584f52525252524f575f6a737f8c98a2aebac6d3cabeb4aa9b8e8275655b5044372b1f1205000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000040d161e272e343e444c52575e6166696e7173757676767574726f6d66615e56504c535b6064686a6a6966615e5751493f372e22190f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada2978986858585858585858585858585858585858585858585858585858688939facb9c6d2dbcec1b5a89b8e8275685b4f4235281c0f00000815222e3b4754606a7784919da9b3bec9d5ccc0b6ac9f93887d706a6159544e4e4e535960696e7c86929faab4bfcad3c6baaea2988a7e716453493f33271b0f03000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000040c151d2328323b41464d5254575f62656768696a6969676563605c54524c4441495053575b5d5e5c5954524d453f372e251c100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f928579797979797979797979797979797979797979797979797979797985919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000006131f2b37434e5865727e8b97a1adb9c3d0d2c7bbafa49a92857c706c625f585a585f626b6f7b849198a2aebcc6d0cbc0b5ab9f92857a6d6053473a2d22170b00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000000000000030b1218202930363b4246484d5355585a5c5c5d5d5c5b595653514a46413b383f44464a4e5151504d4846423b332d251c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000030f1b27323c4753606d7985929ea8b1bdc7d2ccc0b6aca29792867d756f6a6867686a6e747d859196a1aab4bfced3c7bbafa3998d8074675d5145392c1b110600000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000070e171e252a30363a3c4247484b4d4f5050504f4e4c494644403936302d3337393d42444443403b3a363029211b130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000a151f2c3845515d67727f8b95a0abb5c0ccd2c7beb3a9a298928a827c77757475777b81889197a1a8b2bcc6d0cabeb3aa9f92877b6e61554b4035291d0a0000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000050d14191f252a2d31373a3b3e404243434342413f3c3a38342e2a2522272b2d3135373736332e2d2a251f170f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5252525252525252525252525252525252525252525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000004101d2935404b55606d78849199a4afbbc2cbd0c5bcb3aaa29f938f888482818284888e939aa1a9b2bac4cecbc3baaea2988d8174695f5343392f24180d0000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000002080d141a1e20262b2e2f323435363736363432302d2c28231c19171b1f2024282a2b292621201e1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5246464646464646464646464646464646464646525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000c18242f3944505c666f7d87939fa6b0b9c3cbcec5bcb3aea59e9b96918f8d8e91959b9fa4acb3bbc4ccccc3b9afa59f92857a6e61574d4231281d12070000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000002090e12151a1e2122252729292a2a29282623201f1c18120d0b0f1213171b1e1e1d1a1514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245393939393939393939393939393939393945525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000007121d28343f4a54606b73808d949fa7b1b9c2cacec5bebaafaaa8a09e9b9a9b9da0a7acafb6bec4cdccc4bab1a79e938b7e71685e52453b311f160c010000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000205090e121415181a1c1d1d1d1c1b19161312100c0700000305060a0f1111100d080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000010c17232e38424f59606d78828f95a0a7b0b8c0c9cecac1bbb6b2acaaa8a7a8aaacb1b9bbc0c7d0cbc2bab2a8a0958f82756c62564c41332a1f0d04000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2834404b546c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000020608080b0d0f1010100f0e0c0907060400000000000000000204040300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1f1f1f1f1f1f1f1f1f1f1f1f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000006111c26303d44505c666d798390959fa6aeb9bdc4caccc6c3bdb9b7b5b4b5b7b8bcc3c8cccfc6bfbab0a8a0969183796d605a50443b3021180e00000000000713202d3a4653606d798693a0acb9c6d3d3c6baada093877a6d6054473a2d2c3845515c667985929facb8c5d2d4c7bbaea194887b6e6155483b2e2a36424d566b7884919eabb7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f13131313131313131313131f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000a151e28343f4a545d676d7a8390949da4acb2b9bec5c8cdc8c5c4c2c0c1c4c5c8cecbc7c1bdb4aea69f9691847b6e675d51483f32291e0f0600000000000713202d3a4653606d798693a0acb9c6d3d4c7baaea194877b6e6154483b2d2d3a4653606d798698a2aebac6d3d5c8bbafa295887c6f6255493c2e2d3a46525e697885929fabb8c5d2d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060606060606060606121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000030c17232e38424c555e686d7a828d929ea0a8adb3b8bcc2c4c6c9cfc9d2ccc7c6c4bfbab9b0aba39f948f847b6e695e554b41362d20170d0000000000000713202d3a4653606d798693a0acb9c6d3d6c9bcb0a396897d706353493f33333c4855626f7b8895aab4bfcad6d7cabdb1a4978a7e7164544a4034323b4754616e7a8798a2aebac6d3d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000006111c26303a434c565e686d78808991969ea1a9acb1b5b8b9bebcbdbcc0bbb9b7b4aeaca69e99928c827a6e695e574d433a2f241b0e050000000000000713202d3a4653606d798693a0acb9c6d3d9ccbfb2a6998c7f73655b50443d3d45505a65727f8b98a5b2bed0dbdacdc0b3a79a8d8074665c51443d3c444f5964717e8a97aab4becad6d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000a141e28313a444c565d666d747d848c92979da0a7a9abadb3afb0b0b5afacababa39f9b948f867f786d685e574d453b31281d1209000000000000000713202d3a4653606d798693a0acb9c6d3ddd1c4b7aa9e9184786c60574e49494e57616c7783909daab6c3d0ddded1c5b8ab9e9285796d60584f4a494e56606b76828f9ca9b5c2d0dbd4c7bbaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000020c161f29323a444c545c606b70797f858b9095989c9ea1a9a2a3a3aba49f9e9b99928e89827c736d665e564d453b33291f160c00000000000000000713202d3a4653606d798693a0acb9c6d3ded2c5b8aca0968a7e716960585656586069717e8a95a0acb8c4d1dedfd2c6b9ada1978b7f726a60595656585f68707d89949fabb7c3d0e2d5c9beb3a994877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000040d172029323a424a505960676d727a7f83888c8f919795969696969993918e8b86817c756f6a605c544c443b332921170d0400000000000000000713202d3a4653606d798693a0acb9c6d3e1d4c8bdb2a89e91857b6f6a646363646a6f7b85929ea7b1bcc8d4e0e2d5c9beb3a99f92857c6f6b656363646a6f7a84919ea6b0bbc7d3dfd2c6b9ada197867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000050e17202830383f444f555d60676d72777c7f82858788898a8989888684817e7a756f6b625f58514a423a322921170f050000000000000000000713202d3a4653606d798693a0acb9c6d3e5d9cec3b9ada19791847c7571707071757c849197a1adb9c3cdd9e4e6dacfc5baaea29891857d7571706f71757c839196a1acb8c2ccd8ded1c5b8ab9e928578675d5145392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000050e161e262e343d434b51555d60656a6f7276787a7b7c7d7d7c7b7a7875716d68636059534e444039302820170f05000000000000000000000713202d3a4653606d798693a0acb9c6d3dfe0d5c9beb3a9a0969187827e7c7c7e82879196a1a9b3becbd5dfe8e3e1d6cabeb3aaa1979188827e7d7c7e81869195a0a8b2bdcad4dedccfc2b6a99c8f837669554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000040c151c2328313940454b5153585f626569686d6f6f70706f6f6d676864615e56544f47433c342e271e160e0500000000000000000000000713202d3a4653606d798693a0acb9c6d3dfe6dacfc4bbb2a8a099928f8b89898b8f9299a1a8b2bbc5cfdde5ddd7d2cfd0c5bcb2a9a19a938f8b89898a8e9299a0a7b1bac4cedce1d4c8bdb2a8998d8073665a4d402f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbd1c5b8ab9e9285786b5f5245382c1f12050000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000030a11171f272f353a4045474e535559565d60626363636362605c555854524c48433d373128231c150c050000000000000000000000000713202d3a4653606d798693a0acb9d0dbe7dfd6cfc9c4bab2aba39f9b979696979b9fa3abb2bac4cdd6e1dbd3ccc6c3c1bcc4bbb2aca49f9c989696979b9fa3abb1b9c3ccd6e2d8cfc6b8aca096897c6f6256493c2f2316070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cfd6d1c4b7aa9e9184776b5e5144382b1e11050000000000000004111e2b3744515e6a7784919daab7c4d0d6d0c1b4a79a8e8174675b4e4134281b0e000000000000000000000000000000060d151d24292f35393c4347484c4c525455565756565553514b4b4746413a38322b262018120b03000000000000000000000000000713202d3a4653606d798693aab4becad6e1d6cdc5beb9b8b7b5afaca8a4a3a3a4a8acafb5bdc4ccd6dfddd7c9c1bab6b5b0b8b9beb6afaca8a4a3a2a4a8acaeb4bdc3cbd5ded9d0c6bcb1a79e9184776a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a7b1bdc6cac7c0b5ab9c8f8376695c504336291d100300000000000000030f1c2936424f5c6975828f9caab4bfc7cbc7beb2a8998c7f7366594c403326190d00000000000000000000000000000000030b12181d24292c31373a3c3f41454748494a4a49484745403e3a3936302c27211a150c070000000000000000000000000000000613202d394653606c798698a2aebac6d3dacfc5bbb3adabaaacb1b9b5b1afafb1b5b9bbc0c7cfd6ded9d2ccc1b7afaaa8a3abadb2bbbbb9b5b1b0afb1b5b9babfc6cfd5dbd6cfc7beb4aaa0958b7e7165584e43382b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a0abb4babfbbb9afa4998c807366594d4033261a0d0000000000000000000c1926333f4c5966727f8c98a3aeb9bbbfbab5aca096897d706356493d3023160a000000000000000000000000000000000001070c13181d20262b2e2f2f35393a3c3c3d3d3c3c3a38342f2e2d2a251e1b160f0a030000000000000000000000000000000006121f2b3844505b667885929fabb8c5cfd0c9beb3a9a19e9da0a7b1bbbebcbcbec2c5c7cbd1d9d6d3d0c7c0bbafa59e9b969ea1a9afb9bec2bebcbcbdc1c5c7cbd1d8d4d0cac3bdb5aca3989083786d6053463d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a77839099a2aaaeb4afaca59f93877b6e6155483b2e2215080000000000000000000814212e3b4754616e7a86929fa4acafb4aeaba39a9184786c605346392d2013060000000000000000000000000000000000000001070d11151b1f212224292c2d2f303030302f2d2c292321201d19130f0a04000000000000000000000000000000000000030f1c28333f4a546a7683909da9b3bdc3c4bfb9ada197929095a0a9b2bbc0c7cad0cfcfcfcfd0cac6c2bdb5afa69e938e8991979ea5adb3babfc6c8ceced0cfced2ccc8c5bebab2aba39a92867c6f665c5044382b20160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58636f7d8792989fa2aaa49f9d938d8073695f53463a2d2114070000000000000000000714202d3946525e68727f8c929c9fa3aaa39f9992887d70665b5044382b1f120600000000000000000000000000000000000000000001040a0f121515191d2021222324232322201f1c181413110d08020000000000000000000000000000000000000000000b17222d3f4c5966727f8c97a2abb3b7b7b4aea49e9285839097a1a8afb6babfc1c2c3c3c2c1bebab8b1aba49f948e817d858f939ea1a9aeb4b8bdc1c2c3c2c1c1c0bbb9b4aea8a09992887e716a60544a3f3428190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4854606b717e868e9298969993908a81786d60574d42362a1e120500000000000000000005111e2a36414c56636d7380898f92999698928f877f726b61544a3f33281c0f03000000000000000000000000000000000000000000000000030608080d1113141516171716151413100c0707050100000000000000000000000000000000000000000000000614212d3a4754606d7a859299a2a9aaaaaaa29f928a7e7b8591969fa4acaeb4b4b5b6b6b5b4b3adaba79f99938d8279707a828a92979fa2aaacb2b4b5b6b6b5b4b6afacaaa29f9691877e716c61584e42382e2317070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202c38434f59616c717b818588898886837e756d665c50453b31261a0e02000000000000000000020e1925303b44515b646e737d838688898886827c726d62594f42382d22170b00000000000000000000000000000000000000000000000000000000000104060709090a0a0909070604000000000000000000000000000000000000000000000000000000000713202c3945525d68707d8792979c9d9d9c98928b80736f7c848e939a9fa2aaa7a9a9a9a9a7a9a29f9b95908780786d686d757e858d92989ea0a8a7a8a9a9a8a7aca49f9d98928d847c716c625a50463c30261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323d47505a61696e75797b7c7c7a76716c605c544a3f332a1f1409000000000000000000000008141e29323f49525c646b70767a7c7c7b79756f6a625b51473e2f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616b707d858c8f90918f8c867f736e6a6f7a81878e9298999b9c9c9c9c9a9897928e89837c736c665e616c717a80868c9196989a9c9d9c9b9a999a93908b8580796f6a625a50483e342b1e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b353e4850575f62666d6f6f6f6d6864615a504a42382e21180e030000000000000000000000020d17202e37404a52596063676d6f6f6f6d6762605851493f352c1d140a0000000000000000000000000000000000000000000000000000000000000406070a0c0d0c09060503000000000000000000000000000000000000000000000000000000000000010d19242f3a444f59616b707a7f828484827f7a726d645f686d757c8185898c8e8f90908f8e8c8985817c766f6a605b545a61686d737a7f84888b8e8f908f8e8e8c8a86847f7a736d67605850483e362d22190c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232c363e454d53545c60626362605d565550443f3830261c0f0600000000000000000000000000050e1c252e3840474f54555d60626362605c55544e463f372d231a0b0200000000000000000000000000000000000000000000000000000001070c10131417191a191613120f0b06000000000000000000000000000000000000000000000000000000000008131e28323e474f5961686d7276777776726e68625b565d616a6f74797c7f8182838382817f7c79746f6b626058504a50565d60686d73777b7e818283838281807d7a77726d67605d554e463e362d241b10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a242c333c42474a515355565554524c49453e342e261e150a0000000000000000000000000000000a131c262e353d44484c515455565553514b47433c342d251b1108000000000000000000000000000000000000000000000000000000030b12181d1f202426262523201f1b17110a02000000000000000000000000000000000000000000000000000000010c16202c353e474f565d6065696a6a6966615e56514c52585f62676d7072747676767674726f6d66636059544e443f444c52565e61666a6f7274757676757473706d6865605d55514b433d342d241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a212a3137394044464849494745413a393328231c150c03000000000000000000000000000000010a141c232b33383a4145474949484745403937322b221b1309000000000000000000000000000000000000000000000000000000090d151d24292c2d303233322f2d2b27221b140b07000000000000000000000000000000000000000000000000000000040d1a232c353e444c5254595c5d5e5c5954524c4441464e53555c6063666869696969676562605c54544f47433d333a41454c5254585f626567696a6968676663605d5654514c454039312b221b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f1820262b2e34383a3c3c3c3a3935302d282217110a030000000000000000000000000000000000020a111a21272c2f35393a3c3c3c3a38342f2b27201910090000000000000000000000000000000000000000000000000000020b131b1f272f35383a3d3f403f3c3937332d261d19110800000000000000000000000000000000000000000000000000000008111a232c323a4145474c4f51514f4c4746413b353c43474b515356595b5c5d5d5c5b595653514a48443d3732282f353a4146474e5355585b5c5d5c5b5b595754524c4745413a352f271f19100900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1c23282c2d2f302f2d2c29241e1c170c06000000000000000000000000000000000000000000080f161c1e24292c2d2f302f2d2c29231d1b150e070000000000000000000000000000000000000000000000000000000b141d252d31394045474a4c4d4c4946443f382f2b231a120800000000000000000000000000000000000000000000000000000008111a20282f35393a3f434444433f3b39363029323739404546494c4e4f50504f4e4c494644403938322b272024293035393c4347484b4e4f50504f4e4d4a4745413a39352f29241d150d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181c1f2022232221201d1913110c050000000000000000000000000000000000000000000000050b1013191d2021222322201f1c18120f0a0400000000000000000000000000000000000000000000000000000009121d262f373f434b51535759595856535049413d352c241a1006000000000000000000000000000000000000000000000000000000080d161e24292c2d3236373736332e2d2a2520262b2e34383a3d3f4143434343413f3c3a38342e2c27211b16191e25292d31373a3c3f414243434241403d3a3935302c29241e18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1012131516161413110d080200000000000000000000000000000000000000000000000000000001080d1113141616151413100c070100000000000000000000000000000000000000000000000000000000030d1b242f38414951555d606365666562605b534f473e362c22180e03000000000000000000000000000000000000000000000000000000040c13191d202126292a2b292621201e19151b1d23282c2d3033353636363634322f2d2c28231c1b160f0a0d13191d20262b2e2f3234363736353433302d2c2924201d19130c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090909070704010000000000000000000000000000000000000000000000000000000000000001040607090909070604000000000000000000000000000000000000000000000000000000000000010b151f2d36414a535b62676d707273726f6c65605950483e342a20150a0000000000000000000000000000000000000000000000000000000001080d111314191c1e1e1c191414110e0a0f12181c1f20232628292a2a29282623201f1c18120f0a040002080d11151a1f21222528292a292828262421201d1913110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313f48535c646d72797d7f807f7c78706b615a50463c31261b0f010000000000000000000000000000000000000000000000000000000000010407070c101111100c080705020000070c10131316191b1c1d1d1c1b19161312100c0700000000000001050a0f121515181b1c1d1d1c1b1a171413110d0804010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0b0c0c0c0b0a0908070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3943505a646e747f858a8c8c8b89837d716c61584e43372b1e130800000000000000000000000000000000000000000000000000000000000000000000030404030000000000000000000406070a0c0e101010100e0c090706040000000000000000000000030608090c0e0f10100f0e0d0a07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608070c101213151717181919181817161414110d08070705010000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55626d74808b92979899989591877e716a5f53473a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060a0f121515181c1f202223242525262525242321201e19171413110d0804010000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c67717e8b929ea1a9a6a7a09992867c6f62564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12151b1f212223282c2d2e30313232323231312f2e2d2a252421201d1913110d080100000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985919ea4adb3b3b1aba3988f8275685d5245392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10151a1f21262b2e2f2e34383a3b3d3e3e3f3f3f3e3d3c3b393630312e2d2a25201d19130e08020000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a1adb9bebfbdb4aa9f92867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161c20262b2e32373b3c3f404446484a4a4b4c4c4b4b4a49474641403e3a3936302c29241e19140c0701000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a9b3becacfc6bbafa399897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c151b21272c31373a3c4347484c4a51535556575858595858575654524c4d4a4746413a39352f2a251e18120b030000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cfd7cbc0b5ab978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b33383c4347484e535558545c6061636465656565646462615e565a5754524c4745413a363029241d150d0600000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedcd1beb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151d242931373d44484e5355585f626568666d6e70717172727271706f6e686a6764615e5654514c46413b352f271f17110a020000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f181f272f353c43474f54585f62666a6f727577797b7d7d7e7f7f7e7e7d7c7a797673716d6865605d55524c4540393128231c140c0400000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a212a313940454e535960636a6f73777c7f81848688898a8b8b8c8b8b8a89878583807d7a76716d67615e56514b433d342e261e160e05000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a232c333b434b51585f626b70767b8084888b8e9193999697989898989797959892908d8a86827e7a736e68605d554f443f38302820160e050000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a242c353e454d555d606a6f767d82888d9196989b9e9fa4aba4a4a5a5a5a4a3aaa29f9d9a99928f8b85807a736d676159504a423a322820170e0500000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c363e474f575f676d737c83898f94999ea0a8a8aaacafb5b0b1b2b2b1b1b0b4aeaca9aba39f9c97928d868079706b605c544c443a322920170d03000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19232c363e48505961696e79808790949c9fa6aaacb2b4b7b9bbc0bdbebebfbebebdbfbab8b6b5afaca9a29f98928d847d736d665d564c443b32291f150b010000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212b353e48505a616b707b838d92999fa6abb0b7b9bdc1c4c6c7ccd2cbcbcbcbcad0cac6c5c3c0bbb9b3adaaa39f96918880786d685e564c443b31271d12070000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a333d47505a616c717d8590959fa3abb0b7bbc2c5c9ced1d2d4d7ddd5d5d4d5d6dbd6d3d2d1cbc7c5bebab4aea8a09a938d827a6d685e564c43392f23180f0600000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454f59616c717e879297a0a7afb5bdc2c7ccd2d5d9d4d1d0cdcac9c8c7c8c9cbced1d2d6d7d3d0cac6bfbab2aca49f948f837a6e685e554b40342921180b02000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424d57606b717e879299a2a9b1bbc0c7cfd3d8d7d4cec8c5c4c0bebcbbbbbbbcbec1c5c6cacfd4d9d6d0cbc4beb6afa69f9590837a6e675c51453f332a1d140a000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545f69707d879299a3abb3bcc3cbd1d9d9d2ccc7c3bcb8b7b3b1afaeaeaeb0b2b4b8b9bec5c8cdd6dcd6d0c7c0bbb0a7a0959083796d605b51453c2f261c11060000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c3845515c666e7b859299a3abb5bdc5ced7dcd5d0c7c0bbb9b1acaaa7a4a2a2a1a2a3a5a8abadb3b8bcc3cbd0d8d9d2ccc2b9b1a79f958e81756d62574d42382d22170b0000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b37434e58606d79839097a2abb5bdc6cfd7dbd3cbc3bdb5afaca7a09d9a979695949596989b9ea2a9acb1babfc6ced6ddd8cbc3b9b1a79e938b7f72695f544a3f33281c120700000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333b4754606a73808d95a0a9b3bdc6cfd8dbd3c9c1b9b1aba49f9b95918d8b89888888898b8e92979da0a7aeb4bcc4cdd6ddd5cbc2b9afa59f92867b6e665b5044392e23180c00000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59626f7c87929fa7b1bbc5cfd8ddd3c9c1b7afa7a099938e8884807e7c7b7b7b7d7f81858a90959fa3aab2bbc4cdd6ddd4cbc1baaea2989083786c60544a4034281c1004000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b76839099a3afb9c3cdd7e0d4cbc1b7afa59e959087817c7774716f6f6e6f707275797e838b9298a1a9b2bbc5cfd9ddd6cabfb4aa9f958a7e71665c5144382c1f160a000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f5963707d8a949fabb5c0cbd5dfd8cec2b9afa59e938e837c746f6a6764636261626365666d71787f869197a1a9b3bdc7d1dcdbd0c6bcb1a79e9184796d6053463d32271b0f000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b7783909da6b0bdc7d1dddbd0c6bcb1a79e938e81796f6a625f58585655555556545c60666c727c859197a1abb5c0cbd7e0d8cec2b9aca0968b7e7265594f43382c1c11060000000000000000000000000e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56636f7c8995a0acb8c2cfd9e3d6cabfb4aa9f958e81786d675f58534e4b494848484a4a50545b606a6f7c859299a3afbbc4cfdae0d5c9bdb2a89d9084776b605448382e23170b0000000000000000000000060b1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e322518130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d6875818e9ba7b1bccad4e1e0d3c7baaea2989083786d665d554e47433e3c3c3b3c3d3f444a50585f6a6f7d87929fa9b2bec9d5e0d9cec4b8aca095897c6f63544a3f34281c10030000000000000000020a11171c2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225221f1b160f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3cddfe1d5c9beb3a99f92867b6e665c544b433c3732302f2e2f2e34383f444e58606b73808c97a1adb9c4cedae0d4c8bcb1a79b8e8174665c5044382b1f120600000000000000080b141c22282b35414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e33302f2c27211b160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495364717e8a98a3aebac7d3e0dfd2c6b9ada1978c8073695e544a4239312b262322222223282d333c464f59606d7984919ea8b2bdc9d5e1d9cec3b8ab9e9285796d6053463a2d20130600000000000008111a1d262d333839414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b42403c3b38322b2720191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b6575818e9baab4bfcbd6e3d8ccc0b6ac9e92857a6d60574d42392f271f1b16151515171c2228333d45515d67717e8b96a1acb9c5d2dedfd2c6b9ada297897c6f6356493c2d22170b000000000008121a232c2f383f44464a4e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584f4e4c4948433d38322b22191107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7985929eabb8c5d0dce0d4c8bbafa49a8c7f72675d51453b30271d150d0a0908060c1117212935404b55606d7884919eabb7c3ced9e2d6cabeb3a9998d80736653493f33271b0f03000000040d1a242c353d424a505356595b6874818e9ba7b4c1ced7cbbeb1a4988b7e71655c5c5b5956544f47433d342b23190c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8897a1adb9c6d2e2dfd2c6b9ac9f93877b6e61554b4133291e150b030000000000060f18242f3944505c6673808d99a8b2bdc8d4e1dbcfc3b6a99c908376655b5044372b1f12050000010c161f2c363e474f545b606366686974818e9ba7b4c1ced7cbbeb1a4988b7e716969696866636059544e463d352b1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a9b3becad6e2dccfc3b6a99c908376695e52433a2f21170c030000000000000007121d28343f4a54626f7c8896a0acb8c5d1deded2c5b8ab9f9285796c605346392d201306000007121d28313e48505960666c7073757576818e9ba7b4c1ced7cbbeb1a4988b7e7676767575736f6b6260584f473d30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0cfdae3d7cbc0b5ab988b7f7265574d4231281d0f050000000000000000010b17232e3847535f6a7784919daab7c4d0dddfd3c6baaea298887b6e6255483b2f22150800010d18242f3943505a616b70787d8081828284919eabb8c4d1ddd0c3b7aa9d908382828282817f7c776f6a60594f43392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfdce0d4c7bbafa399887c6f6255493c3022160c0000000000000000000006111c2b37434e586874818e9ba7b4c1cedae2d6cabeb4aa978a7d7064574a3d3124170a0004101d2935404b55616c707d84898c8e8f8f9196a1adb9c5d2ded1c5b8aca095908f8f8f8f8e8c89837c706b60554b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b556a7784909daab7c3d0dddfd2c5b9ac9f9286796d6053473a2d20140700000000000000000000000f1b26323f4c5965727f8c98a5b2bfcbd8e7dbd0beb2a5988b7f7265584c3f3225190c000613202c3945515d67707e879196999b9c9c9ea1a9b2bdc9d5e0d4c8bcb1a7a09d9c9c9c9c9b999590867d70675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677885929fabb8c5d2deddd0c4b7aa9d918477675c5145382c1f130600000000000000000000000a1623303d495663707c8996a3afbcd1dce8d9cdc0b3a69a8d8073675a4d4034271a0d000714202d3a4753606d79859299a0a8a8a8a9abadb2bbc4cfdae5d9cec3b9b1acaaa9a9a9a8a8a7a0989184796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8698a2aebac6d3dfdbcec2b5a89b8f827568554b4034291c100400000000000000000000000814212e3b4754616e7a8794abb5c0cbd7e3dbcec1b4a89b8e8175685b4e4235281b0f000b1724313e4a5764717e8a97a1abb2b4b5b5b8b9bdc4cdd6e0eadfd5cbc3bcb8b7b5b5b5b5b4b1aaa1968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b8794aab3becad6e2dacdc1b4a79a8e8174675b4e412f23180c0000000000000000000000000714202d3a4753606d7a8699a3afbbc7d3e0dbcfc2b5a89c8f8275695c4f4236291c0f000d1a2733404d5a6673808d99a9b3bdc1c2c2c4c5c9cfd6dfe8f1e7ddd5cec8c5c3c2c2c2c2c1bcb2a8998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894a1aebbd0dbe6dacdc0b3a79a8d8074675a4d4134271a0700000000000000000000000006131f2c3945515d677986929facb9c5d2dfdccfc2b6a99c8f8376695c504336291d10000e1b2834414e5b6774818e9aa7b4c1d0cfcfd1d2d5dae0e8f1f9efe7dfd9d4d1d0cfcfcfcfcfc1b4a79a8e8174675b4e4134281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2aebbc8d5e1d9ccbfb3a6998c807366594d4033261a0d00000000000000000000000004101d2935404b556b7885929eabb8c5d1dedcd0c3b6a99d9083766a5d5043372a1d10000e1b2734414e5a6774818d9aa7b4c0c9cfcacfd0d3d8dee6eef6ede4ddd6d1cecdcacacacec9c0b4a79a8d8174675a4e4134271b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2d8ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000c18242f45515e6b7884919eabb7c4d1deddd0c3b6aa9d9083776a5d5044372a1d11000d192633404c5966737f8c99a6b0b9bdbdbdc3c4c7cdd4dce6eee4dbd2cbc5c2c1bdbdbdbdbdb9b0a6998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aebbc8d4e1d9ccbfb3a6998c807366594d4033261a0d00000000000000000000000005121f2b3744505b657885929fabb8c5d2dedccfc3b6a99c908376695d5043362a1d10000916232f3c4956626f7c89949fa8adb2b0b1b6b7bbc2cad4dee7ddd2c9c0bab5b4b1b1b1b0b2aca79f94897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894a1aebbcfdae6dacdc0b3a79a8d8074675a4d4134271a080000000000000000000000000613202d394653606c7986939facb9c6d2dfdccfc2b5a99c8f8276695c4f4336291c10000915222e3b4854606a768290969ea1a9a4a4a9abb0b8c2cdd8e2d6cbc0b7afa9a7a4a4a4a4a8a19e958f82766a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a9b3bec9d5e2dacec1b4a79b8e8174685b4e412f24190d0100000000000000000000000714212d3a4754606d7a8799a4afbbc7d4e0dbcfc2b5a89c8f8275695c4f4236291c0f0007131f2c38434e58616e7b848c91969697979c9fa6b0bbc7d3ded1c5baafa59d9a979797979696918c837a6d61584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798697a1adb9c6d2dfdbcfc2b5a89c8f827569564c4135291d110400000000000000000000000815222e3b4855616e7b8894abb5c0ccd7e3dacec1b4a79b8e8174685b4e4135281b0e00030f1b27323d46525e696e79808488898a8a90949fabb7c4d0dbcec2b5a99d928e8a8a8a8a8987847f796d685e52463d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677885929eabb8c5d1deded1c4b7ab9e918478685d5245392c20130700000000000000000000000a1724313d4a5764707d8a97a3b0bdd2dde8d9ccbfb3a6998c807366594d4033261a0d00000a16212a36424d565e676d73787b7d7d7e82909ca9b6c3cfdacdc1b4a79a8e807e7e7e7d7d7b78726d675e564c41342b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b556a7783909daab6c3d0ddded2c5b9aca196877a6d6054473a2d21140a0000000000000000000003101c28343f4a5466737f8c99a6b2bfccd9e4d8cbbeb1a5988b7e7265584b3f3225180c0000040e1925303b444d555d6066696e707174818e9ba7b4c1ced7cbbeb1a4988b7e71717171706e6966605c554c443a3022190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e424f5c6875828f9ba8b5c2cedbe1d5c9bdb2a896897c706356493d32261b0f0300000000000000000006121f2b3844505c6675828f9ba8b5c2cedbe1d5c9beb3a9968a7d7063574a3d3024170a00000009141f29323b434b5153575f61636874818e9ba7b4c1ced7cbbeb1a4988b7e7165646463615e5753514b433a32291e1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071a2633404d596673808c99a6b3bfced9e5dacebfb2a6998c7f7366584e43372b1f14090000000000000000010713202d3a4653606d7985929eabb8c5d1dedfd2c6b9ada197877b6e6154473b2e211408000000020d17202931394045474d53555b6874818e9ba7b4c1ced7cbbeb1a4988b7e716558575654534d47454039312920170d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a8b2bdc8d4e1ddd0c4b7aa9d9184776a5f53473b31261a0f050000000000000009111d2935414c5663707d8997a1adb9c6d2dfded1c4b8ab9e918578695e52463a2d20140700000000050e171f282f35393b42464e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b4a4846423b38342f271f170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8796a0acb8c5d1deded1c5b8aca095887c6f62574d42362a21170e07000000000309121b252c3945525d6874818e9ba9b3bec9d5e1dbcfc2b5a89c8f827569574d42362a1e11050000000000050d161d24292c3136414e5b6874818e9ba7b4c1ced8cbbfb2a5988c7f7265555453504a48443d352e261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687784919daab7c4cfdae1d4c8bdb1a89a8d8074695f53463d33292018120e09060c10141a242a36424d57606d7a85929fabb8c5cfdae1d5c9bdb2a8988c7f7265594c3f30251a0e02000000000000040c12181d202635414e5b6874818e9ba7b4c1cedacdc1b4a79a8e8174676261605c54544f4740382e241a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d566773808d9aa9b2bec9d5e3d9cec3b9ac9f92867b6e61594f453b3228231d1a1919171c1f262b363e46535e6973808d98a2aebac6d6e1ded2c5b9aca096887b6e6255483b2f221509000000000000000001070d101b2834414e5b6774818e9aa7b4c1cddad1c4b8ab9e918579716f6d6d66636059524a40362c22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303d495663707c8997a1adb9c7d1dce0d3c7baaea3998e81756b60574d443c342e2a26262623282c31373f48515b616e7b86929faab3becad6e4d8ccc0b6ac9e9184776a5f53473a2e21140800000000000000000000010d1a2733404d5a6673808d99a6b3c0d0dbd2c6b9ada19791837e7b7a7975706b635c52483e33281c1002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202d3a4653606d7984919eabb5c0cbd7e3d7cbbfb4ab9e93897d70695e564e454039363133322e34383c4246515a626d75828f98a3aebcc5d0dbe0d4c8bbafa49a8d807366584e43372b1f120600000000000000000000000c1825323f4b5865727e8b98aab4bfcad6d5c9beb3a9a095918a888785827d736e635a5044392d1e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6673808c99a3afbbc7d1dcdcd1c6bdafa59e92857b6e685f58514b464240403f403f44464d535b636c727f8c939eaab4bfced7e1d9d0c6b9ac9f93877b6e6155483c31261a0f020000000000000000000000091623303c4956636f7c8998a2aebac7d3dacfc4bbb1a7a09d979598928f8980736c6155493a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87929fabb5c0cbd7e1d8cfc1b9ada19791847a6f6a605c54534d4d4c4c4c4a5053575f616d727e87939fa5afbcc6d1e0ddd2c7beb0a69c8f8276695f53463a2a2015090000000000000000000000000714202d3a4753606d7986929facb8c2cfd9d6cdc3b9b1acaaa4aaa29f9c928a7e7064564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846535e6975818e99a3afbbc4cfdae1d5c9beb3a9a09691847c726d66615f575a595959545c6063696e767f879299a4afb7c1cfd8e1d8ccc0b6ac9f94897d7063574d42362a180e0300000000000000000000000006131f2c3845515d6775828f9ba7b1bdc7d1dcd5cbc3bcb8b7b0b4aeaca49d908376685d5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36424d57616e7b87929fa9b3bec9d5dcdacfc5bbb2a8a09691867f79736e69686766656667666d70757b828c9299a3abb5c0c9d3e1d9cfc7bbafa49a8f82766b6054453b31261a060000000000000000000000000004101d2935404b5563707d89959fabb5c0cbd6dbd5cec8c5c4bdbfbab8ac9f93867a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313b46535f6974818d97a1adb9c0cad4ded6cdc3bab2a8a098928c847f7b7775737372737476797c81868f949fa3abb5bdc7d2dcdcd1c7bdb2a89f93877c6f62594f4433291f140900000000000000000000000000000c18242f394653606c78839099a3afbbc1cad0d7d9d4d1d0d0cac6bbafa49a897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424d57616d7a85919ea5afb8c2ccd6ded5ccc3bab2aaa29f96918c888482807f7f7f818385898e92999ea6afb5bdc7d0d9dbd7cbc0b5aba0968d81746a6054473d3321180d03000000000000000000000000000007121f2b3744505b656f7c87929fa5afbabfc6cbd1d1d2d2d2d1cabeb3aa96897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c46525d68707d8a939da6b0bac4ccd5ded5ccc4bcb4aea8a19e9996918f8d8c8c8c8d8f92989b9fa3abb0bbc0c7cfd9dcd7c8c0bbafa3999184796d60584e43352b210f06000000000000000000000000000000030f1b27333f4953606a73808c939da5aeb4babfc3c5c5c5c5c3c0baaea298887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935414c56616b74818e949fa8b2bac3ccd8ddd6cec6bfbab2adaba8a09e9b9a9998999a9c9fa2aaacaeb5bdc2cbd1d9d8d1cbc0b6aea49f92877d6f675d51463c3223190f00000000000000000000000000000000000b17222d38414e58606c77818e939fa2aaaeb4b6b8b9b9b8b7b5afa79f9285796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1924303a444f59606d78829096a0a8b2bac2ccd2d9d8d0cac4bdb9b8b2acaaa8a6a6a5a6a7a9abaeb3b9bbbfc6cfd7dcd7cfc6bfbbaea49d928b7e716b60554b40342b201108000000000000000000000000000000000006111b262f3d44505b656d78818b92989fa3abaaabacacabaaaba39f958d8074675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323e45515c666d7a849196a0a8b0bbc0c7d0d5dad6cfc9c5c4bdb9b7b5b3b2b2b2b4b6b8babec5c7cbd1d8d9d2ccc4bdb5aea49d928d80736d62594f43392f22190f000000000000000000000000000000000000000a141d27333f49535c666d747f868e92999b9d9e9f9f9f9d9b99928d83796d60554b4034291c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202834404b545e686e7b8491969fa6afb6bec3c9cfd4d9d5d2cec9c5c4c2c0bfbfbfc0c2c5c6cad0d3d7d7d3d0c7c0bbb2aba39f928d80776c605a50473d31281d100700000000000000000000000000000000000000020b17222d38414a545c606d727b81868b8e9092929292908e8b8681796d675d5143392f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232e39424c565e696e7b848f949fa4acb1b9bec4c8ced2d5d9d5d2d1cecdcccbcccdcfd2d3d6d7d3d1cbc7c2bdb5afa8a199928b80746c655b50483f352b1f160c00000000000000000000000000000000000000000006111b262f38424a505b62696e747a7e81838586868584827f7b746d675d554b4031271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303a444d575e696e7a828d939aa0a7adb3b8bdc3c5c9ceced0d2d3d6dbddd8d4d2d1cfd1cbc7c5c0bbb9b0aba49f9691877f736e605b53493f362d23190d04000000000000000000000000000000000000000000000a141d2630383f4451575e61686d717477787979787775726e69605d554b43392f1f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e28323b454d575e686d78808890959ea1a9acb2b7b9bdc0c2c3c5c6cad0d2ccc8c6c4c3c1bfbab9b5afaca69f99938d847c726d645c504941382d241b10070000000000000000000000000000000000000000000000020b141e262e343f454d53565d6064686a6b6c6c6c6a6865615e56514b433931271d0d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162029333b454d565e666c737c838b91979da0a8aaacb2b3b5b7b8babfbabac0bbb9b8b6b4b4aeacaba39f9b948f87807a6f6a625b52443f382f261b120900000000000000000000000000000000000000000000000000020c141c2328333b42464c5254585b5d5f5f5f5f5d5b5854524d45403931281f150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129333b444c545b606b6f787f858b91969a9ea0a8a6a8aaacaeb4adaeb6afacaba9a8aba39f9c99928e89827c746d686058514940332d261d140a000000000000000000000000000000000000000000000000000000020a1117212931363a4145474b4e5052535352514f4c4746423b352f281f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172129323a424a505960666d72797e84888d9196979a9b9d9fa2aaa1a1a0a49f9e9c9b9999928f8b86827c766f6a605d564e463f3727221b140b020000000000000000000000000000000000000000000000000000000000060f171f252a3035393a3e41444546464544423f3b3a363029241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1720282f383f444f545c60676d71777c8084878a8d8f909298939494949a9391908e8c8986827e7a756f6a626058524c443d342d2517110a0200000000000000000000000000000000000000000000000000000000000000050d141a1e24292c2d313537383939393735322e2d2a251f18120c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161d262d333d424a50555c60656a6f73777a7d80828485868787878786868583817f7c7976716d68626058544e45413a322b221b13060000000000000000000000000000000000000000000000000000000000000000000003090e13191d202125282a2c2c2c2c2a282521201e19140d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b141c222830383f444b515358606267686e7173757779797a7a7b7a7a79787675726f6d6765615e56544e47433c352f28201910090000000000000000000000000000000000000000000000000000000000000000000000000002080d111314181b1d1f20201f1e1c191414110e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e262e34394045464e5455565e616467686a666d6d6e6e6d6d6c6669686663605c5554524c47433d373229241e160d0700000000000000000000000000000000000000000000000000000000000000000000000000000000010407070b0e1112131312110f0c0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c23282e34383c4347494d5254575a5c545c606061616160605b545b595653514b4746413a37322b272019130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d23282c32373b3c4146474a4d4f4a5153545454545353504a4e4c494745403a3936302b27201b150d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12181c1f272b2e3036393b3e4042404446474748474746443f423f3c3a38342f2d2a251e1b150f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10151b1f22252a2d2e31342e34383a3a3b3b3a3a3938332d33302d2c2923201d19130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315191e2021242723282c2d2d2e2e2e2d2d2b28222623201f1c1813110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080e111414171a181c1f202121212120201f1c1719161413100c070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b070c101213141415141413120f0b06090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070808070706060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0b0c0b07070501000000000000000000000000000000000000000406070a0b0c0a07070501000000000000000000000000000000000000000406070a0b0c0a0707050100000000000000000000000000000000000000000000020507080a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a08070502000000000000000000000000000000000000000000000000000000000000000000010507070b0c0d0c0a070604000000000000000000000000000000000000000000000000000000000000000000000000000001040607090a0b0c0c0b0b0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0d0c09070604000000000000000000000000000000000406070a0c0d0d0c0906050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0d0c0b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080a0b0b0c0c0b0908070501000000000000000000000000000000000000000000000000000000000000000000000000000000020507080d1113131313131313131313131313131313131313131313131313120f0a06050300000000000000000000000000000000000000000000020507080b0d0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b0c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090a0b0b0c0c0c0b0a0908070502000000000000000000000000000000000000000000000000000000000000000000000000000004060708080706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0c0c0c0b0a0907070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040707090a0b0c0c0c0b0a080605030000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0d0c0b08070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213161819171413110d0802000000000000000000000000000000070c101313161819171413110d0802000000000000000000000000000000070c101313161818171413110d080200000000000000000000000000000000000003090e1214151718181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818171514120e0903000000000000000000000000000000000000000000000000000000000002080d11131417191a19161312100c070000000000000000000000000000000000000000000000000000000000000000000406070d1113141517181819181817161414110e0907070501000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131416191a1919161312100c07000000000000000000000001070c10131416191a19181613120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b10121316191a19181414110e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000010507090e121415161718191818161414110d0806030000000406070a0c0d0c0a070604000000000000000000000000000000000000000003090e1214151a1e1f20202020202020202020202020202020202020202020201f1e1c1713120f0b0600000000000000000000000000000000000002090e121415181919181414110e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131417191a19171313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607070c101314151717181919181817161414110e080706040000000000000000000000000000000000000000000000000000000000000000070c10131315151413100d0703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070c1012131517181819191817161413110d08060401000000000000000000000000000000000000000000000000000000000000000000000000000000030608080d11131416171818191818161513120f0b0605020000000000000000000000000000000000000000000000000000000000000000060b10121316191a19181414110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c12181c1f202325252421201e19130e09030000000000000000000001070c12181c1f202325252421201d19130e09030000000000000000000001070d12181c1f202325252421201d19130e09030000000000000000000000000000040a0f141a1e212124242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242422211e1a14100b050000000000000000000000000000000000000000000000000002080d13191d20212426262523201f1c18120b030000000000000000000000000000000000000000000000000000000001070c101314181d202022242525262524242321201e19181413110d08050200000000000000000000000000000000000000000000000000000000000000000000000001070c12181d1f20232526262523201f1c18120b030000000000000000060b12181c1f20232526262522201f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20232526262421201e19140d08020000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141a1e21222324252625242321201e1915130f0a070c10131317191a19161312100c070000000000000000000000000000000000050d141a1e2121272a2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2824201f1b17110a02000000000000000000000000000002080d141a1e20212526262521201e19140d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d13191d20212426262623201f1c18120b060000000000000000000000000000000000000000000000000000000000000000000000000004070d10131417181d1f202224242525262525242321201e19161313100c07000000000000000000000000000000000000000000000000000000040a0f12181c1f20212220201d18120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313181c1f2022232525262525242221201d191413110d08010000000000000000000000000000000000000000000000000000000000000000000002050a0f121515191d2021232424252525242321201f1b1714120e090300000000000000000000000000000000000000000000000000000000020a11171c1f20232526262421201e19140d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c23282c2d303232312e2d2a251e1a150e060000000000000000030b12181d23282c2d303232312e2d2a251e1a140e060000000000000000040c13181d23282c2d303232312e2d29251e1a140d05000000000000000000000000060e151b1f252a2d2e3031313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131302e2d2a261f1c160f070000000000000000000000000000000000000000000000040c13191e252a2d2e31333332302d2c28231c150c0900000000000000000000000000000000000000000000000000040a0f12181d1f2024292c2d2f31313232323131302e2d2a252421201e1914110e0802000000000000000000000000000000000000000000000000000000000000000000030b12181d24292c2d3032333332302d2c28231c150c090100000000020a11171d23292c2d30323333322f2d2b27221b140b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000080c141c23282b2d2f323333312e2d2a251e19130c0500000000000000000000000000000000000000000000000000000000000000000000030a0f13191d2021262b2d2e303132323231302e2d2a25221f1b1512181c1f202326262623201f1c18120b030000000000000000000000000001090f171f252a2d2e3437393939393939393939393939393939393939393939393939393835312d2b27221b140b05000000000000000000000000050c13191f252a2d2e313333312e2d2a251f19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d2e31333332302d2c28231d17110a02000000000000000000000000000000000000000000000000000000000000000001070c1013181d20202324292c2d2f30313232323232312f2e2d2a2523201f1c18120f0a040000000000000000000000000000000000000000000000070f161b1d23282c2d2e2e2d2c29241f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181c1f2023282c2d2f303132323232312f2d2c292421201d19130f0a0400000000000000000000000000000000000000000000000000000000000003090e12151a1f212224292c2d2f303132323231302e2d2b2722211e1a140f0b0600000000000000000000000000000000000000000000000000080c141c23282b2d2f323333312e2d2a251e19130c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d23292e34383a3d3e3f3e3a3936302b2620180f08000000000000050d151d24292e34383a3d3e3f3d3a3936302b261f180f08000000000000050d161d24292e34383a3d3e3f3d3a3935302a251f170f080000000000000000000007101820262b31363a3b3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3b3a36312c2721191108000000000000000000000000000000000000000000050e161e24293036393a3e3f403f3d3a38342e271e1b120b0200000000000000000000000000000000000000000003090e151b1d24292c2d2f35393a3c3d3e3f3f3e3e3d3c3b3a3630312e2d2a25201e1914100b05000000000000000000000000000000000000000000000000000000000000040d151d24292f35393a3d3f40403f3c3a38342e271e1b130b030000020b141c22282f34383a3d3f40403f3c3937332d261d17110a020000000000000000000000000000000000000000000000000000000000000000000000000000010a121a1e262e34383a3c3f403f3e3b3936302a251e170e060000000000000000000000000000000000000000000000000000000000000000060b151a1e252a2d2e31373a3b3d3e3e3f3f3e3c3b3936302e2b27201d23282c2d30323332302d2c28231c150c080000000000000000000000010a131b212931363a3b40444646464646464646464646464646464646464646464646464645423d3937332d261d170e0500000000000000000000050e171e252a30363a3b3e40403e3b3a363029251e160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e24293036393a3e3f403f3d3a38342e28221c140b03000000000000000000000000000000000000000000000000000000000003090e12181d1f24292c2d302f35383a3c3d3e3e3f3f3f3e3d3c3b393630302d2c28231d1b150f0b0400000000000000000000000000000000000000010a101921272c2e34383a3b3b3a39352f2b27221b140b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151a1d23282c2d2e34383a3b3d3e3f3f3f3e3d3c3a39352f2d2c29241e1b150e09030000000000000000000000000000000000000000000000000000040a0f141a1e20262b2e2f2f35393a3c3d3e3f3f3f3e3d3b3937332d2d2a251f1b17110a02000000000000000000000000000000000000000000010a121a1e262e34383a3c3f403f3e3b3936302a251e170e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f272f3439404446494b4c4a4746413a37312a211a110800000000050e171f272f3539404546494b4c4a4746413a37312a211a110800000000050f171f282f3539404546494b4b4a4746413a363129211911080000000000000000071019222a32373b4246484a4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4a4846423b38332b231a110800000000000000000000000000000000000000050e17202830353a4146474a4c4d4c4946444039302d241d140b0000000000000000000000000000000000000000060b141a20262b2f35393a3e404547484a4b4b4c4b4b4a49474642413e3a3936302d2a251f1c160f0a04000000000000000000000000000000000000000000000000000000040d161f272f3539404547494c4d4c4c4946444039302d251d150b00020b141d262d3339404547494c4d4c4b4946443f382f27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000a131c242c30383f4446494c4d4c4b4746413b36302920170f060000000000000000000000000000000000000000000000000000000000020a111720262b3036393a3f424748494a4b4c4b4b494746413c3b37322b282e34383a3d3f403f3d3a38342e271e1a120a010000000000000000000a131c252d333b4246484d5152535353535353535353535353535353535353535353535352514f4a46443f382f2920170d040000000000000000050f17202930363b4246484b4c4c4b4746423b35302820170e050000000000000000000000000000000000000000000000000000000000000000000000000000050e1720282f353a4146474a4c4d4c4a46454039332d261d150c03000000000000000000000000000000000000000000000000000001070d141a1d24292c2f35393a3d40404547484a4a4b4c4c4b4b4a49474641403d3a38342e2b27201b160d080200000000000000000000000000000000010a131c232b32383940454648484745403937332d261d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b141a1f262b2e34383a3d404446484a4b4b4c4c4b4a494745413e3a39352f2b26201a150b06000000000000000000000000000000000000000000000003090e151b1f252a2d31373a3c3f414547494a4b4b4c4b4b494846443f3b3a36312b27221b140b0801000000000000000000000000000000000000000a141c242c30383f4446494c4d4c4b4746413b36302920180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313940454a51535658585754524c47423c332c231a11070000040d172029313940454b51535658585754524c46423c332c231a10070000040d172129313a40454b51535658585754524c46423b332b23191007000000000000030c19222b343c43474d535457575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575755534d48443d352c231a0b020000000000000000000000000000000000020d172029323a41454c5254575959585653514a423f362f261d12090000000000000000000000000000000000020a11171f262b3137394045474a4b515355575858595857575654524d4e4b4746413b3936302c27211b150c0600000000000000000000000000000000000000000000000000020b162028313940454b515356585959585653514a423f372f271d12090a141d262f383f444b5153565859595855535049413e332d261d140a00000000000000000000000000000000000000000000000000000000000000000000000008111c252e363e424a5053565859595754524c46413a322921170c02000000000000000000000000000000000000000000000000000000040b141c222831373a4146474c4d53555657585958575654524c4947433c3734394045464a4c4d4c4946444039302c241c130a000000000000000007101c252e373f454d53545a5d5f60606060606060606060606060606060606060606060605f5e5b57535049413b32291f160c01000000000000020b172129323a41464d52545859595854524d46413a322920170d02000000000000000000000000000000000000000000000000000000000000000000000000030c172029323a41454c5254575959595653514b443f382f261e150a00000000000000000000000000000000000000000000000000040c13181f252a2f35383a4045474a4c4b51535557575858595858575654524d4d494645403937322c272119140d0500000000000000000000000000000009131c252e353d43484b5153545553514b46443f382f271e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171f252a3137394045464a4a515355565858595858575554524c4a4745413a37322b261f17110a020000000000000000000000000000000000000000050d141a20262b30363a3c4347484c4c52545657575858585756545350494846423b37332d261d19130c04000000000000000000000000000000000008111c262e363e424a5053565859595754524c46413a322a21180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f29323b434b51545c6063656564615e56534d453e352c23190d04010c161f29333b434b51545c6063656564615e56534d453e352c22190d03010c161f29333b434b51555c6063656564615e56534d453d352b22190c0300000000000b151e2b343d464e53575e61636464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463615f57544f473d352c1d140a000000000000000000000000000000000008141f29323b444c52565e616466666563605c54504841382f251b0d03000000000000000000000000000000050c141c232831373c43474b515357555d60626464656565646463615e565b5754524c4746413b38332b272017110a0300000000000000000000000000000000000000000000000a141d28323a434b51555d60636566666563605c54514941392f241b0d111c262f38424a50555c60636566666562605b5350443f382f261b11060000000000000000000000000000000000000000000000000000000000000000000005101a232e37404850545c606265666664615e56524c443b33291e140a0000000000000000000000000000000000000000000000000000050e161d262d333c43474c525459575f6163646565656463615e5655544e474240444b5153565959595653514a423e362e251c1108000000000000040f19232e37404951575e61676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6864605b534c443b31281d12070000000000000a141d29333b444c52575e6164666664615e56524c443b32291e14080000000000000000000000000000000000000000000000000000000000000000000000000a151e29323b444c52565e616466666563605c55504a423830261c11060000000000000000000000000000000000000000000000070d161d24293136394045474b51535659555d6062636465656565656462615e565a5653514b47433d38322a251e170e0800000000000000000000000000050e1b252e3740474f54545c606161605d55535049413930271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b141c222831363c42474b515356545c60626364656565656462605d565754514c47433c373128231c140c04000000000000000000000000000000000000060f171f252a32373b4246484e535559565d60626364656565646361605b5354534d46443f382f29241e160d0600000000000000000000000000000005101a232e38404850545c606265666664615e56524c443b332a1e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313b444c555c60666d707172716d68625f5750473e352b1f160c07131d28313b454d555d60666d707172706d68615f574f473e342b1f150b08131e28313b454d555d60676d707172706d68615e574f473d342b1e150b0000000007121c27303d464f585f62696e7071717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171706e696360594f473d2f261c1106000000000000000000000000000000020e1925303b444d565d60686d71727372706d66625a534a41372d1f150b0100000000000000000000000000050e161e262e343c42464e53555d606467676d6f707172727171706f6e696a6764615e5654524d48443d373228231c150c0400000000000000000000000000000000000000000006111b262f3a444c555d60676d70727373726f6d66625b534b41362d1f1617222d38424a545b60676d70727373726f6c65615a504941382d22170b040000000000000000000000000000000000000000000000000000000000000000000b16212c354049525a61666d6f727372716e68615e564d453b30261c1106000000000000000000000000000000000000000000000000050e1620282f383f444e53565e616569696e7071717272716f6e6867626058534e4a51545c606365666563605c5450483f372e231a0b0200000000000a16212b35404a525b62696e7377797979797979797979797979797979797979797979797979797875706c655e564c43392f24180d010000000006111c262f3b454d565e61696e717373716e69615e564c443b3025190e050000000000000000000000000000000000000000000000000000000000000000000006111c26303b444c565d60686d71727372706d67605b544a42382e23170c040000000000000000000000000000000000000000000710191f282f353b42464b5153555d60636669676d6f70717172727271706f6e68696663605c54544e48443d363029201a11090000000000000000000000020d17202d37404952596063666d6e6e6d6764605b534b43392e23180c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171d262d333b42464d53545c606367666d6e707172727271706f6d686864605d55544e47423c342e261e160e06000000000000000000000000000000020a1117212930363c43474d5254585f626669686d6f707172727271706e6c6565615e57535049413d352f281f18100700000000000000000000000000000b17222c35404a525a61666d6f727372716e68615e564d453b30271c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434c565e676d73797c7e7f7d7a756e69615a50473d31281d130d18242f3a434d575e676d73797c7e7f7d7a756e6961594f473d31271d120d19242f3a434d575e676d73797d7e7e7d7a756e6960594f463d30271d12070000000c18232e39424f59606a6f767b7d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7b77706b60594f42382d22170b00000000000000000000000000000005111e2a36414d565e686d747a7d7f807f7c79716c645c53493f31271d1207000000000000000000000000060f17202830383f444d53585f62676d7174777a7b7d7e7e7f7e7e7d7c7a787674716d6866615e56544f47433d342e261e160d0400000000000000000000000000000000000000000b17222d38414c565d676d73797d7f807f7f7c79726d645d53483f31281d1c28333f4a545b666c72797c7f807f7e7c78716c605b53493f332720150a000000000000000000000000000000000000000000000000000000000000000004101c28333e47525b636c71787c7f807f7e7a746d685f574d42382e23170b0000000000000000000000000000000000000000000000030c162028323a424a50585f62686d7275787b7c7d7e7f7e7e7c7a77746f6a625f57545c60666d70727372706d66615a51493f352c1d140a00000000030f1b27323d47525c636d727b80848586868686868686868686868686868686868686868686868584827d776e685e554b4035291d1004000000000b17222d38424d575e686d757b7e7f7f7e7b756d685e564c41362a21160b000000000000000000000000000000000000000000000000000000000000000000000c17232e38424c565e686d747a7d7f807f7d79726c665c544a3f342821160b0000000000000000000000000000000000000000071119222b313a41454d53555d6064676d707376787a7b7d7d7e7f7f7e7e7d7c7a787673706d66626058544f46413b322c231b12090100000000000000000009141f29333f49525c636b6f75797b7b7a76716c655c554b40342821160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1820292f383f444d53575f62666d707477797b7d7e7e7f7f7e7d7c7a7774716d67625f58534d443f38302820170f0600000000000000000000000000020b141b2227333b42464e53575e61666a6f7275787a7c7d7e7e7f7e7e7c7b7975726e6964605b534f45413a312a2219110800000000000000000000000004101c28333e47525c636c71787c7f807f7e7a746d685f574d42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b555e686e797f85898b8b8a86827b706c61594f433a2f2418111d2935404b555e696e798085898b8b8a86827b706b61594f43392f2418111d2935414c565e696e798085898b8b8a86817b706b60584e42392e23180c000004101c2834404a54606b6f7c83878a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a88837d706b60544a3f33281c0f0300000000000000000000000000000714202d3946525e686e7a81868a8c8c8b89847e746e645b5143392f23180c0000000000000000000000060f182129323a424a50575f616a6f74797e818486888a8b8b8c8b8a8a89878583817e7a77736e68636059544e443f3830281f160b02000000000000000000000000000000000000030f1b27333f49535d686d798085898b8c8c8b89847f746f645a5043392f241f2b3844505b666c787f85898b8c8c8b88847e746c655b50443d32271b0f04000000000000000000000000000000000000000000000000000000000000000714202c38444f59636e737e84898b8c8c8a86817a6e695f544a3f34281c1003000000000000000000000000000000000000000000000a151e28323a444c545b606a6e747a7f828588898a8b8c8b8a898784807c766e6a615c666d72797d7f807f7d79716c635b51473e2f261b110600000007131f2c38434f59636e737f868d9092989393939393939393939393939393939393939393939892918e8a827a6e675d5145392c201409000000030f1c28333f4a545e696e7a81878b8c8c8b87817a6e685e52463e33281c1004000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545e686e7a81868a8c8c8c89857f786d665c50443d32271b1004000000000000000000000000000000000000060f19232b343d434b51575e61676d71757a7d7f828586888a8a8b8b8c8b8b8a89878583807d79746f6a636059524c443d352d241b13090000000000000000020e1a25303b45515b636e737c8286878886837e776d675c51453d32271b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018212a323b424a50575e61696e74797d80838688898b8b8c8b8b8a888784817e7a746f6a625f57504a423a322921180f060000000000000000000000000a141d262d333e454d52585f62696e73777b7f828487898a8a8b8b8b8a898785827f7b76706c656059514c433c342b231a110800000000000000000000000814202d3944505a636e737e84898b8c8c8a86817a6e695f544a4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d676e7a838c9297989899938f867e706b60554b4035291d13202c3945515d676e7b838c9297989899938f867d706b60554b4035291d13202c3945525d686e7b838c9298989899928e857d706a60544b4034281c10040006121f2c3844515c666f7d8690949697979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797969590877d70665b5044382b1f1206000000000000000000000000000713202c38444f59616e7a848e929999999896918b80746d62554b4034291c1004000000000000000000040e18212a333b444c545c60696e757c81858a8e91969597979898989797969892908e8a87837f7b75706b626058504a423931281d140a00000000000000000000000000000000000005121f2b3744505b656d7a838d92979899999897918b81746c62554b4035292a36424d57606c78818c92979899999896918b81776c60584e43372b20150a000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b73808a919698999999928e847b6e665c5044382b1f120600000000000000000000000000000000000000000006111c26303a444c565e666c727c81868c8f92979697989898979696918d88827b716c676d787f85898c8c8c89847e726d63594f41382d22170b0000000915222f3b4854606b73808c92999d9fa2aa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9b949083796d6053473b31251a0e02000006121f2b3844505b666e7b848e939a99999a938e847a6e61594f44382c201407000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666e7a838e929999999897928b81786d60594f44382c21160a0000000000000000000000000000000000030d17212b353d464e555d60696e74797e8286898c8f91979596979898989898979597928f8d8985817c766f6b615e564f473f372d251b12080000000000000005111e2a36424d57626d7380898f92989993908a81796d60594f44382c1b110600000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a333c444c545b60696e757b8085898d909299969798989898979596918e8a86817c756e69605c544c443b332921180d040000000000000000000006111b262f383f4450575e616a6f757b8084888c8f9196959697989898979697928f8c87837d78706b605d554e463d352c231a1007000000000000000000000a1623303c4955616c73808a919698999999928e847b6e665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606d798390959fa2a9aba49f9892877d70675d5145392c201e2a36414c56606d798390959fa2a9aba49f9892877d6f675d5145382c1f1e2a36424d57606d7a8390959fa2aaaba39f9792867c6f665c5145382c1f1306000713202d3a4653606d788491989fa6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a7a0999184786c605346392d201306000000000000000000000000000916222f3b4854606b76828f969fa3aba6a9a19e928b7f72675c5145382c1f13060000000000000000030c16202a333b454d565e666d737b82878e92989a9da0a8a3a4a5a5a4a4a3aaa29f9d9a9a93908c86827d766f6a605c544b43392f261c11060000000000000000000000000000000004101c2834404b55606c77828f959fa2a9a6a6a9a19e938b7e71675d5145392c2d3a46525e69737f8c939ea1a9a6a6a8a09e938c80736a6054473c32261b0f00000000000000000000000000000000000000000000000000000000000005121e2a36424d5763707d8a929ea0a8a6aba39f969083786d6053463a2d2013070000000000000000000000000000000000000000000c17232e38424c565e686d787f868e92989c9ea1a9a4a4a5a5a4a8a09e9a948f867e716d79828c929798999896918a7f726b6153493f33271b0f030004101c2834404b55636f7c89929fa3abacaeb4acacacacacacacacacacacacacacacacacacacb4aeacaba69f958c7f7366574d42362a1e120500000613202d394653606c788390969fa4acaca49f968f82766b6155483c2f2316090000000000000000000000000000000000000000000000000000000000000004111d2935414c55606d788390959fa3aba6a9a19e938d80746b6054483d32271b0f010000000000000000000000000000000009141f29333d474f5860676d737b80858a8f9298999c9ea1a9a3a4a4a5a5a5a4a3a9a29e9c9997928e89837d756e68615951493f372d241a0f060000000000000714202d3a46525e69727f8c929c9fa3a49f9d938e81746b605448382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000030d18212a343c464e565e666c727b81878d92979a9d9fa3aba4a5a5a5a4a3a8a09e9b98928e88827b726d665d564d453b332920160c010000000000000000020c17222d384149505a61696e757c81868d9196999c9ea1a8a3a4a5a5a5a4a9a29f9c9a93908a837d756d675f584f473e352c22190e05000000000000000005121e2a36424d5764707d8a929ea0a8a6aba39f969083786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d6873808d959fa7adb3b5afaaa2999185796d6053473a2d20202d3946525e6874808d95a0a7adb3b5afaaa2999184796d6053473a2d20202d3a46525e6974818e95a0a7aeb4b5afa9a2989184796d6053463a2d201307000a1724313d4a5764707d8a96a1aab0b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aba096897c6f6256493c2f231609000000000000000000000000000a1623303d495663707c89949fa8aeb5b3b2ada59e9185796d6053473a2d20140700000000000000000a151e28323b454d575e686d787f868f939a9fa2aaaaacb2b0b1b1b2b1b1b0b3aeaba9aca49f9d99928f89837c736d665d554b42382d22170b0000000000000000000000000000000006131f2c3845515c67717e8b949ea7adb3b3b2b2ada59e9285796d6053473c3135404b55616e7b86929fa5adb3b3b2b2aca59f93877c6f62584e43372b1c120700000000000000000000000000000000000000000000000000000000000714212d3a46535e697783909da4acb2b3b5afa8a0958a7e7164574b3e2e23180c000000000000000000000000000000000000000003101c28343f4a545e686d7a828c92999fa3aaabadb3b0b1b2b1b1b2acaaa69f9892887e74818e949ea1a9a6a8a19e93887d70655b5044372b1f12050006131f2c3845515c6775828f9ca4aeb5b8babfb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbab8b7b0a79e918478695e53463a2d21140700000b1724313e4a5764717e8a959fa8afb6b6afa89f948a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000613202c3945515d67727f8c959fa7aeb4b3b3ada59d92897d7063594f43382c1e1308000000000000000000000000000000020e1a26313b454f59606a6f7980868d92989b9fa3aaa9abadb3b0b0b1b2b2b1b1b0b3adaba9a9a29f9a949089817a706b625b51493f362c21180b0200000000000814212e3b4754616e7b86929fa4acaeafaca59d93897d706353493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333c464e585f686e787f868e93999ea1a9aaacaeb4b1b1b2b2b1b0b2acaaaaa39f9b938f867f786d685f574d453b32281e130800000000000000000a141e27333f49535b606c717b81888e92999ea0a8a8abadb2b0b1b1b2b1b1b3adabaca49f9c959089817a6f6a60594f473e342b20170b02000000000000000714212d3a46535f697783909da4acb2b3b5afa8a0958b7e7164584b3e2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929fa7b1babec0bbb4aba1978c7f7265594c3f2e23212e3a4754616d7a86929fa7b1babec0bbb4aba1968b7f7265584c3f3225212e3b4754616e7b86929fa8b1babec0bbb3aaa0968b7e7165584b3e3225180b000d1a2734404d5a6773808d9aa8b2bcbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdb2a8988b7e7165584b3e3225180b000000000000000000000000010e1a2734414d5a6774808d9aa6b0bbbfbfbdb9ada197897d7063564a3d3023170a0000000000000006111c26303a444d575f696e7a828c92989fa4acaeb4b7b8bdbdbebebfbebdbdbebab8b6b6afacaba39f9b94908780786d675d544a3f33281c12070000000000000000000000000000000713202d3a4653606d7984919ea6b0babebfbfbeb9ada1978b7f7265584e43373845515d6774808d98a3aeb9bebfbfbdb9afa4998f82766a5f5347392e23180c00000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87959fabb9bdbfc0bbb1a79c8f827569544a4034281c10040000000000000000000000000000000000000006121f2c3844505c666d7a838f949fa3abaeb4b8b9bebdbebfbebdbdb9b7b0aaa29a92877f8b939ea6adb3b3b2ada49a9083786c605346392d201306000713202d3a4653606d7985929facb8bfc5c6cad0c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d0cbc7c5c2b9ada196877b6e6154483b2e21150800020f1c2935424f5c6875828f9ba7b1bbc0c0bbb0a69b8e8175685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a85929fa7b1babfbfbeb9aea49d9083766b6054483a2f24190d01000000000000000000000000000005121e2a36424d57606b707c848d92999fa2aaacaeb4b5b8b9bebdbdbebebfbebebdbeb9b8b6b3adaba69f9c938e857d726d625b51483e332a1d140a00000000000d1a2633404d596673808c98a3aeb8babbb9afa59b8f8275655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000007121d27313b454e585f6a6e7a828c92989fa4abadb3b6b9babfbebebfbebebdbdb9b7b4aeaca59e98928c827a6e695f574d443a2f24190d0400000000000006111c26303844505b656c737e858e939b9fa3abacb2b5b7b9bdbdbdbebebebdbebab8b6afaca7a09d938e847c706b61594f463d32291d140a000000000000000815222e3b4855616e7b8895a0acb9bdbfc0bbb1a79c8f827669554b4035291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8a98a2aeb9c2caccc6bdb3a99d9083766a544a40342825313e4b5864717e8b99a3aeb9c3caccc5bdb2a89c8f8376695c5043362925323f4b5865727e8b99a3afbac3cacbc5bcb2a89c8f8276695c4f4336291c10000e1b2835414e5b6874818e9ba7b4c1cecacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacfbfb2a5998c7f7266594c3f3326190c00000000000000000000000004101d2a3743505d6a7683909da9b6c2cbcfc9beb3a9998c807366594d4033261a0d000000000000000c17232e38424c565f696e7b848f949fa3aaafb6babfc4c5c8cecacbcbcbcad0cac6c5c3c0bbb9b5afaca69f99938d82796d665b5044392e23180c000000000000000000000000000005121e2a36424d5764717e8b96a1adb8c2cad0cfc9beb3a99d9083776a5f53473a3a4753606d7985929faab4bfcacfcec9c0b5ab9f94887c6f62544a4034281c1004000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a7b1bcc9cecbc3b8ab9e928578665c5144382c1f120600000000000000000000000000000000000005111e2a36424d57606d78828f959fa6aeb4babfc5c6c9cfcbcbcbcec9c5c2bcb4aca399928b919ba5afb9bebfbdb6aca095887c6f6255493c2f221609000815222e3b4855616e7b8898a2aebac7d1d3d6dbd2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dcd6d3d2c9bdb2a995897c6f6256493c2f2316090003101c28343f4a546b7885919eabb8c2ccccc2b7ab9e9184786b5e5145382b1e120500000000000000000000000000000000000000000000000000000000000713202c38444f5965727f8c97a2adb9c2cbcfc9c0b8ab9f95897c6f63564c4135291d110400000000000000000000000000000714212d3a46535f69707d8691969fa3abaeb4b9babfc2c4c6c9cfcacbcbcbcbcbcfcac6c5c2bebab8b0aba59e9792877f726d625a50453b2f261b110600000000101d2a3643505d697683909caab4bfc7c7c0b8ab9f9285796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434d575f6a6f7c848f949fa2aaafb5b9bec3c5c7cbd1cbcbcbcbcec8c5c4bfbab8afaaa39f948f847b6e695f564c4135291f160c0100000000000b17232e3842505a606c77808a92989ea5acafb5b9bdc2c4c5c9cfcacbcbcbd0cac6c5c0bbb9b1aca59e9691867d706b61584e443b2f261c11060000000000000b1824313e4b5764717e8a97a7b1bcc9cecbc3b8ac9f928579675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99aab4bfcbd6d7cfc4b8ac9f928579665c5144382c2734404d5a6773808d9aabb4bfcbd6d7cfc4b8ab9e9285786b5f5245382c2734414d5a6774808d9aabb5c0ccd6d7cec4b8ab9e9184786b5e5245382b1f12000e1b2734414e5a6774808d9aaab4bfc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bdb2a8988b7e7265584b3f3225180c00000000000000000000000005111e2b3844515e6b7784919eaab7c4d1dacfc0b4a79a8d8174675a4e4134271b0e00000000000003101c28343f4a545e686e7b8491969fa6aeb4bbc0c7cad0d1d4d3d2d0cfcececfd0d2d2d2ccc8c6c0bbb9b0aba49f948f82786c60544a4034281c1004000000000000000000000000000714212d3a46535f697683909da8b2bdcad6dbdacfc5b8aca095887b6f6255483c414c5564717e8a98a2aebcc6d0dad9d2c7bdb0a69a8d8174665c5144382c1f1307000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1becdd9d2c6b9ada19786796d6053463a2d2013070000000000000000000000000000000000000714202d3a46525e69727f8c949fa7b0babfc6cbd0d2d5d3cec8c5c4c1c0c1c2beb4aba39f989ba3adb7c1cacfc7beb1a7988b7e7265584b3f3225180c000916222f3c4955626f7c8895aab4bfcad6dfe2e7dfd8d4d1d0cececececececececececececececed0c8bcb1a795887c6f6255493c2f2216090006121f2c3844505c667986929facb9c5d2d2c5b9ac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000000000000916222f3b4854606b7784919da9b3becbd7dad4c7bcb1a79b8e8174685d5245392c20160a0000000000000000000000000004111d2935414c56616e7b859298a1a8aeb4babec5c7cbd1d1d2d5dad7d7d8d8d8d7dbd6d2d1cfcac6c2bbb7afa9a199928b7f726c61574d41382d22170b00000000121e2b3845515e6b7884919eabb7c4d1d3c6baada297877a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b555f696f7c8591969fa6aeb4bbc0c7cacfd2d3d7dcd8d8d8d7d9d4d2d0cbc7c1bcb4aea69f9691847b6e685d52453f31281e13080000000003101c28343f4a54616c73808d929fa2aaafb9bbc0c7c9ced1d2d5dad7d8d8d8dbd6d3d2ccc8c3bcb8afa8a09892867d706a60564d42382d22170b0200000000000c1925323f4c5865727f8b98a5b2becdd9d3c6baaea298867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cfdbdfd3c6baaea29886796d6053463a2d2834414e5b6774818e9aa7b4c1d0dbdfd2c6b9ac9f9386796c605346392d2835414e5b6874818e9ba7b4c1d0dbdfd2c5b8ac9f9285796c5f5246392c1f13000c1825323f4b5865727e8b98a3aeb4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b3aba096897d6f6356493c3023160900000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b4a89b8e8175685b4e4235281b0f000000000005101a242c3844505c666d7a849196a0a8b0babfc6ccd2d5d2d0cac6c5c3c2c1c1c2c3c5c7cbd1d2d1cbc7c2bdb5afa69f948b7f72665c5144382c1f1206000000000000000000000000000815222e3b4855616e7b88959fabbac4cfdce6e1d4c8bcb1a7998c807366584e4345515d6775828f9caab3beced8e2e3d9d0c2b8ab9e9285796d6053463a2f24180d010000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d6cabeb3a994877a6d6154473a2e211407000000000000000000000000000000000004101c2834404a54616e7b86929fa6b0b9c2cbd1d6dcd3ccc7c3bdb8b7b4b3b4b5b8bab4aeaca5a7adb5bfc9d6d9d0bfb3a6998c807366594d4033261a0d000916222f3c4955626f7c8895a2afbbd0dbe7e6ddd4cdc8c4c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb8aca095877a6d6154473a2e211407000713202d3a4653606d798699a3afbbc7d3d3c7baaea39886796c605346392d2013060000000000000000000000000000000000000000000000000000000005111d2935414c5663707c8996a0acbbc5d0dde4d8cdc2b8ac9f92867a6d6054473d32271b0f010000000000000000000000000613202c3945525d6875818e97a2aab2babfc6cad0d3d7dcdedfdfdcdad8d7d6d6d6d8dbdfdedbd6d3cdc7c1bbb3aba39f93887e71695f53493f33271b0f03000000121f2c3945525f6c7885929fabb8c5d2d6cabeb3a994877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000020c16202c3845515d676e7b859297a1a8b0babfc6ccd2d6dadcd6d3d2d0cfcfd1d2d5dadcd6d3cfc6bfbab0a8a09691847a6d605a50433a2f24190d0000000006121f2b3844505c66707d8a929ca4aeb3bcc1c7cbd1d5d9ddd8d4d2d1cfcfd1d2d5d9ddd8d4cec8c1bab2aaa29892867c6f695e544a3f33281e130800000000000d192633404c5966737f8c99a6b2bfccd9d6cabfb4aa94877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a9b3becad5d7cec5b8ab9f928578665c5144382c2733404d5a6673808d99aab3becad5d7cec5b8ab9e9285786b5f5245382c2734414d5a6774808d9aaab4bfcad5d7cec4b7ab9e9184786b5e5145382b1e12000814212e3b4754616e7b86929fa3aba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7a9a1999184786d6053463a2d20130700000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000c17222b37434e58606d78828f96a0a8b2bac2cbd0d7cfc9c6c5bfbab8b6b5b4b4b5b7b9bbc0c4c6c9cfd3d0c7c0bbb0a69e9185796d6053463a2d20130700000000000000000000000006131f2b37434e5866737f8c99a7b1bcccd6e0eee4d9cec3b7aa9e9184776a5f53474754606d7a86929facb9c5d0dfeaebdfd2c6b9ada1978a7d7063554b4035291d11040000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8dacfbaada094877a6d6154473a2e211407000000000000000000000000000000000006121f2c3844515c6673808d98a3aeb8c2cbd7dcdad1cac1bbb7b2acaaa8a7a7a9acaeb4bab9b2b3b8bfc7d0dbd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2dfd4cbc3bcb8b6b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4aea59d908377685e5246392d201307000713202d3a4653606d798693a0b5c0cbd7d7cbbfb49f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000713202d3946525d6875818e9ba8b2bdcdd7e1e9e0d3c7baaea2988b7f7265584e43382b1e13080000000000000000000000000714212d3a4754606d7a86929fa9b3bcc4cbd1d6dbe0dfdcd7d3d2d0cdcbcac9c9cacbced2d3d6dbdfd8d3cdc5bdb5afa49a92867b6e655b5044372b1f160a000000121f2c3945525f6c7885929fabb8c5d2dbd0baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e58606d79839097a1a9b2bac2cad0d7ddd8d3d0cbc7c5c3c2c3c4c5c9cfd2d7e0d8d1cbc2bab2a8a0968f82756c62554c4135291c11060000000713202d3a4653606d7884919ea4aebabec5ced3d7dcd9d4d2ccc8c6c4c2c3c4c5c9ced3d6dbd9d4ccc3bcb4aaa29892857b6e665b50443a3025190d02000000000d192633404c5966737f8c99a6b2bfccd9dbd0baaea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a2adb9c1c9cbc5bcb2a89c90837669544a40342824313e4a5764717d8a98a2aebac2c9cbc5bcb2a89c8f8276695c4f43362925313e4b5864717e8b98a2aebac2c9cbc5bcb1a79c8f8275695c4f4236291c0f000714202d3946525e68737f8c92999a9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a9792877d70665c5044382c1f120600000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000005111c28333b4754606a73808c949fa8b2bac4ccd6d1cbc5beb9b8b4aeaca9a9a8a7a8aaacafb5b8b9bec4c7cdd2ccc2b9ada197897c6f6356493c302316090000000000000000000000000815222e3b4754606a7784919daab7c2cddde8f2eaded2c5b8aca096887c6f6255494b5564717e8a99a3aebac7d3e0eceee2d6cabeb3a99b8e8175675d5145392c2013080000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e21140700000000000000000000000000000000000713202d3a4653606d7985929eaab4bfcad4dddbd1c8bfb8b0aaa8a09d9b9a9a9c9fa3aaaeb3bcc4c3c9d0d9e2d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e4d8cdc3b9b1abaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7aaa29f938b7e7164564c41362a1d1105000713202d3a4653606d798693a0acb9d1dcdcd1b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86929facb9c3cedfe9efe2d6cabfb4aa9d9083776a6054473a2f24190d010000000000000000000000091623303c4956636f7c8999a3aebbc5ced7dcdfdad5d2d1cbc7c5c3c1bfbdbcbcbdbec1c5c6cad0d8e0dfd6cfc7c0b6aca2989082786c6053463d32271b0f030000121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e21150b0c0c0c0b0a0807050200000000000000000000000000000000000000000000000000010d1925303a47535f6a74808d95a0a9b3bbc4ccd6dbdad5ccc7c6bfbab8b6b5b6b7b9bdc4c6ccd7dddcd7ccc4bab2a89e948b7e71675d5145382e23170c0000000a1723303d4a5663707d8996a0acb6c0cad0d7e0d8d3cdc8c7c0bbb9b7b6b6b7b9bdc4c6cad0d7ded5cec5bcb4aaa1978f82786c60564c41362a1e1308000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929ea6b0b9bdbfbbb3aaa1968b7f7265584c3f2e23212d3a4754606d7a85929fa6b0b9bebfbab3aaa0968b7e7165584b3e3225212e3a4754616d7a86929fa6b0b9bebfbab3aaa0958b7e7164584b3e3125180b0005111e2a36414d56606c777f868b8d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8a857e706b61544a3f34281c100300000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000814212d3945505a626f7c87929fa6b0bac4ccd6cfc7c0bbb3adabaaa29f9d9c9b9b9c9d9fa3ababadb2b7bcc2c7ccc9beb3a9978b7e7164584b3e3125180b0000000000000000000000030f1c28333f4a54626f7c8895a0acb8c5d1deebf9ede1d4c8bdb2a8998d807366584e515d6775828f9babb4bfcbd7e3eff2e6dacfc5b8ac9f92867a6d6053473a3025190d0100000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e21140700000000000000000000000000000000000a1723303d4a5663707d8997a1adbcc6d0dce0d3c9bfb6aea69e9c96918e8d8e8f92989fa2aab2bac4cfd8e2e6d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e0d4c8bcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a98928c81756c6156443a3025190d01000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000007131f2c38444f5965727f8c98a3aebac7d3e0ecf3e7dbd0c6b8aca095897c6f62564c4135291d110400000000000000000000000a1723303d4a5663707d8996abb4bfcbd7dbd6d3cfc9c6c5c0bbb9b6b4b2b0b0afb0b2b4b8babfc6ced2dbe1d9d1c7beb4aa9f948a7d7064584e43382c1f13070000121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e21161818191818161414110e0806030000000000000000000000000000000000000000000005111d2935414c56626f7c87929fa7b1bbc5cdd6ded6cfc9c2bbb7b4aeacaaa9a9abadb2b6bbc1ccd2d9ded6ccc3bab0a69e92857a6d60544a3f34281c100300000d1a2633404d596673808c99a8b2bdc8d6dbd9d4ccc7c3bcb8b6afacaba9a9aaacb2b8babfc6ced5ddd7cfc6bcb3a99f948b7f72685e52463a3024190d010000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d67727f8c949ea6adb2b5aea9a2989184796d6053463a2d20202c3945515d67727f8c949fa6adb3b4aea9a1989184786d6053463a2d20202d3946525d6873808c949fa6adb3b4aea9a1989183786d6053463a2d20130700020e1925303b44505b656c737b7e8181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181818181807e79706c61594f42382e23170c0000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000a1723303c4955616c76839099a3afb8c2ccd5cec5bdb5afa9a19e999892908f8e8e8f9092999a9ea1a9abb0b9bbc0c7beb3a9978b7e7164584b3e3125180b000000000000000000000006121f2b3844505b6673808d9aa8b1bdc8d4e1edf9f1e5d9cec3b7aa9e9184776a605453606d7a86929facb8c5d1dce7f3f7ece0d3c6baaea2988a7e7164564c41362a1d110500000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e21140700000000000000000000000000000000000d1a2633404d596673808c99a9b3beced8e2d8cec1b7aea49c948f888481808182868c9298a1a8b2bdc6d1dce7d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd1c4b8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8a857f786c605a504532291e130800000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000000000915222f3b4854606b7784919daab4bfcbd7e3eff8ede2d4c8bcb1a79b8e8174685d5245392c20150a00000000000000000000000916222f3c4955626f7c8899a3aebac7d2d0cac6c5beb9b8b5afaca9a7a5a4a3a3a3a5a8acaeb4bcc0c8d1d9e3d9d0c6bcb0a69d9083776a6054483b2e2215090000121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e212325252625252321201e1913120f0b0600000000000000000000000000000000000000000713202d3946525e6875818e99a3afb9c3cdd6ded5cdc4beb9b0aaaaa39f9d9c9c9ea1a8aaafbbc0c7d0d9ded5ccc1b9ada2978c7f73665c5044382c1f120600000e1b2834414e5b6774818e9aa7b4c1cedad5cec8c2bbb7b1acaca49f9e9c9c9ea0a8acaeb4bcc3cbd5ded8cec5bbb0a69f92857a6d61564c4135291d11050000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55606c78828f949ea1a9aba39f9792867c6f675c5145382c1f1d2935414b55606d78828f949ea1a9aba39f9792867c6f665c5144382c1f1d2935414c56606d78828f949ea1a9aaa39f9792867c6f665c5044382b1f1206000008141f27333f49535b60696e72747575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757575757474716d67615a50473d30261c11060000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000007131f2c38434f5964717e8a959fabb5c0cad4d0c5bcb4aba39f97928c888583828181828486898d91979c9fa6acafb5b9b9ada297897c706356493d3023160a00000000000000000000000613202d394653606c7884919eabb8c3ced9e5edecedeaded2c5b9aca096887c6f62555564717e8a98a3aebac7d3e2edecedefe2d6cabfb4aa9c8f8275685e5246392d20140900000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfdcdcd0c6bcafa59c928c827c7775747476797f859196a1abb4bfcbd7e3d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd0c3b6aa9d908382828282828282828282828282828281807e7a736c665b50483e3420170c0200000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000004111d2935414c56636f7c8995a0acbcc6d1dce7f3fef0e4d9cec3b8ac9f92867a6d6054473d32271b0f01000000000000000000000714202d3a4753606d7a86929facb9c1c5c4bebab8b3adababa39f9d9a9897969697989b9fa2aaaeb6bfc7d1dce2d7cec2b8aca095897c6f6256493c31251a0e0200121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2e303132323231302e2d2a25201f1c17110c060000000000000000000000000000000000000714212e3a4754616d7a86929fabb5c0cbd5dfd5ccc3bbb3ada69f9c9892908f9091969b9ea5afb5bdc7d2ddded6cabeb3a99e9185796d6053463a2d20130700000e1a2734414d5a6774808d9aa7b3c0cfcfc9c3bcb8b0aba7a09d9a93918f909196999fa2aab1b9c3ccd5e0d6cdc2baada2978d8074685d5246392d2014080000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3944505b666d79828b9196979899928e857d706a60554b4034281c18242f3a44505c666d79828b9197979899928e857d6f6a5f544a4034281c1924303a44515c666d7a828c9297979898928e857d6f6a5f544a3f34281c10030000020b17222d38414950575e616567686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686764605d5550473e352c1e150a000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000915222f3b4854606b7783909da7b1bdc7d1d6cabfb4aaa299928c85807c797676757475777a7d80848a90949b9fa4abacaca59f9285796d6053473a2d2014070000000000000000000004101c2834404b5563707d8996a1adb9c5d5dfe4e0dfe0e4e1d5c9bdb2a89a8d807367585d6775828e9baab4bfcbd6e3e0dfe0e4e7dbd0c5b9ac9f92867a6d6154473b31261a0e02000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000005111e2b3844515e6b7784919eaab7c4d1ddd6cbbfb4aa9e938c80756f6a686767676d727c849199a3aebac7d2ddd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7575757575757575757575757575757473716d68605b544a3f362d220e050000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000713202c3945525d6875818e9ba7b1bccfd8e2edf8f5f5eae0d3c6baaea2988b7e7265584e43372b1d13070000000000000000000006131f2c3845515d6776828f9ca5afb8b9b7b3aeaba9a19e9a9992908e8c8a89898a8b8e92989da4adb5bfcad4dee0d4c8bcb1a79a8d817467574d42362a1e120500121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b3a3b3d3e3f3f3f3e3d3b3936302d2b28221c17110a03000000000000000000000000000000000b1825313e4b5864717e8b99a3afbdc7d1ddd6cdc3bab2a9a19e948f8a8683828384888f939fa4abb5c0ccd7dfdbcfc5b9ada1978a7d7063574a3d2e23180c00000c1925323f4c5865727f8b98a6b0bcc5c4beb9b1aca69f9c95908b8784838384878c9298a0a7b1bac3d0d9dfd6cabeb3a99f92867a6d6154473b3025190e0200000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28333f4a545d676d787e84888a8b8a86817b706b60584e43392e2318131d28343f4a545d676d787f85898a8b8a86817b6f6b60584e42392e2318131e2834404a545d686d787f85898a8b8986817a6f6a60584e42382e23170b0000000006111b262f383f444d5254585a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5753514b433e352c231a0c03000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000003101c28343f4a54636f7c8995a0acb9c2cfd9d3c6baaea29892877f79736f6d6669686869676d7074797e83898f93999ea09f9c938c7f72675c5145382c1f13060000000000000000000006131f2c3845515c6774818e9aa9b2bdc9d5ddd8d4d2d4d8ddd9cec4b7ab9e9184786a60606d7986929facb8c5d0dcd8d4d2d4d8dde0d3c7bbafa3998b7f7265574d42362a1e1205000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000006131f2c3946525f6c7985929facb8c5d2dfd3c7baaea3988e81756e625f585a555d606a6f7c86929fabb5c0ccd7d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716868686868686868686868686868686764605d56504a42382d241b10000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3cedfeaebe9e8e9ebe2d6cabfb4aa9d9083776a6054473a2f24180d0100000000000000000004101d2935404b5563707d89939ea5abacaaaaa29f9b97928e8a8683817f7d7d7c7d7f81868d929ca3adb8c2ccd8e3d9cec3b7ab9e918478695e53463a2d21140700121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e615448424647494b4b4c4b4b494746413d3938332d28231c150c060000000000000000000000000000000e1b2834414e5b6774818e9aabb5c0cfd9d9cfc4bbb2a8a097918a827d79777676787c828b9399a4afbbc3cdd9e1d5c9beb3a99a8d817467544a4034281c1004000915222f3c4855626f7c88949faab4b9b8b3ada7a09d948f89837f7b787676777b7f869095a0a8b2bec7d2dddbd0c5baaea2988b7f7265564d41362a1e110500000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d38424b555d666d72787c7e7e7d7a756e6960594f463d30271d120c17232e38424c555d666d72787c7e7e7d7a746e6960594f463c30271c120c18232e39424c565d666d72787c7e7e7d7a746e6860584e463c30261c110600000000000a141d262d333b4246484b4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4d4b47454039312c231a110800000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000006121f2c3844505c6674818e9ba7b1bccbd4d2c6baafa59f92867d736d6762605c545b5b555d6063666d71767c82878d919692908a81776c60554b4034291c1004000000000000000000000713202d3a4653606d7985929fabb8c4cfd9d2ccc8c6c8ccd2d9d2c5b9aca196897c6f6264717d8a98a2aebac6d3d2ccc8c6c8ccd2d9d7cbc0b5ab9c908376695f53463a2d21150a000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114070000000000000000000000000000000006121f2b3844505c667986939facb9c6d2dfd2c5b8ac9f92867a6d615c534e4d4b51585f6a73808d99a4afbbc7d4d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5754524c443f382f261c1209000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000007131f2c38434f5965727f8b98a3aebac7d3e0e3dfdcdbdcdfe3dbd0c6b8aca095897c6f62554b4135291d1104000000000000000000000c18242f394854606b74818e939b9e9f9d9a98928e8985817d7a7674727170707072757a808c919ca6b0bbc7d3dfded2c5b9aca196877b6e6154483b2e21150800121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154484d52545658585958585654524d4a46443f38342e261e17110a0200000000000000000000000000101d2a3743505d6a7683909da9b6c3d1dcd1c7bdb2a9a09691857d76706d6669696a6f757f87939fa7b1bcc8d4e3dacfc4b7aa9d918477665c5144382c1f1206000815212e3a47535f6a76839098a2aaacaba9a19e959089827d77726e696969696e737b839096a0acb6c0ccd8e1d6cabfb4aa9d908376685e5246392d20140700000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3a434b545c60656c6f7171706d68615e574f473d342b1e150b06111c26303a434c545c60666c6f7171706d67615e574f473d342a1e150b07121c27303a444c545c60666c6f7171706d67615e564e463d342a1e140a000000000000020b141b222730363a3b3f4142424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424241413e3a39352f281f1a11080000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000713202d3a4653606d7985929eabb8c3cddecfc3b6aa9e938a7d706b605c5553504a4e4e4b5153545c60646b6f757b80848686837e746c655b5043392f23180c0000000000000000000004111d2935414c5664707d8a97a2adbac6d6d0c7c0bbb9bbc0c7d0d5c9bdb2a89a8d8073656775818e9baab4bfcad0c7c0bbb9bbc0c7d0d8d1c7b7ab9f94887b6e6155483c32261b0f000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798699a4afbbc7d4dacec1b4a79b8e8174685e5247434140454e58616e7b87939facb9c6d2d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584f4f4f4f4f4f4f4f4f4f4f4f4e4d4b4745413a332d261d140a00000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d201306000000000000000000000000000000000000000000000000000915222f3b4854606b7784909daab4bfcbd6ded7d2cfcecfd2d7ded4c8bcb1a79a8e8174675d5145392c20150a0000000000000000000007121d2c38444f59606d78818a8f9192918e8a85817d7974706d6767656463636465686d747f8c949fabb7c3d0dde1d5c9bdb2a8978a7d7064574a3d3124170a00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e615455575e6163646565656463615e565753504a443f383028231c140c03000000000000000000000000111e2b3744515e6a7784919daab7c4d0d7cbc0b5aba19791847b706b63605c54585f626d727f8c95a0acb8c7d2dddfd2c5b9ac9f9286786d6053463a2d2013070006121f2b37434e58626f7c8692989e9f9f9c97918b837d76706b65615e57575e61696e7a84919aa4afbbc8d4e0dbd0c6b8ab9f95877a6e6154473b2e21140800000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115080707070706060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28313a424a50535b6062646563605d56534d453d352b22190c03000a151e28313a424a50545b6062646563605d55524d453d352b22180c03000b151e28323a424a51545b6062646563605d55524d443d342b22180c0200000000000000020a11171f252a2d2e32343535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534312d2c29241d160d08000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000091623303c4956636f7c8997a1adb9c6d2d8ccc0b6ac9b8e81756b615959595959595959595959595959596063696e73777a7976716c605b53493f31271d1207000000000000000000000613202c3945525d6875828f9ba9b3becad2c7beb6afacafb6bec4cdcec4b7ab9e9184786c6d7985929facb8c5d0c7beb6afacafb6bec6cfd3c7bcb0a6998c7f7266584e43372b1b11060000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0b5c0ccd7d7cabdb1a4978a7e7164564c413731353c46525e697783909daab6c3d0d9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b424242424242424242424241403e3a39353028221c140b0200000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d20130600000000000000000000000000000000000000000000000004111d2935414c56636f7c8995a0acbcc6d0dcd3ccc6c3c2c3c6ccd3d9cdc3b8ac9f92867a6d6054473c32271b0f0100000000000000000001101c27333d45515c666d757d82858684817d7974706d6663605d555957565657565d606d76828f9ca9b5c2d0dce5dacebfb2a5988c7f7265594c3f3226190c00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e615f6267696e707172727271706e686763605b54504a423d342e261e150d030000000000000000000000111e2b3844515e6b7784919eaab7c3cdcac2bbafa39991857b6e69615953514a4e535b606c7883909dabb5c0ccd7e0d3c7bbafa399887b6e6155483b2e22150800030f1b26313c47535f6a707d868e9192928f8b857e78706b63605954524d4d53575e686f7d87939facb9c6d2dde2d4c7bcb1a7978a7d7164574a3e3124170b00000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115141414141413120f0b06060300000000000000000000000000000000000000000000000000000000000000000000000000000000020b161f2830383f444950535557585754524c46423b332b231910070000030c161f2830383f444a50535657585754514c46423b332b231910070000030c162028303940444a50535657585654514b46413b322b2219100600000000000000000000060b141a1e2021252728282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828272420201d18120c0400000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000c1926333f4c5966727f8c99a9b3becad6d4c8bbafa49a897c7066666666666666666666666666666666666666666666676d6c6664615a534d453c33291f1409000000000000000000000714212d3a4754606d7a86929facb9c5d0ccc0b6aca49fa4acb2bbc4cfc5b9ada196897c6f707d8a98a2aebac6ccc0b6aca49fa4acb4bcc6d1cdc2b7aa9d9184776a5f5347382d22170b0000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9d2ddd4c8bbaea195887b6e6255483b30262a36424d566774818e9aa7b4c1cdd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e353535353535353535353534312d2c29241e17110a020000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000713202c3945525d6874818e9ba7b1bcced8d3cac1bbb6b5b6bbc1cad3d3c6baaea2988b7e7265584e43372b1d1307000000000000000000000b16212834404b545c606c707578797774706d6763605c5453514b4c4a4a494a4c525b63707d8996aab4bfcbd6e3dacdc0b4a79a8d8174675a4e4134271b0e00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e626a6f74787b7c7e7e7f7e7e7c7a7874706c66605c544f443f3830271f150d0300000000000000000000101c2936434f5c6976828f9ca7b1bbc3c0b8b0a69f92877d70695e574f4644404347505b65717e8a99a4afbbc7d4e0d7cbc0b5ab95897c6f6256493c2f23160900000a15202b37434e58616b707b81848685827e79726d666159544f48464242464d56606b76828f9cacb6c0ccd8e4d8cdc0b3a79a8d8074675a4d4134271a0e01000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21212121212121201f1c1715130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e262e34383f4446494b4b4a4745413a3631292119110700000000040d161e262e34383f4446494b4b4a4745413a3630292119110700000000040e161e272e34383f4446494b4b4a4745413a3630292019100700000000000000000000000002090e121415181b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a181413100d07010000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00030f1b27333f49536875828f9ba8b5c2cfdad2c6b9ac9f9386797373737373737373737373737373737373737373737373737272706e68625f574d453b30251a0e02000000000000000005111e2a36424d5665717e8b98a3aebac7d4c8bbafa49a939aa1a9b2bec9c9bdb2a89a8d807475818e9baab4bfcac8bbafa49a939aa3aab4bfcbd1c5b8aca095887c6f6253493f33271b0f0300000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c7baada094877a6d6154473a2e212530404d5a6673808d99a6b3c0ccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e3d3d3d3d3d3d3d3d3c3c3a38352f2d282217110a02000000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d2013060000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3ced4cbc1b8b0aaa8aab0b8c1ccd6cabfb4aa9d9083776a6054473a2f24180d01000000000000000000050c18232e39424b51596164686b6c6a6763605c5553504a4745403f3e3d3d3d414653606d798698a3aebac7d3e0dbcec1b4a89b8e8175685b4e4235281b0f00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6f757c818487898b8b8c8b8b898784817d78726d666059504a423931271f150c030000000000000000000b1825323e4b5865717e8b95a0a9b1b8b7afa69e938c7f736b60574d453e3834373f4953616d7a86939facb9c6d2dfdcd1bcafa396897d706356493d3023160a0000040f1b26313c464f5961696e7478797876716d67605c544f48443d3a36363b444f5964717d8a9aa4afbbc8d4e0dbcfc2b5a89c8f8275695c4f4236291c0600000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2e2e2e2e2e2e2d2d2b2822221f1b150f07000000000000000000000000000000000000000000000000000000000000000000000000000000040c141c23282d3337393c3e3e3d3a39352f2a251f170f07000000000000040c151c23282d3338393c3e3e3d3a39352f2a251f170f07000000000000040c151c23282d3338393c3e3e3d3a39352f2a251f170e07000000000000000000000000000000020507080c0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0e0b0706040100000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0005121f2b3744505b657784919daab7c4d0ddd2c5b9ac9f92867f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7a766e695f574d42362a1e120500000000000000000714202d3a46525e6976828f9caab4bfcbd2c6b9ac9f93869197a1adb9c6cfc4b8ab9e9184787985929fabb8c5d0c6b9ac9f93869298a3aebac7d3c8bcb1a7998d8073655b5044372b1f120700000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b494949494949494949494847454039393327221b140b020000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000006131f2b38434e5865727f8b98a2aebac7d5cdc3b9b0a69e9b9ea6b0bbc6d2d0c6b8aca095887c6f62554b4035291d11040000000000000000000007121d27303940454f55575c5e5f5e5b5753514b46443f3a39352f313033383f46525e697985929facb8c5d2dfdbcec2b5a89b8f8275685c4f4235291c0f00121f2c3945525f6c7885929fabb8c5d2d4c7baaea194877b727c82878d91969697989898979696918e8a847f78706b605c544b433931271e150a0000000000000000000713202d3a4653606d78839097a0a7ababa59d948f81786c60594f453b332c282d3846525d687885929eabb8c5d1ded5c9bcafa296897c6f6356493c302316090000000a15202a343e474f575e61676b6c6c6965605d55504a423d38332d2a2a323d4754606d7a86939facb9c6d2dfddd0c4b7aa9d9184776a5e51442d22170b00000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b3a3a3a3a3a3a3a3a3938332d2e2b272019100a020000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b22272b2d2f3132302d2c29241e1a140d050000000000000000030a11171c22282b2d2f3132302d2c29241e1a140d050000000000000000030b12181c22282b2d2f3132302d2c29241d19140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000613202d394653606c7985929facb8c5d2dfd3c7baaea398928c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b8a87827b6e695e52463a2d20140700000000000000000814212e3b4754616e7b87939facb9c6d1cfc2b5a89c8f8285919eabb8c4cfc6b9ada197897d7d8a98a2aebac6cabeb3a99b8e8186929facb9c5d2cec3b7ab9e9184786c605346392e23180c00000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655856565656565656565656565553514b49443e332d261d140a0000000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c6053462e23170b0000000000000000000000000000000000000000000000000815222e3b4754606a7783909daab4bfcad4c8bcb1a79e938f939eaab6c3ced4c8bcb1a79a8e8174675d5145392c20150a00000000000000000000000b151e272e343e44494a4f5253514e4a4645403a38342e2c2d30363a3d44485059616e7b8798a3aebac7d3e0dbcfc2b5a89c8f8275695c4f4236291c0f00121f2c3945525f6c7885929fabb8c5d2d4c7bbaea194887b7f878f939a9ea1a9a4a5a5a5a4a8a19e9a96918b847d736d665d554b433930261c1106000000000000000006121f2c3844515c666e7b8590959c9e9e9b938e82796d665b50473d332926252a36414d566b7784919eaab7c4d1ddd6cabeb3a995887b6f6255483c2f221509000000040e18222c353e454d53545b5e5f5f5c5853514b443f38302c27201e202c3945525d687784919eaab7c4d1ddded2c5b8ab9f9285786c5f493f33271b0f03000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544847474747474747474746443f3c3b37322b221c140a01000000000000000000000000000000000000000000000000000000000000000000000000000000060b11171b1f202224252421201d19130e09030000000000000000000000060c11171c1f202324252421201d19130e09020000000000000000000000070c11171c1f202324252321201d18130e080200000000000000000000000000000000000000000000000000000000000000000000000000030506080a0b0b0c0c0b0a09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000714212e3a4754616d7a8798a3aebac7d3e0d7cbbfb4aaa39f9999999999999999999999999999999999999999999999999999989a938f857b6e6154483b2f24180d0100000000000006121e2b37424d5765727f8c99a4afbbc7d4c8bcb1a7988b7f808d9aa9b3bec9c9beb2a99a8d80818e9baab3becac6baada297897d828f9ca8b5c2cdd2c5b9ada196897c6f63544b4034281c1004000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716563636363636363636363636362605d555550443f382f261b110600000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f9386796c604a3f34281c10030000000000000000000000000000000000000000000004111d2935414c55626f7c8995a0acbcc6d0d1c4b8ab9f958f828f9ba7b1bcc8d4cdc3b8ac9f92857a6d6053473c32261b0f0100000000000000000000030c151d232833393c3d42454644413d3a38342e2b2d30363a3b4246484f545a626b73808c99aab4bfcbd6e3dbcec1b5a89b8e8275685b4f4235281c0f00121f2c3945525f6c7885929fabb8c5d2ddd0c3b7aa9d90838c92999fa4acadb2b1b1b2b1b1b2adaba8a19e96918780786d675d554b42382e23170e050000000000000004101c2834404a545f696e7b838b8f91918e8981796d675d544a3f3530323330353b46525e687885929fabb8c5d2ded2c6b9ada297877a6e6154473b2e2114080000000006101a232c333b4246484e5153524f4b47454039342e261e1c16121d2935414c566976838f9ca9b6c2cfdcdfd2c5b9ac9f928679655b5044372b1f1205000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61545454545454545454545453504a4947433d342e261c13090000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213161818171413110d0801000000000000000000000000000000060b0f1213161818171413110d0801000000000000000000000000000000060b0f1213161818171413110d070100000000000000000000000000000000000000000000000000000000000000000000000305060b0f12131517171819181817161413100c0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000815222e3b4855616e7b8894aab4bfcbd6e3dcd1c6bcb4aeaca6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a5aca49f978d817467554b4035291d10040000000000000814212e3a47535f697783909dabb5c0ccd1c4b8aca095877b7d8997a1adb9c6cfc4b8ab9e918585929fabb8c5d0c5b8ab9f9285787e8b98a7b1bcc8d4c9bdb2a89a8e8174665c5145382c1f1307000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e717070707070707070707070706f6f6d6764615a504941382d22170b00000000000713202d3a4653606d798693a0acb9c6d3d2c6b9ac9f938679665c5044382b1f1206000000000000000000000000000000000000000000000613202c3945515d6774818e9ba7b1bcced8ccc0b6ac9d90837c8895a0acb8c7d2d3c6baaea2988b7e7165584e43372b1d12070000000000000000000000030b121821282d30313538393734302d2c2d30363a3b4246474d52545960636c717d87929facb9c5d0dce7dacdc1b4a79a8e8174675b4e4134281b0e00121f2c3945525f6c7885929fabb8c5d2ded1c5b8aca09590959fa3abafb6b9bdbebebfbebebdb9b8b2aca8a099938d81796d675d544a3f342820160c02000000000000000c18232e39424d575f696e787e828584817c746d675d554b42383a3d3f3f4041464c56616e7a8797a2adbac6d3ded1c5b8ab9e928578695e52463a2d201407000000000008111a212931363a3b41454645433e3a39352f2a26201d19130d19242f424f5c6875828f9ba8b5c2cedbe0d3c7baaea39986796c605346392d201306000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e616161616161616161616160605b5456544e4640382e251b0d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090b0b0a0707040100000000000000000000000000000000000000030606090b0b0a0706040100000000000000000000000000000000000000030606090b0b0a070604010000000000000000000000000000000000000000000000000000000000000000000000060b0f1213171b1f20212324252525242422201f1c181413110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000915222f3c4855626f7b8895a2aebbd0dce7e2d8cfc6bfbab9b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b6afa99e918478675d5145392c2013060000000000000815222f3b4855626e7b88959fabbdc7d2d0c3b6aa9d9083777985929eabb8c5d0c6b9ada197919297a2adbac6cabfb4aa9b8e81757b8795a0abb8c4d1cfc4b8ab9e9285796d6053463a2f24180d010000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d9cdc0b3a69a8d807c7c7c7c7c7c7c7c7c7c7c7c7c7c7b7a76706c605b53493f33271c1106000000000713202d3a4653606d798693a0acb9c6d3d3c6b9aca09386796d6053463a2d201307000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3ced4c8bbafa49a8c7f7784919dacb6c0ccd6cabfb4aa9d9083776a5f5347392f24180d01000000000000000000000000070c171c202324292b2c2b272c3036393b4246484d5254575e61656b70767e869299a3aebbc7d3e2e5d9ccbfb2a6998c7f7366594c403326190d00121f2c3945525f6c7885929fabb8c5d2ded4c8bcb1a7a09da0a7aeb5bbc0c7c9cfcbcbcbcfc9c5c4bdb9b2aba49f938f82796d665c50443e32281e13080000000000000007121c27303c454d575f666d71767878756f6b605c554b43404446494b4c4d4c52565e68727f8b98a9b3becad6dccfc2b6a99c8f827669564d42362a1e1105000000000000080f171f252a2d2e343830363a3b3d3d3b3a36312d29241e191b2835424e5b6875818e9ba8b4c1cedbdfd2c5b9ac9f928679655b5044372b1f1205000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6d6d6d6d6d6d6d6d6d6d6d6d6c6668626058524a40372d1f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d11171b1f2022272b2d2e303132323231312f2d2c292320201d18130f0a03000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000916222f3c4955626f7c8895a2afbbd1dce8eae1d8d1cbc7c5bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbfbfbfbfbfbfbfbfc0b9aca196867a6d6053473a2d201407000000000006131f2b37434e586673808c99a7b1bcd0d5c9beb3a9998c807374818e9aa9b3becac9beb3a9a19e9fa2a9b3becac7baaea2988a7d717783909daab6c3cfd2c6b9ada2978a7d7064554b4035291d11040000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5dacec1b5a89d928d89898989898989898989898989898886837d746c655b5044382e23170b000000000713202d3a4653606d798693a0acb9c6d3d3c6baada093877a6d6054473a2d21140904010000000000000000000000000000000000000006131f2b37434e5865727e8b98a2aebac6d5d2c6b9ac9f93877b737f8c9aa4afbbc8d4d0c5b8ab9f95887c6f62554b4035291d100400000000000000000000000000050b101416171b22282d33383a4146474d5254575e6165696e72777d838b9298a3abb5bfcbd7e3e1d4c8bdb2a8978a7d7164574a3e3124170b00121f2c3945525f6c7885929fabb8c5d2ded9cec3b9b1acaaacb1bbbfc6ccd2d5dad5d6d8dad5d2cec9c3bdb5afa69e948f82786d605a50443a3025190d04000000000000000b151e2a333c454d545c6065696b6b68636059514b43424a51535658595a565e61686e7a85929eabb8c5d0dbd4c8bcb1a7998c7f7366594c403025190e0200000000000000050d141a1e232c33383b424648494a4846423b3935302924202935414c566975828f9ca8b5c2cfdbdfd2c5b8ac9f9285796c5f493f33271b0f03000d192633404c5966737f8c99a6b2bfccd9d5c8bbaea295887c7a7a7a7a7a7a7a7a7a7a7a7a7a7977746f6a635c52493f31271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0c0a07060401000000000000000000000000000000000000000000000000000000000000030606090c0d0c0a0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c13191b22272b2d2d3337393b3d3e3e3f3f3e3d3c3a38342f2d2c29241d1b150e090300000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000815222f3b4855626e7b8895abb5c0cbd7e3e2d8cfc6bfbab9b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b8babfc5ceccccd2c9bdb2a894877a6e6154473b2e21140800000000000815222e3b4754606a7784919eaab7c3cdd2c6b9ada197897c6f707d8a97a2adbac6cfc4bbb3adababadb3bbc5d0c5b8ac9f92867a6d73808c99a8b2bdc9d5cabeb3a99b8e8175675d5145392c2013080000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd1c5b9aea49d9a96969696969696969696969696969992908a81776c60544a3f34281c10030000000713202d3a4653606d798693a0acb9c6d3d4c7baaea194877b6e6154483b2e211a14110d080501000000000000000000000000000000000815222e3b4754606a7783909daab4bfcad6cbc0b5ab9c8f83766e7b87939facb9c6d1d4c8bcb1a79a8d8174675d5145392c20150a0000000000000000000000000000020a111720262b33393d44484c5254575e6165696e72767b7f848990949fa3aab4bdc6d1dce7ded1c5b8aca096877b6e6154483b2e21150800121f2c3945525f6c7885929fabb8c5d2dedfd5cbc3bcb8b7b8bcc3cbd1cfcbc9c8c8c9cdd1d2d5dad5d0c7c0bbb0a69e948d80746c61564c41362a20150a00000000000000030c18212a333b424a5053585c5e5e5b56544f45404850545c606365666668686d727a839097a1adb9c6d2d8cfc6b8ab9f95887b6e6255483b2f221509000000000000000000050f1b252d353e44484d5254565655534d4746413a352f2d2e3945525d687784919daab7c4d0ddddd1c4b7aa9e9184776b5e51442d22170b00000d192633404c5966737f8c99a6b2bfccd9d6c9bcb0a4988e88878787878787878787878787878684817c736e635b5143392f24180c0000000000000000000000000000000000000000000000000000000000000000000000000001070c10131417191a19171413110d08010000000000000000000000000000000000000000000000000000060b0f121316191a19161313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e24292d3337393c3f4446484a4a4b4c4b4b4a494745403d3a39352f2b26201a140b06000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000815212e3b4854616e7b8799a3afbbc7d4e0dcd1c6bdb4aeaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3acaeb4bcc5d0dbd7cbbfb4aa94877a6e6154473b2e2114080000000003101c28343f4a54626f7c8996a0acb9c5d4d1c4b8ab9e9185786c6d7985929fabb8c5d0cdc4beb9b8b8babec5cdcbc0b5ab9b8f8275676f7c8896a1adb9c5d2cfc5b8ac9f92867a6d6053473a3025190d0100000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e1d6cac0b6aea8a6a3a3a3a3a3a3a3a3a3a3a3a3a3aba39f9c938b7f72665c5044382b1f12060000000713202d3a4653606d798693a0acb9c6d3d6c9bcafa396897d706356493d322a25201d1913110d08020000000000000000000000000004111d2935414b55626f7c8995a0acbcc6d0d3c7bbafa3998b7e72697683909cabb5bfcbd7cdc3b8ab9f9285796d6053473c32261b0f01000000000000000000000000030b141c222832373e44494f54565e6165696e72767b7f83878c91959c9fa6aeb4bcc6cfd8e3e3d7ccc0b5ab9d918477695e53463a2d21140700121f2c3945525f6c7885929fabb8c5d2dee7ddd5cec8c5c3c5c8cbc7c5c2bebcbbbbbdc0c4c5c9cfd7d9d2ccc1b8b0a69d928a7e71685e52463c32261b0f0300000000000000060f18212930383f44464b5052514e4948433f48505a61666d7072727374767a7f8590959fa9b3bec9d5d1c6bcb1a79d908376695f53473a2e2114080000000000000000030d17212d373f474f55575e616363615f5754524c45413b3a3a404b55606d7a86939facb9c6d2dfdccfc3b6a99c908376695d5043362a1d0600000d192633404c5966737f8c99a6b2bfccd9d8ccc0b5aaa098959494949494949494949494949a93918e8780736d62554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000060b12181c1f20232626262421201d19130c070100000000000000000000000000000000000000000000020a11171c1f202325262623201f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151c23282f35383f44464949505354565758585857575553514b4a4745403a37312a261f17110a0200000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000713202d3a4653606d7986929facb9c5d2dfd7cbbfb4aba39f9696969696969696969696969696969696969fa2aab4bfcad6d3c7baaea398877a6d6054473a2d2114070000000006121f2b3844505c6674808d9aa8b2bdc8d4cbbfb4ab9b8e8174656675818e9baab4bfcad6cfc9c6c4c5c6cad0d3c7bbafa3998b7e71646a7884919eabb7c4d0d3c7baaea2988b7e7164564c41362a1e110500000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2dcd2c8c0b9b5b3afafafafafafafafafafafafafb5afaca59e9185796d6053463a2d2013070000000713202d3a4653606d798693a0acb9c6d3d8cbbfb2a5988c7f7265584e443c36312c2924201d19130f0a0400000000000000000000000613202c3945515d6774818e9aa7b1bcced8d2c5b9ac9f92867a6d65727e8b99a3aebbc7d3d3c6baaea2988b7e7165584e43372b1d12070000000000000000000000030d151d262d333c43475055596063686d72767b7f83878b90939a9da0a7abb0babfc6ced8e1e8dad4c7bbafa4998d807366574d42362a1e120500121f2c3945525f6c7885929fabb8c5d2deebe7dfd9d4d1d0cfc6bfbbb9b5b1afaeafb0b3b8b9bdc4cbd1d8d7cac1b8aea49e92857a6d61584e43372b1f15090000000000000000060f171e262e34383a3e434545423c3b3c46505a626c70797c7e7f808183868b91979fa7b1bbc5cfd2cbbfb4aa9f958a7d7064574d42372b1e1206000000000000000009141f29333f4951596163696e70706e6966615d56524c4846464a515d67727f8b99a4afbbc7d4e0dacdc1b4a79a8e8174675b4e4134281b0e01000d192633404c5966737f8c99a6b2bfccd9ddd1c6bcb2aaa4a2a0a0a0a0a0a0a0a0a0a0a0a0a49f9e9a938b7f72675d5145392c1f1306000000000000000000000000000000000000000000000000000000000000000000020a11171d23292c2d30323333312d2c29241e18120b030000000000000000000000000000000000000000060b141c22282b2d30323332302d2c28231d150c0900000000000000000000000000000000000000000000000000000000000000000000000000000000000611191e272e343a414549505355535b60616364656565646462605c555753514b47433c363128231c140c04000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0006121f2c3844515c667884919eabb7c4d1ded3c7baaea399928989898989898989898989898989898989899298a2aebac6d3d2c5b9ac9f9286796c605346392d201306000000000713202d3a4653606d7985919eabb8c3ced3c7baaea3998a7d706464707d8a98a2aebac6d3dad5d2d1d2d3d6dbd2c5b9ac9f92867a6d616774818d9aaab4bfcad6cabfb4aa9c8f8276685e5246392d20140900000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2e4dad2cac5c1c0bcbcbcbcbcbcbcbcbcbcbcbcbcc0bbb9ada197897c6f6256493c2f2316090000000713202d3a4653606d798693a0acb9c6d3dccfc3b6a99c9083766a60564e46423b3935302d2a251e1b160c07000000000000000000000714212d3a4754606d7a86929facb8c3cdd6cabfb4aa9c8f827568616d7a86929facb9c5d0d6cabeb3aa9d9083766a5f5347392f24180c00000000000000000000020b151f272f383f444e535a61646b70757a7f83878b90939a9c9fa4acacb1b7bbc2cbd0d8e0e3ddd6cabfb4aa9f93877b6e6155483b31251a0e0200121f2c3945525f6c7885929fabb8c5d2deebf1eae4dbd3cac2bdb5aeaca8a4a3a1a2a3a6abadb2babfc6cfd8d3cac0b9ada1978e81746a5f53473c31261a0e000000000000000000060c141c23282b2d32363838353037434e58626d717e84898b8c8d8e9092999ea1a9b1b9c2cdd0c7c0baaea3989083766c6155453c31261a0e0200000000000000020e1a25313b45515b626b70777b7c7d7b78736d68605d56545353545c606d7984919eabb5c0ccd7e2d6cabeb3a9988b7f7265584c3f3225190c00000d192633404c5966737f8c99a6b2bfccd9e5d8cdc4bcb5b0aeadadadadadadadadadadadb6afacaca49e9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000020b141c22282f34383a3d3f403f3d3a39352f29231d150d040000000000000000000000000000000000030a11171d262d3338393c3f403f3d3a38342e271e1b120b0200000000000000000000000000000000000000000000000000000000000000000000000000020a1117232b303940444c51535b606266656c6e707171727271706f6d676764605d55534e46423b342e261e160e060000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0004101c2834404a546976828f9ca9b5c2d0dbd2c5b9ac9f92867d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d86929facb8c5d2d0c4b7aa9d918477655b5044372b1f120500000004101d2935404b5563707d8997a1adb9c6d5d2c5b9ac9f92867a6d60606d7985929facb8c5d0dce1dfdededfe2d8ccc0b6ac9c8f8276685d63707d8a98a2aebac6d3d0c5b9ac9f92867a6d6154473b31261a0e00000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2ece4dcd6d1cecdc9c9c9c9c9c9c9c9c9c9c9c9d1cbc7beb3a9978a7e7164574b3e3124180b0000000713202d3a4653606d798693a0acb9c6d3dfd2c6b9ac9f93877c6f685f58534d4745413a3936302b272018120b030000000000000006131f2b37434e5865727e8b98a2aebac6d5d3c7baaea2988a7e71645e6875828f9caab4becad6d0c5b8ab9f95887c6f62554b4035291d10040000000000000000000a141d273139424a50585f626c70777d82868b90939a9c9fa4acacafb6b8bcc3c7cdd6dce2e2d9d2ccc0baaea2988e8175695f53463a291f14090000121f2c3945525f6c7885929fabb8c5d2deebf2e5dcd3c9c1b8b0aba39f9c98969595969a9ea1a9aeb4bdc6ced8d6cabeb3a99f93877c6f62574d42372b1b1106000000000000000000020a11171c1f2025292b2b282e3a47535f6a717f8a91969899999b9d9fa3abadb3bbc2cbcac4beb6afa49f92867c6f625a5044332a1f1509000000000000000005121e2a36424d57626d727d8387898988847f7a736d686461606061666d74808d96a0acbdc7d2dddfd3c6baada297897c6f6256493c2f23160900000d192633404c5966737f8c99a6b2bfccd9e5dfd6cdc6c0bcbbbababababababababababac0bbb9b6ada197897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000020b141d262d33394045474a4c4d4c4a4745413a342f271f160d04000000000000000000000000000000030c151c23282f383f4446494c4d4c4946454039302d241d140b010000000000000000000000000000000000000000000000000000000000000000000000020c141c2328353d424a51555d60656c6f7376797b7d7d7e7f7e7e7d7c7a7774706d67625f58534d443f38302820180f0600000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000c18232e404d596673808c99aab3becad6d3c7baaea399877a707070707070707070707070707070707a8698a2aebac6d3cfc2b5a89c8f82756953493f33271b0f0300000006131f2c3845515d6774818e9ba9b3bec9d5cfc2b5a99c8f8276675d5d6775828e9baab4bfcbd6e3ebebebece0d4c8bbafa49a8b7f726556606d7985929facb8c5d2d4c7bbafa3998b7f7265574d42362a1b1106000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2eeeee7e1dddad9d6d6d6d6d6d6d6d6d6d6d6d6dcd7cfbeb1a5988b7e7265584b3f3225180c0000000713202d3a4653606d798693a0acb9c6d3e0d4c7bbafa49990837a6f6a615e5754524c4746413a383228231c150c030000000000000815222e3b4754606a7783909daab4bfcad6d2c5b8ac9f92867a6d605664717e8a98a2aebac6d3d4c8bcb1a79a8d8174675d5145392c1f1409000000000000000006111c262f39434b545b606a6f767d83898f92999c9fa4acacafb6b9bbc0c7c8ced3d8dee1dbd6d0c7c0bbaea49f92867b6e61574d42362a170d030000121f2c3945525f6c7885929fabb8c5d2deebeae0d4cac1b7afa69f99928f8b8988888a8d91969fa3abb4bcc6d0dacfc5bbafa49a8f8275695f5347382d22170b0000000000000000000000060b101213181d1f1e222f3b4855626e7c87929ea1a8a5a6a7a9acafb5b9bec4cdc5beb9b2aca49f928b7f726a5f53473e3321180e0300000000000000000714212d3a46535e69727f8a9095969696918c85807a74706e6d6d6e7178808d929da8b2bdd0d9e3ded2c5b8ab9f9285796c605346392d20130600000d192633404c5966737f8c99a6b2bfccd9e5e8dfd8d1ccc9c8c7c7c7c7c7c7c7c7c7c7d2ccc8c6beb3a9988c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000a141d262f383f444b5153565959595754514c45403931281f160c0100000000000000000000000000020b151e262e343e424a5053565859595653514b423f372f261d130900000000000000000000000000000000000000000000000000000000000000000000020b141e262e343f474f545c60676d72787c7f838587898a8b8b8b8a8a888684817d7a746f6a615f57504a423a322a21180f06000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000071723303d4a5663707d8998a2aebac6d3d7cbbfb4ab988b7e716663636363636363636363636364707d8a97aab4bfcad6cabeb3aa998c7f7366594c402d22170b000000000714202d3a4753606d7985929fabb8c4cfd4c8bcb1a7988b7f7265555564717e8a98a3aebac7d3e0ecf8f8ecdfd2c6b9ac9f93877b6e61545c6775828f9babb5c0ccd7cbc0b5ab9d908376695f5346382d22170b000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2ede4dcd6d1cecdcacacacacacacacacacacacad1cbc7bdb2a8978a7e7164574b3e3124180b0000000713202d3a4653606d798693a0acb9c6d3e3d7ccc0b5aba09590837c746e6964605d5654524c47433d342e271e150b000000000004101d2935404b55626f7c8895a0abbcc6d0d6cabeb3a99b8e8275675d53606d7985929fabb8c4cfd8cdc2b8ab9f9285796d6053473b31261a0e02000000000000000b17222d38424b555c666c737c838a90959b9fa3abacafb6b9bbc0c6c8ccd2d4d9dfe0dad5cfcac3bdb5afa59d928b7e71695e53453b31261a05000000121f2c3945525f6c7885929fabb8c5d2deebe2d8cec2b8afa59e949086827e7c7b7c7d80848c9299a3aab4bfcbd6d8ccc0b6ac9e93887b6e6153493f33271b0f030000000000000000000000000306070b10111d2935414c556874818e99a3adb2b2b3b4b6b9bbc0c7c9d0c5bbb3ada9a19a938c80736d62584e43352c220f060000000000000000000815212e3b4854616e7b86929da0a7a8a19e98928c85817d7b79797b7e838d929da4aebac4cee2e0d4c8bcb1a79b8e8174665b5044382b1f120600000d192633404c5966737f8c99a6b2bfccd9e5f2e9e3ddd8d6d5d3d3d3d3d3d3d3d3d3d3ddd8d4cfc0b3a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000006111c262f38424a50555c606365666664605d55514b433a31281e1308000000000000000000000000000a141d2630383f4450545b606365666563605c54514941382f251b0d030000000000000000000000000000000000000000000000000000000000000000000a141d2630383f44515960666d727a7f84888c909298969798989897979993918e8a86817c756e69605c544c443c332a21180f050000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000713202d3a4653606d7985929fabb8c3ced9d1c3b7aa9d9083786d6059565656565656565658616c76828f9ca9b6c2d0d3c6baaea298897d7063564a3d3023170600000004111d2935414b5564717e8a98a2aebac6d6d1c5b8aca095887b6e615553606d7a86929facb8c5d1dce7f3f6e9dcd0c3b6a99d908376695e525564717e8b99a4afbbc7d4d1c7b8ab9f95887b6e6153493f33271b0f030000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2e4dbd2cbc5c2c0bdbdbdbdbdbdbdbdbdbdbdbdbdc0bbb6aca096887c6f6255493c2f2216090000000713202d3a4653606d798693a0acb9c6d3e8ddd2c7bdb1a7a0959086807b75716d6865615e56544e44403930271c12070000000006131f2c3845515d6774818e9aa7b1bcced7d3c6baada2978a7d706455515d6774818e9ba9b3bec9d5d3c6baada2978b7e7164574d42362a1e1205000000000000030f1c28333f4a545c676d787f8790959da0a7acaeb5b9bbc0c6c8ccd2d4d8dde0dcd6d3cfc9c5beb9b1aba49f928d80746c62574d4233291f1409000000121f2c3945525f6c7885929fabb8c5d2dee7dbd0c6bcb0a69e938e827b7571706e6f7073797f879298a3aebac1cfd8d2c7beafa5998d8073655b5044372b1f1205000000000000000000000000000000000613202c3945515d677885919eabb5bdbfc0c1c3c5c7cbd1d2c7bdb3a9a29e96918880736e635b51463c31231a10000000000000000000000c1926323f4c5965727f8c99a3acb1b2acaaa29f98928e8a878686878b90959da4aeb6c0ccd6e0d7cec5b8aca095897c7063544a3f33281c0f0300000d192633404c5966737f8c99a6b2bfccd9e5ece4dcd6d1cecdcccccccccccccccccccccccccfc9bfb4ab998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000b17222d38424a545b60676d70727372706d67605c554c433a2f24190d04000000000000000000000006111c262f38424a505a61666c6f727372706d66625b534b41372d1f150b010000000000000000000000000000000000000000000000000000000000000006111c262f38424a505b626b6f787f858c9196999d9fa2aaa4a4a5a5a4aba49f9e9a98928e88827b736d665e564d453c332a21170c0300000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000006131f2c3845515c6775818e9ba7b1bcc8d4d1c5b8aca0958c7f726b6159514b4a4a4b5158606a717e8a949fabb7c3d0d2c5b8ab9f9285796d6053463a2d2013070000000613202c3945515d6775828f9baab4becad6d0c4b7aa9d918477695f53515d6775828f9babb5bfcbd7e3efede0d4c8bcb1a7998c7f7266564d54616d7a86939facb9c6d2d4c7bcb1a7998c7f73655b5044372b1f12060000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2dcd2c8c0bab5b4b0b0b0b0b0b0b0b0b0b0b0b0b0b5afaca49e9184786c605346392d2013060000000713202d3a4653606d798693a0acb9c6d3dfe3d9d0c3b9b1a7a099928d86827e7a76726d68626058514a42392e23180c050000000714202d3a4753606d7985929fabb8c3cdded2c5b8ab9f9285796d60534b5563707d8997a1adb9c6d2d6cabeb3a99c908376695f53463a2d2114090000000000010c161f2b3844505b666d79828c92999fa7acb1b9bbbfc6c8ccd2d4d8dde0dcd7d3d0cbc7c4bdb9b3ada7a099938c80786c605a50453b3121170d03000000121f2c3945525f6c7885929fabb8c5d2dee2d6cabfb4aa9f948e81776e696563626263666d737d86929fa5afbdc6d1d9d0c1b8ab9e9184786c605346392d201306000000000000000000000000000000000714212d3a4754606d7a8797a1adbdc7cfccced0d2d4d7d7ccc0b5aba297928c847d736e635c52493f342a201108000000000000000000010e1b2834414e5b6774818e9aabb4bcbdb9b3aeaaa29f9b9794999399989da0a7aeb6c0c8d2dedbd0c5bcb0a69d9083776b605442382d22170b0000000d192633404c5966737f8c99a6b2bfccd9e5e4dad2cac5c1c0bfbfbfbfbfbfbfbfbfbfbfbfbfbeb9aea3998a7e7164574b3e3124180b0000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b666c72797d7f807f7d7a736d675d554c41352920150a00000000000000000000071017222d38424a545c606c71787c7f807f7c79726d645d53493f31271d1207000000000000000000000000000000000000000000000000000000000000071017222d38424a545c606d727d848c92989ea0a8a9acaeb4b0b1b2b1b1b5afacaaaaa39f9a948f867f786d685f574d453c33291e150b00000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000004101c2834404b5563707d8995a0acb8c2cfd4c8bcb1a79f92877d706b605d555656545c606a6f7c86929fa6b0bbc7d3c8bcb1a79b8e8175665c5145382c1f13060000000714212d3a4754606d7a86929facb8c5d0d6cabeb3a9998d807366574d4b5564717e8b99a3aebbc7d3e0edeaded1c5b8aca095887b6e615548525e687683909ca9b6c3ced8cdc2b7aa9e9184786c605346392e23170c0000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5e2d6cbc0b6aea9a7a4a4a4a4a4a4a4a4a4a4a4a4a4aba39f9a938a7e71655b5044372b1f12050000000713202d3a4653606d798693a0acb9c6d3dfebe2d5cbc3b9b1aba39f99928f8b86827f7a756f6a605c544a40342821160b000005111d2935414c5664717e8a98a2aebac6d5d5c9beb3a99b8e8174675c514653606d7985919eabb8c3ced9d0c5b7ab9f94887b6e6155483b31261a0e020000000007121d2a36424d57606c78828f949fa3abb1b8bcc3c7cbd1d4d8dde0ddd8d4d1cbc7c5bfbab8b2ada9a29e9590877f746c665b50483f33291f0f0600000000121f2c3945525f6c7885929fabb8c5d2dee0d3c7baaea2988f82786d655f57565555545c606b707e8a939eabb4bfcbd7d2c5b9ada196887c6f6255493c2f221607000000000000000000000000000000000814212e3b4754616e7a8794a8b2bdc8cfd3d6dbdfe0e0d4c7bbafa49992857f7a706b635c524a40372d22180e00000000000000000000020f1b2835424e5b6875818e9ba8b4c1c9c5bebab3aeaba7a3a1a49fa4abaaacb1b9c0c8d2dadbd6cabfb4aa9f948a7d7064594f442f261c11060000000d192633404c5966737f8c99a6b2bfccd9e5dcd2c8c0b9b5b3b3b3b3b3b3b3b3b3b3b3b3b3b2b3ada69f92867a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c787f85898c8c8c8a8680796d675d51453d32271b0f030000000000000000050e192228333f4a545c666d747e84898b8c8c89857e746f645b5143392f24180c0000000000000000000000000000000000000000000000000000000000030d192228333f4a545c666d747f8791959fa2aaacb2b6b8babfbdbebebebdc0bbb9b7b4aeaca69e98928c827a6e695f574d453b30271d1207000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000c18232e394854606b7783909da7b1bdc7d1cec3bbafa39992867d736d6764636364666d727c859298a2aeb8c2cccec6b8aca095897c7063544b4034281c1004000004101d2935404b5564717e8a98a3aebac7d3d2c6b9ada197897c6f6356494754606d7a86929facb9c5d1dce8eaddd0c3b7aa9d908477695f53474c5666727f8c99a8b2bdc8d4d2c5b9aca096897d7063544a3f34281c100300000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5ddd1c5baaea49d9a979797979797979797979797979699928f887f726c6153493f33271b0f030000000713202d3a4653606d798693a0acb9c6d3dff4e7ddd5cbc3bdb4aeaba39f9c99928f8b86827c746d665c51443d33271c1004000713202d3946525e6875828f9caab3becad6d2c6b9ada197897d7063554b44505c6674808d9aa8b2bdc8d4d3c7bbb0a6998c807366574d42362a1e1205000000010d18242f3a46525e69727f8c949ea6afb5bdc2c8cdd3d7dce0dfd9d4d2ccc8c6c0bbb9b4aeaca9a19e97928c837d726d605b544a3f362d21170d0000000000121f2c3945525f6c7885929fabb8c5d2ded8ccc0b6ac9f92867b6e665c534d4948494a5059616c75818e99a3aebac7d3d5c9bdb2a9998c7f7266594c3f2f24180d010000000000000000000000000105070714202d3a4753606d7a8696a0acb9bec5c6cad0d2d5d9d2c6b9ac9f93867d736d686059524a40382e251b100600000000000000000000020f1c2835424f5b6875828e9ba8b5c1ced0cac5bebab8b4b0b5afacafb5b7b8bcc3cbd2dad7d0cabfbaaea2988f82766c6155473d321d140a000000000d192633404c5966737f8c99a6b2bfccd9e1d6cac0b6aea9a6a6a6a6a6a6a6a6a6a6a6a6a6a5a9a19e948d8073685e5246392d2013070000000000000000000000000000000000000000000000000000000004111d2935404b55606c78818c929798999998928d83796d60584e43372b1f130600000000000000030c17202b343d44505b666d78818a919698999897918b81746d62554b4035291d1004000000000000000000000000000000000000000000000000000000010b151f2b343d44505b666d78818c9299a0a8aeb3b9bdc3c5c6cad0cbcbcbd2ccc7c6c4bfbab8b0aaa39f948f847b6e695f574d42392e23180d040000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000007121d2c38444f5964717e8a959fabb5c0cbd7cbc0b5aba298928780797471706f7174797f869297a2aab4bfcad0c6bcb0a69d9083776b605442392e23180c0000000613202c3945515d6775828f9baab4bfcbd6d1c5b8ab9e9285796d60534645525d6876828f9cabb5c0cbd7e3e1d5c9bdb2a8998c807366574d424855626e7b8896a0acb9c5d2d5c9bdb2a89b8e8175665c5044382c1f120600000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5dbcec2b5a99d928d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8986827d726d635a5041382d22170b000000000713202d3a4653606d798693a0acb9c6d3dff2ebe5ddd5cfc6bfbab5afacaba39f9c99928e8981786d60594f44382c201407000714212e3a4754616d7a86929facb9c5d0dbd1c5b8ab9e9285796d6053463f4a54626f7c8896a0acb8c5d1d8cdc2b7aa9e918477695f53463a2d21140700000004101d2935404b55616e7b86929fa6b0bbc0c7cfd4d9e0e1dbd6d3cdc8c7c0bbb9b5afacaaa39f9b96918c857f786f6b625b504a42382d241b0f050000000000121f2c3945525f6c7885929fabb8c5d2ded4c8bbafa49a8d8073695e544a413d3b3c3f44505a616e7b86929facb9c5d2dacfc2b5a89b8f827568554b4135291d11040000000000000000000002080d11131419202c3945515d677784919ea6adb3b8babec4c5c9ced4c7bbafa49992877e716c62594f453b31251a13090000000000000000000000020f1b2835424e5b6875818e9ba8b4c1cedbd6d0cac6c5c1bdc0bbb9bbc0c3c5c8ced5d6d3cec5bebaada39f92867b6e615a5044352b210b02000000000d192633404c5966737f8c99a6b2bfccd9ddd1c5b9aea49d9a999999999999999999999999999897928c82786d60564c41362a1d1105000000000000000000000000000000000000000000000000000000000613202c3945515d67737f8c939ea1a9a6aaa29f958e81756a6054473b2e221508000000000000000a151e29323d46505a606c78818e939ea1a8a6a9a19e938b7f72675d5145382c1f130600000000000000000000000000000000000000000000000000000007121d27313d46515b606c78818e939fa3abb1babec5c9ced2d3d6dbd7d8d8ddd7d4d2d0cbc7c1bcb4aea69f9691847b6e695e544b4034281f160c0100000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000101c27323d4955616c76839099a3afbbc2ccd1c7bdb4aaa299928d85817e7c7c7e80858c9298a2a9b3bcc5d0cbbfb4aa9f948a7d7064594f4430271d12070000000714202d3a4753606d7986929facb9c5d0d7cbc0b5ab9b8e8175665c5044414c5665717e8b99a3afbbc7d4e0ded2c5b9aca196887c6f6255493c47535f6a7784919eaab7c4cfd9cec4b8ab9f9285796d6053463a2d20130700000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5dacdc0b4a79a8d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7a76706b635b51483e2f261b1106000000000713202d3a4653606d798693a0acb9c6d3dfe8e0dad5d2d1d1cbc7c0bbb9b5afacaba39f9b938e81756b6055483c2f231609000b1825313e4b5864717e8b99a3afbbc7d7d5c9bdb2a89a8d8074665c5044384754606a7784919daab7c2cdd8d2c5b9aca096887b6e6155483b2e2215080000000613202c3945515d6774818e98a2aeb8c1cbd1d9e1e4e0d7d0cac6c3bcb8b6afacaba39f9c98928e8a847f79726d66605951443f382f261c1209000000000000121f2c3945525f6c7885929fabb8c5d2ded2c6b9ac9f93877b6e61574d42382f2f2e343e46525e6875818e9bacb6c0ccd8d1c4b8ab9e918478675d5145392c201306000000000000000000040c13191d202125282935404b5566737f8c949ea1a9abadb3b7b9bdc4caccc0b5aba39992887e716b61574d42362a21160b0000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedae1dbd6d3d2ced2ccc7c6c7ccd2d2d1d0d0cac7c1bcb4aea49c918a7e71695f53483e3323190f00000000000d192633404c5966737f8c99a6b2bfccd9dacec1b5a99d928d8c8c8c8c8c8c8c8c8c8c8c8c8c8b89857f786d665c51443a3025190d01000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929fa5adb3b3b4aea79e93897c6f6256493c2f23160900000000000006111c26303a444e58616c73808d939da5acb2b3b3ada59e9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000c18242f39434e58626d74818e939da5afb5bdc3cad0d5d9dbd6d3d2d0cfcfd1d2d5dadcd6d3cec6bfbab0a8a19691847b6e665c51453e31281d130700000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000b16212d3945505a626f7c87929fa6b0bac4cdcfc6bcb4aba39f97928e8a89898a8d91979fa2aab3bbc5cecbc2baaea3989082766c6155473d321e150b000000000a1724303d4a5763707d8a98a3aebac7d3d3c7bbafa3998a7e7164544a3f3a4754616d7a86929facb9c5d1dcded1c4b7ab9e9184786a5f53473b434e586773808d9aa9b3becad6d3c6baada297897c6f6356493c3023160900000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71717171717171717171717171706f6d67636059514940362c1d140a00000000000713202d3a4653606d798693a0acb9d0dbe6ded6cfc9c5c4c3c5c8cbc7c5c0bbb9b5aeaca59d93897d7063564a3d3023170a000e1b2835414e5b6874818e9babb5c0cbd7d2c5b9aca196897c6f63544a3f37434e5866737f8c99a7b1bcc7d4d4c8bdb2a8988b7e7165584b3e3225180b0000000714202d3a4753606d7a85929faab4bfcad7dce3e2dbd2cec5bebab8b1abaca49f9c99928f8b86817d79726d67605c544f473f332d261d140a00000000000000121f2c3945525f6c7885929fabb8c5d2dccfc3b6a99c908376695e53453b302622232a36414d5663707d8a9aa4afbbc8d4d2c5b9ada196877a6d6054473a2d2114070000000000000000080e161e25292d2e3235352f3a4653606d79828c92979b9fa2a9aaacb2babec5c7bdb4aba39a93877d70695e53463d33271c100300000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9e4dad2cac5c1c0bdc0c2c3c4c5c5c5c4c2bfbab8b0aaa29f918c7f736c61574d42362c22110700000000000d192633404c5966737f8c99a6b2bfccd9d9cdc0b3a69a8d808080808080808080808080807f7e7c79726d665c544b4032281e130800000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a2adb9bebfbfbaafa59a8d8073675a4d4034271a0d0100000000061017232e38424c56606a717e8a929ca5afb9bdbfbeb9ada1978a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000004101d2935404b55606a727f8b939da5afbbc0c7cfd6dbd7d3d0cac6c5c3c2c3c4c5c9ced2d6dbd8d0cbc2bab2a9a1969083786d60594f433a2f24180d03000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000005111d28333e4754606a73808c949fa8b2bbc4cccec6bdb5aea9a19e9a979696979a9ea1a9aeb4bcc5cdcbc2b9afa59f92867b6e62594f44352b210c03000000000d1a2733404d5a6673808d99aab4bfcbd7d2c5b9ac9f92867a6d6054473a3946525e6876838f9cabb5bfcbd7d5c9bdb2a89a8d807367584e43373d495663707c8997a2adbac6d3d6cabeb3a9988b7e7265584b3f3225180c00000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407000000000000000000000000000000000713202d3a4653606d798693a0acb9d0dbd3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716564646464646464646464646363605d55544f4740372e241a0b0200000000000713202d3a4653606d798693aab3becad6e0d6ccc4bdb9b7b7b8bcc3cbd1cbc7c5bfbbb9afa59b8e8175685b4e4235281b0f00111e2a3744515d6a7783909daab7c3d1dcd1c4b7ab9e9184786c60534639323c4855616e7b88959fabb8c6d1d9cec0b3a69a8d8073675a4d4034271a0d0000000b1825313e4b5864717e8b98a2aebcc5d0dce8e2d9d0c8c0bcb3adaba7a09d9a938f8b86827e7a75706d66605d55514a423d3428221c140b0200000000000000121f2c3945525f6c7885929fabb8c5d2d9ccc0b3a6998d807366574d4233291e151925303b4754606d7a86939facb9c6d2d5c9bdb2a895887c6f6255483c2f2215090000000000000008111a20283035393a3f4242403d45515c676d787f858a8f9297999ea0a8aeb4bcc5c6bdb4aca49992857b6e61594f44382c20150900000000000000000000000c1825323f4b5865727e8b98a5b1bed2dddcd2c8c0b9b5b3b0b3b5b7b7b8b8b8b7b5b4aeaca69e98928a7f736d635a50453c31241a100000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b73737373737373737373737372726f6d67605c544b42392e20160c0200000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a9b3becacfcac1b6a99d9083766a5d5043372a1d1004000000040e182228343f4a545e686f7c86929fa4aeb7c0c9cec9beb3a9998c807366594d4033261a0d00000000000000000000000000000000000000000000000000040e19222c3945515d676f7c87929fa5afb7c1cbd1d9dbd6ccc7c6bfbab8b6b5b6b7b9bdc4c6cacfd7dcd6ccc4bbb2a89f958d80746b61554b4035291f1409000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000c17222b37434e58606d78829096a0a9b2bac3cbcfc6bfbbb3adaba7a4a3a2a4a7abadb3babfc6ceccc2b9b1a79e938c7f726a5f53473e3323190f00000000000f1c2835424f5b6875828e9ba8b5c1d1dccfc2b6a99c8f8376685d52453936414c5665727e8b99a3aebbc7d3d2c5b9aca196897c6f6356493c323a4653606d7985929fabb8c5d0dbd0bfb3a6998c807366594d4033261a0d00000000000000000000000000000000030c1926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211407020000000000000000000000000000000713202d3a4653606d798693a9b3becad6d6cabfb4aa93867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655857575757575757575757575654514b48443d352e251c12080000000000000613202d394653606c798698a2aebac6d3dacfc4bab2adabaaacb1b9c3ccd7d3d1cbc7c0b7aa9d9084776a5d5144372a1e1100121f2b3845525e6b7885919eabb8c4d1d4c8bcb1a7998d8073655b5044372d3a46535f697683909dabb5bfcbd7cec1b5a89b8e8175685b4f4235281c0f000004101c2834404a546774818e9aaab4beced7e2e6dcd0c7beb6aea9a29f9a95908c87837e7a76716d6863605c54514b444039302b2217110a020000000000000000121f2c3945525f6c7885929fabb8c5d2d7cabdb0a4978a7d7164574a3e3124170c14202c3945525d687784919daab7c4d0dacfbcb0a396897d7063564a3d3023170a00000000000007111a232c323a4146474c4e4f4d49464b555c666d72797e8285898c91969fa2aab4bcc6c6beb5aba2978f82756b6055483c31261a0f02000000000000000000000a1723303d4a5663707d8996acb6c0ccd8d6cac0b6aea8a6a3a6a8aaababacabaaa8aaa29f9b938f867e736d635b51483e332a1f12080000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6666666666666666666666666563605c55504a423930271d0e050000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1d0dad1c4b7ab9e9184786b5e5145382b1e12050000020b16202a343c44505c666d7a849198a3aeb6c0c9d5dacfc1b4a79a8e8174675b4e4134281b0e000000000000000000000000000000000000000000000000000a15202b37434e58606d79849199a3aeb7c0c9d7dcd7d0cac1bbb7b4aeaca9a9a9abacb2b8b9bec5cdd3dcd6cdc4bab1a79d928a7d70675d51453b30251a0e020000000000000000000000000000000000000000000407121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000050f1b27323c44505c666d7a849197a1a8b1b9c0c8cecbc5beb9b8b4b1afafb1b4b8b9bec4cad0c7c0bbb0a79f958e81756d62574e42352c21110700000000000f1c2935424f5c6875828f9ba8b5c2cfd1c8bcb1a7988c7f7265564c4135303a4754616d7a86929facb9c2cecbbfb4ab9e9184786c605346392d3844505c6675818e9baab4bfcad1cdc0b3a69a8d8073675a4d4034271a0d0000000000000000000000030608090d10111926333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2114110f0b07060401000000000000000000000613202d394653606c798697a2adbac6d3d3c7baaea298867a6d6053473a2d2026333f4c5966727f8c99a5b2bfcfdaccc0b3a6998d8073665a4d4033271a0d000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b4a4a4a4a4a4a4a4a4a4a494745413a38322b231c130a0000000000000006121f2b3844505b667885929fabb8c5cfd0c9bdb2a8a19e9da0a7b1bac3cbd4d9d7d1c4b8ab9e9185786b5e5245382b1f1200111e2b3844515e6b7784919eaab7c3cdd1c5b8aca095887c6f6253493f332a36424d5765727f8b99a3aebbc7d2ccc0b6ac9b8e8175685b4e4235281b0f000006121f2c3844515c667784909daab7c3d0dde9ded4cabeb5ada49d97928d88837f7b76726d6864605d5653504a45403a342e271e19100600000000000000000000121f2c3945525f6c7885929fabb8c5d2d5c9bcafa296897c6f6356493c30231609111d2935414c566976838f9ca9b6c2cfd7cabdb0a4978a7e7164574a3e3124170b0000000000030c19232c353e444c5254585b5b5a5653504b545c60676d7175797c7f848b9298a2aab4bfcac7bdb3a99e94897d7063584e43372b1f1206000000000000000000000815222f3b4855626e7b889aa4afbbc8d4d1c5b9aea49d9a97999c9d9e9f9f9e9d9c9a98928e89827b716c635b514940362c21180e000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615959595959595959595959585653514b443f3830271e150b000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbd2c5b8ab9f9285786c5f5245392c1f120600000a141d28323c46505a606d78829096a1aab4bfc8d2dbdbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000030f1b27323a47535f6a73808d96a1abb5bfc9d2dbd7cec5bebab0aaaaa29f9d9c9c9ea1a8abadb3bbc1cad2dbd6ccc2b9aea49e9184796d60574d42362a1e140800000000000000000000000000000000000000050b1014161f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000a152028343f4a545e686e7b8591969fa7afb8bdc3c8cecac6c5c1bdbcbcbdc0c4c6c9cfc9c4beb6afa69f959083796d605b51453c31231a100000000000000e1b2734414e5a6774808d9aa8b2bdc3c4c1b8aca095887b6e6255483b2f2d3946525e6875828f9ba7b1bcc3c2baaea3998c8073655b5044372b343f4a5464717e8a98a2aebac2c4c3bbb0a6988b7f7265584c3f3225190c000000000000000000040a0f1215151a1d1e1e26333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e211e1d1c181413100d0701000000000000000006121f2b3844505b667885929fabb8c5cfcfc5b8ac9f928579675d5145382c1f25323f4b5865727e8b98a9b3bec9d0cabeb3aa988c7f7265594c3f3226190c000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e3e3e3e3e3e3e3e3e3d3c3a39352f2c272119110a0100000000000000030f1c28333f4a546a7683909da9b3bdc3c4bfb9ada196919095a0a8b1b9c1c8ced0ccc3b7aa9d9084776a5d5144372a1e11000f1c2935424f5c6875828f9ba7b1bbc3c4beb3a99d9184776a5f5341382d26313b4754616d7a86929fabb5c0c4c2bbafa49a8c7f7366594c403326190d00000713202d3a4653606d7986929facb9c5d2dfe3d8cdc2b8ada39b928d85807b77726e6965615e5654524c46443f38352f28231c150c070000000000000000000000121f2c3945525f6c7885929fabb8c5d2d5c8bbaea295887b6f6255483c2f2215090d19242f424f5b6875828e9ba8b5c1ced7cabdb1a4978a7e7164574b3e3124180b00000000000b151e2b353e474f565e616568686763605b544e50555d6064666d6f73787e869298a2aebac6d0c5bbb0a69c8f82766a5f53473a2e211408000000000000000000000713202d3a4653606d7986939facb9c6d2cec1b5a89d928d8a8d8f9091929292918f8d8a86817c756e69615a514940372e241b0f06000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544d4d4d4d4d4d4d4d4d4c4b4946454039342e261e150c03000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060006111c262f3a444e58616c74808d949fa8b2bcc6d0dae3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000006131f2b37434e58626f7c87929fa8b2bdc6d1dbd7cdc5bcb3aea69e9c9892908f909196999ea2a9b0b8c1c9d2dcd4cbc0b9ada1968d8073695e52463b3025190e000000000000000000000000000000000001080d171c2023242c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000040c17232e38424c565f696e7b8490959da5acb2b8bdc3c5c9cfcdcac9c9cacdd0cac6c4beb9b2aca49f948f837a6d675d51493f332a2011080000000000000a1724313d4a5764707d8a96a0abb3b6b7b6afa69d908377695f53473a2e2a36414c5663707d89959faab2b7b6b0a79f92867b6e6153493f33272e3a4753606d7985929fa8b1b6b7b6b2a99f94887c6f6255483c2f2215090000000000000001080d151b1f212227292b2b2b333f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a2e2b2b2a282520201d18120c0400000000000000030f1c28333f4a54697683909ca9b3bdc3c3bdb3a99d9083776a554b4035291d23303c4956636f7c8997a1adb9c1c4c1baaea298897d7063564a3d3023170a000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b3e383838383838383838383735322d2c29241e160d0800000000000000000b17222d3f4c5966727f8c97a1abb3b7b7b4aea49e9184849096a0a7afb8bdc2c3c1bab0a69b8e8174685b4e4135281b0e000b1825313e4b5864717e8b95a0a9b1b7b7b4ada1978c7f7265584e432f26202d3946525e6875818e99a4afb6b7b6b0a79f93877c6f6255483c2f22150900000714212e3a4754616d7a8799a3afbbc7d4e0dfd3c7bbb0a69b918b817a736e6a65615e5754524c4745413a38342e2f2d2b27221b140b0700000000000000000000121f2c3945525f6c7885929fabb8c5d2d4c7bbaea194887b6e6155483b2e221508081b2835424e5b6875818e9ba8b4c1ced7cabeb1a4978b7e7164584b3e3125180b0000000007121d27303d474f5961686d72757573706c666058504b5153545c6062666c717c86929facb8c5d2cdc1b7ab9f94887b6e6255483b2f2215070000000000000000000006131f2c3845515c677885919eabb8c4d1cdc0b3a69a8d807d808284848585858482807d7a756f6a615e57504840372e251c120900000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544840404040404040403f3f3c3a38342e28231c150c0300000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200060f17222d38424c565f6a717e8a929da6b0bac4ced8e2e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000815222e3b4754606a75828f99a3afbac4cfd8d9d0c5bbb3aaa29f948f898583828384878c92979ea6afb7c1cad4ddd5c9bdb2a89f92867b6e61564c41362a1c1106000000000000000000000000000000040c131921282c2f30353845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000006111c26303a444d575f696e7b838e939da0a8acb2b8b9bdbfc1c2c3c3c2c2c0bfbab8b3ada8a09a938d827a6d685d554b40372d21180e000000000000000713202d3a4653606d78849199a1a9aaaaa9a59e948b7e7164574d42372b25303a4854606b76839098a1a9aaaaa69f958c8073695e5241382d222c3945515d6773808d969fa7aaaaaaa8a0978f82766a5f53473a2e211508000000000000040c131920262b2e2f3336373838383f4c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154473a3838383735322d2c29241d160d08000000000000000b17222d3f4c5966727f8c97a2abb3b7b7b3aba2978c7f7366594c402f2418202d3a4653606d7985929ea6afb6b7b6afa69f92857a6d6053473a2d201407000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7165584b454545454545454545454544423f3a39352f281f1a1208000000000000000614212d3a4754606d7a859299a1a9aaaaaaa29f928a7e7b8490959ea5acb1b5b6b6b0a89f948a7d7063574a3d3024170a000713202d3a4653606d78839197a0a7aaaaaaa39e92857a6d6054473c32211d2a36414c56626f7c87939fa5a9aaaaa69f958e81756a5f53473a2e21150800000815222f3b4855626e7b8895abb5c0cbd7e3ddd0c4b7ab9f948b7f746d68625f5754524d4746413a393a3c3f403f3c3937332d261d191007000000000000000000121f2c3945525f6c7885929fabb8c5d2d5c8bcafa295897c6f6256493c2f2316070f1b27333f49536975828f9ca8b5c2cfd7cabdb0a4978a7e7164574a3e3124170b000000000c18232e39424f59616b707a7f8182807d786f6a625a5245474a5053545b606a73808c99a6b3bfccd3c7bbb0a6998c7f7366594c402e23180c0000000000000000000004101c2834404b55697683909ca9b6c3cfcdc0b3a79a8d807473757778787978777573706d67626058534d453e362e2518120b0300000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b383838383838383838383735312d2b28231c140c06000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ac9f9285796c5f5246392c1f13040d182128333f4a545d686f7c86929fa4aeb8c2ccd6e0eae8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000005111e2a36414c56626f7c88939eabb5c0ccd6ddd2c7bdb3a9a298928a827d79767676787b7f858f949ea5afb8c2ced7dacfc4baaea3988e8174685e5246382d22170b0000000000000000000000000000040d161e242933383c3d414445525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000a151e28323c454d575f696e79818991969ea0a8abadb2b3b4b5b6b6b6b5b3b4aeaca9a19e96918880786d685d564c43392f251b0f060000000000000006121f2c3844505c666f7d8792979b9d9e9d9a938f82786c6053463c31261e2c38444f59626f7c8691979c9d9d9b948f83786d60564d422f261b2935404b55606d798490959b9d9e9d9b9691857b6e61584e43372b1f12060000000000040d161e242931373a3c404344454545454c5966727f8c99a5b2bfccd8d3c7baada094877a6d6154474545454544423e3a39352f281f1a11080000000000000614212d3a4754606d7a859299a2a9aaaaa9a19992857a6d6154473a2e21141f2c3844515c66727f8c949ea5a9aaa9a59e948c8073675d5145392c201306000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716558525252525252525252525251514f4c4745413a312c241a12080000000000000613202c3945525d68707d8792979c9d9d9c98928c80736e7b838e939da0a8a9aaa9a69e968f82766b6155483c2f2316090006121f2c3844505c666e7c8591959b9d9d9c98928a7e71675d5145392c201925303a47535f6a73808d929a9d9e9d9b948f837a6d60584e43372b1f120600000916222f3c4955626f7c8895a2afbbd1dce8dccfc2b6a99c8f82766d605d56534e4746423b3a3c404547494b4c4c4946443f382f2b221911070000000000000000121f2c3945525f6c7885929fabb8c5d2d6c9bcb0a396897d7063564a3d2f24180d121f2b3744505b657683909da9b6c3d0d6c9bdb0a3968a7d7063574a3d3024170a00000004101c2834404b54606b707d858b8e8e8d89837c716c635b514a4244464a5058626f7c8895a2aebbc8d8cdc2b6a99c8f827669544a4034281c1004000000000000000000000c18232e424e5b6875818e9ba8b4c1cecec2b5a89b8f827568696a6b6c6c6b6a696763605d55544e46423b332d2c28231c150c06000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615448454545454545454545454444413e3a38342e261e1810060000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ac9f9285796c5f5246392c1f130b161f2a333c44505b666d7a849198a2aeb6c0cad4dee8f2e8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000714202d3946525e6875818e9ba5afbdc7d1ded7ccc0b5aba29792867d75706d666969696e737a828e939ea6b0bcc6d0dbd7cbbfb4aa9f92867a6e61544a3f33281c0f03000000000000000000000000030c1620282f353e44484a4e5051525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000030c16202a333c454d575e676d747d848b91969a9ea1a8a6a8a8a9a9a9a8a7aaa29f9c97918b847d746d665d564c433a31271d1309000000000000000003101c28343f4a54606b707d858b8f9091908e8982796d665b5044382a1f1c27333d47535f6a707d848b8f90908e8a827a6d665c51443b301d18242f3945515d676e7b838a8e9091908e8a847c6f695f53463c31261b0f0300000000030c161f282f353c4347484d505151525252525966727f8c99a5b2bfccd8d3c7baada094877a6d61545252525251504f4b47454039312c241a120800000000000713202c3945525d68707d8792979c9d9d9c9792877d70685d5246392d20131c2834404a54606d78828e939a9d9d9d9a938e82786d60554b4035291d1004000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e71655e5e5e5e5e5e5e5e5e5e5e5e5e5d5c5854524c433e362c241a0d04000000000004111d2935414c56616b707d858c8f90918f8c867f736e696e79818a9195999c9d9c9a948f847a6d61594f44382c2014070003101c28343f4a545f6a6e7c838b8f90918f8c867f726c61554b4135291d131e2b37434e58606d7881898d9091908e89827a6d685d52463c31261b0f0300000815222f3b4855626e7b8895abb5c0cbd7e3d9ccbfb2a6998c7f73665b524c47423c3c3f4347484b51535658595856535049413d342b23190d0400000000000000121f2c3945525f6c7885929fabb8c5d2d8cbbfb2a5988c7f7265554b4035291d1216202d394653606c7985929fabb8c5d2d6cabfb4aa95897c6f6256493c2f23160900000006131f2c3845515c666f7d8792979b9b9a9590877e736d605c544d443f3f4753606d7a8693a0adb9c6d3d1c5b8ab9e928578665c5144382c1f120600000000000000000000071a2633404d596673808c99a6b3bfccd0c3b7aa9d9084776a555d5e5f5f5f5e5c5a5754514b47434544423e3a38342e271e180f060000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154525252525252525252525251504e4a46443f38302a22180f0500000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ac9f9285796c5f5246392c1f0a141d28313c46505a606c78828f96a0aab4bfc8d2dce6f0f4e8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000814212e3b4754616e7a86929facb9c1cfd9e0d4c7bbafa49992857c706c63605c54575e61686d78818e949faab4bfcad6dcd1c6bbaea3998c7f73665b5044382b1f12060000000000000000000000000a151e28323a41454f55575b5d5e5e5f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000040e18212a333c454d555c606b70787e84898e919697999b9c9c9d9c9b9a9898928f8a857f79706b605c544c443a31281f150b010000000000000000000c17232e38424f59606b70797e82838483817d756d675d544a3f33281816212b37434e58606b707a7f828483817d776d685d544b4032291f121d2935414b555e696e787d81838483817e786f6a5f574d42342a20150a00000000000b151e28313a41454e53555a5c5e5e5e5e5e5e5e66727f8c99a5b2bfccd8d3c7baada094877a6d615e5e5e5e5e5e5d5b5853514b433e362c241a0e050000000004111d2935414c56616b707d858c8f90908f8b857d706b61564c4135291d1118232e3944505c666d7981898d9091908d8981796d665c5143392f24180d01000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e716b6b6b6b6b6b6b6b6b6b6b6b6b6b6a6865605d5650483e362c1f160c0100000000010d19242f3a434f59616b707a7f828484827f7a726d645e676d757d84898d8f908f8d89827a6d685e52473e33281c100400000c17232e38424e585f6a6e787e82848483807b726d625a50433a2f24180f1b26323c44505c666d747c80838483817d766d685d564c41342a20150a0000000815212e3b4854616e7b8799a3afbbc7d4e0d9ccc0b3a6998d8073665a5048464647494b4e5355555c606365666562605b534e463d352b1f160c01000000000000121f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275675d5145392f241c2027333f4953626e7b8898a2aebac6d3d3c6baaea298877b6e6154473b2e2114080000000713202d3a4653606d79849199a1a9a8a7a099928b80746d665e57504a464753606d798693a0acb9c6d3d2c6b9ada19786796d6053463a2d201307000000000000000000000b1825323e4b5865717e8b98a4b1bed1d2c5b8ab9f928578675d515252525252525252525252525251514f4b46444039302a21180f0500000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615e5e5e5e5e5e5e5e5e5e5e5e5e5d5b5753504a423c342a21170d03000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c20111b262f3a434e58616c73808d949fa8b2bcc6d0dae4eef8f4e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000006121e2b37424d5766737f8c99a3aebbc7d3e1d5c9beb3a99f93877d706a615a53504a4d52565e666d78829098a2aebac6d0dbd7cbbfb5ab9e9184786c605346392d201309000000000000000000000006111c26303a444c52596163686a6b6b6b6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000060f18212a333b434b515960666d71787c8184888a8c8e8f90908f8f8d8b8985827d79726d676059504a423a32281f160d030000000000000000000006111c26303d474f5960676d727577777674706b605d554b42382d22170f1b26313c464f5960686d7276777775706c655d564c42392e20170d18242f3a434d575e666c717577777775716d665f584e453b3122180e040000000007121d27303a434c52585f6266696a6b6b6b6b6b6b6b727f8c99a5b2bfccd8d3c7baada094877a6d6b6b6b6b6b6b6b6a6865605d5550483e362c20160c02000000010d19242f3a444f59616b707a7f828484827f7a706b61594f443a3024190d121c28343f4a545d676d757c81838483817c756d675d544a4031281d120700000916222f3c4955626f7c8895a2afbbc8d5d7cbbeb1a4988b7e7878787878787878787878787878787775726d68615a50483e31281d1207000000000008131e28313e474f5961686d7276777776726e68625b555d606c70787c80828383817c756d685e564c41352c21160b00000006111c26303c464e575f666d7175777776736e69625b51483e31281d130a152028343f4a545c606a6f7476777774706b615d564c433a2f22180e030000000713202d3a4653606d7986929facb9c5d2dfddd0c3b6aa9d9083776c615a545353545658585f6266676d6f7273726f6c6560584f473d31281e1308000000000000121f2c3945525f6c7885929fabb8c5d2ded2c5b8ab9f92857a6d60554b40352e2a2c323a44505b65727f8c99aab3becad6d2c5b8ac9f9285796c605346392d2013060000000b1824313e4b5764717e8a96a1abb3b5b1aba39f928c81786e69605b54525359626e7b8895a1aebbc8d4d6cabeb3a993877a6d6054473a2d211407000000000000000000000a1623303d495663707c8996abb5c0cbd3c6baada297877a6d605e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5d5c5853514a423c332a21170d03000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a6864605c544e463c33291f1409000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c2017222d38414c555f6a707e88939fa6b0bac4ced8e2ecf6fff4e8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000814212d3a47535f697784909dabb5bfcbd7dfd2c6b9ada1978d80736b60585046443f42464c545c666e7b86929faab4bfcad6dcd1c6b9ada196897c706356493d31261a0e02000000000000000000000c17232e38424c565d606b707477787878787885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000060f182129313940454f545c60656c6f74787b7e80818283838382807f7c7975716d66605c554f443f38302820160d040000000000000000000000000a151e2b353d474f555d6065686a6b6a67636059514b433a2f261c110a15202a343d474f565d6065696a6a6863605b534c443a30271d0e07131d28313b454d545b6064686a6b6a6864605c544e463c332a1f100600000000000c18232e39434c565d606a6f73767778787878787878787f8c99a5b2bfccd8d3c7baada094877a78787878787878787775716d67615a50483e32281e13080000000008131e28323e474f5961686d7276777775726d6761594f473e32281e13080b17232e38424b555d606b6f7476777674706b605d554b42392e1f160c0100000916222f3c4955626f7c8895a2afbbc8d5ded2c5b8ab9f928584858585858585858585858585858484827f7a716c615a5043392f24180d0100000000010c161f2c353e474f565d6065696a6a6966615e56514b515a61656c7073767776746f6b615d564c443a30231a1005000000000a151e2a333c454e545c6064686a6a6966615e5751493f362c1f160c040c17232e38424a50586062676a6b6a68636059524c443a31281e10060000000006121f2c3844515c667784919eaab7c4d1ddddd1c4b8aba0958a7e716c64616060616265686a6f7276797c7e7f7f7c786f6a60594f433a2f24190d010000000000121f2c3945525f6c7885929fabb8c5d2ded3c6baaea2988b7e71675d5145403936383c444d57606c7884919eaab7c4d0dbcfc3b6a99c908376665b5044382b1f12060000020f1b2835424e5b6875818e9ba8b2bdc1bdb5aea49c938e827b716c66615e60636b73808c99a6b3bfccd9d3c7baaea29886796d6053463a2d201307000000000000000000000815222e3b4855616e7b8899a3afbbc7d4cabeb3a995887b6f6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6a6864605c544e453c33291f1409000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b7878787878787878787878787878777774716d665f584e453b31251a0e020000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c182127333f49535d676e7c86929aa4afb8c2ccd6e0eaf4fefff4e8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000815222e3b4855616e7b8895a0acbdc6d1dcd7cbbfb4ab9e9185796d60594f463e3834363a424a545f6973808c98a2aebac6d3dfd5c9bdb2a89a8d807467574d42362a1e120500000000000000000003101c28343f4a545d686d767d8183848585858487939facb9c6d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000060f171f272f343d424a50535b606367696e717375757676767574726f6d6664605c54514b433d342e261e160d0400000000000000000000000000030c19232b353d434b5153585c5d5e5d5b56544f45403a31281d140a040e18222b353d444c5254585c5d5d5b57535049413a32281e150b010c161f29333b424a5053575b5d5e5d5b5753504a423c342a21180e000000000004101c2834404b555d686d757c808384848585858585858485929fabb8c5d2deded1c4b8ab9e9184858585858585858483817e79706c615a50443a3025190d01000000010c16202c353e474f565d6065696a6a6965605d554f473e352c20160c0206111c263039434b51596063676a6a6a67636059514b433930271c0d040000000916222f3c4955626f7c8895a2afbbc8d5dfd3c6baada29792919191919191919191919191919191908f8b857e716c61554b4035291d10040000000000040d1a232c353e434c5254595c5d5e5c5954524c44414550535b606366696a6967636059524c443a32281e11080000000000030c18212a333c424a5053585c5d5e5c5954534d453f372d241a0d040006111c2630383f444e54565a5d5e5d5b56554f46413a32281f160c000000000004101c2834404a546875828f9ba8b5c2cdd9e0d4c8bcb1a79f92867e76716e6d6d6e6f7275787b7f8386898b8c8b89837c706b60564c4135291d11040000000000121f2c3945525f6c7885929fabb8c5d2ded6cabeb4aa9e9184796d605a514a464244464e565e69717e8b96a0acb9c5d2d6cbbfb4aa9a8d807467544a3f33281c0f03000004101d2a3743505d6a7683909da9b6c3cfc6bfbbada59d9490857e78716e686d6f747d86929facb8c5d2dfd2c5b8ac9f928579675c5145382c1f1306000000000000000000000713202d3a4653606d7986929facb9c5d2d0bdb0a3968a7d78787878787878787878787878787878787775716d665f574e453b30251a0e030000000d192633404c5966737f8c99a6b2bfccd9ded1c4b8ab9e918585858585858585858585858585858483817d786f6a5f574d42362a1e13080000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f53462d221f29333b44505b656d79849198a2acb6c0cad4dee8f2fcfffff4e8dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000030f1c28333f4a5465727f8c98a7b1bccfd8e0d3c7baaea3998c7f72675d51473d342c282a2f39424d57606d7a86929facb8c4cfdadacfc4b7ab9e918478695f53463a2d21140700000000000000000006121f2c3844505c666d7a828a8e9091919191919399a4afbbc7d4dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000050d151d232930383f4449505356575f6164666869696a6968676563605c5453514b4540393028231c150c04000000000000000000000000000000071119232b31394045474b4f5051504e4948443d352f281f160b0200061019232b323a4145474c4f51504f4a46443f382f2820160c0300040d1720292f383f44464a4e5051504e4b46443f38302a22180f06000000000006131f2c3845515c676d7a81888d8f9191919191919191919298a2aebac6d3dfdfd2c6b9ada197919191919191919191908e8b857e716c61564c41362a1d110500000000040d1a232c353e444c5254595c5d5d5c5854514c433e352c231a0e0400000a141e27313940454f54565a5d5e5d5a56544f45403931281e150b000000000916222f3c4955626f7c8895a2afbbc8d5e2d6cabeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d9b9792887e71675d5145392c20130600000000000008111a232c313a4145474c4f51514f4c4746413b353e41495053565a5c5d5c5a56544f46413a322820160c00000000000000060f18212a30383f44464b4f5151504d4846423b332d251b12080000000a151e262e343d4347494e5051504e4a48443d35302820160d040000000000000c18232e3f4c5965727f8c98a7b1bcc8d4e0d9cdc3baaea398928a827e7b79797a7c7e8184888c8f92989899989590867d70685d5245392c2013060000000000121f2c3945525f6c7885929fabb8c5d2dedbd0c5b9aca0968d80736c605c54524d51535860686e7b85929ea8b2bdc8d4d3c7baaea3988a7d7063574a3d2d22170b00000004111d2a3744505d6a7783909daab6c3d0d1cbbfb7afa69f97928b837e7a797a7c81879298a3aebac7d3ddd0c3b7aa9d9084776a554b4034281c10040000000000000000000006121f2c3844515c667884919eabb7c4d1d2c5b8ab9f9285848585858585858585858585858585858484827e786e6a5f574d42362a1f14090000000d192633404c5966737f8c99a6b2bfccd9dfd2c6b9ada19791919191919191919191919191919191908e8a837c6f695e53463a3025190d0100000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c6b9ac9f9386796c60493f332727313b454f59606c77818f96a0aab4bec7d2dce5f0f9fffffff4e8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000006121f2b3844505b6675828f9ca8b5c2cedbdfd2c5b9ac9f92867a6d61554b40352b221c1d27303b45525d6874818e9ba9b2bec9d5ded2c5b9aca196887b6e6155483b2e2215080000000000000000000713202d3a4653606d78828f949b9d9e9e9e9e9e9fa4abb5c0ccd7dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000030b12181e262e34383f4446494d535557595b5c5d5d5c5c5a585653514a46454039342e271e17110a0300000000000000000000000000000000000811191f282f35393a3f42444443413d3b383229241d160d0400000007111920283035393a3f434444423d3937332d261d160d04000000050e171d262d3338393e42444444423e3a38342e261e1810060000000000000713202d3a4653606d79828e93999c9d9e9e9e9e9e9e9e9e9fa2aab3becad6e2e1d5c9beb2a9a19e9e9e9e9e9e9e9e9e9d9b9792887e71685e5246392d201307000000000008111a232c323a4145474c4f51514f4c4745413a312c231a1108000000020c151f272f353d4348494e5051504e4948443d352f281f160c03000000000916222f3c4955626f7c8895a2afbbc8d5e6dbcfc5bbb3adababababababababababababababababaaa9a29a9285796d6053473a2d2014070000000000000008111a1f282f35393a3f434444433f3b393630292f383f4446494d4f50504e4948443d35302820160e050000000000000000060f181e262e34383a3e42444443403b3a363129211b130900000000030c151c232832373b3c41434444413d3c383329241e160e04000000000000000715222f3c4855626f7b8895a0abb8c4ced9dfd7cbbfb4aaa39f948f8a87868687898b8e9196999c9fa3aaa6a7a09891857a6d6054473a2d2114070000000000121f2c3945525f6c7885929fabb8c5d2dee2d5c9bdb2a89f93887e736d66615e565c60636a6f7a839197a2adbac3ced9d2c5b8ac9f92867a6d6053473a2d20140600000003101c2936434f5c6976828f9ca9b5c2cedad7c9c0b8b0a9a29f95908b878686898e9399a3aab4bfcbd6d7ccc0b5ab9b8e8175685b4f422e23180c000000000000000000000004101c2834404a54697683909ca9b6c3cfd3c6baada297929191919191919191919191919191919191908f8b847c6e695e52463b31251a0e0200000d192633404c5966737f8c99a6b2bfccd9e1d5c9beb3a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d9b9591857b6e61564c41362a1e110500000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd4c8bbafa49a8679655b5044372b2f39434d57616b737f8c939ea8b2bcc5d0d9e4ebeceff3f8fef4e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000613202d394653606c7985929fabb8c5d2ded8ccc0b6ac9b8e8275685d5243392f231910151e2935414c56636f7c8997a1adb9c6d2dfd5c9bdb2a8978b7e7164584b3e31251809000000000000000005121e2a36424d5765727f8b949fa6aaabababababacafb5bdc7d2dddbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000001070c151c23282d3337393c4246484b4d4e4f5050504f4d4c494644403a38342e28231d150c060000000000000000000000000000000000000000080d161d24292c2d323537383734302f2c272118130c040000000000070e161e24292c2d3236373735302d2b27221b140b040000000000050b141c22282b2d313537383735312d2c28231c150c0600000000000005121e2a36424d5766727f8c949ea5a9aaabababababababababaeb3bcc5d0dbe6e6dacfc4bbb2adabababababababababaaa9a19a92857a6d6154473a2e21140700000000000008111a20282f35393a3f434444423f3a39352f281f1a11080000000000030d151d242932383b3c41434443413d3b383229241d160d0400000000000916222f3c4955626f7c8895a2afbbc8d5e2e1d7cdc5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7b7b3aca1978b7e7164584b3e3125180b0000000000000000080d161e24292c2d3236373736332e2d2a251d262d3337393d40434443413c3b383229241e160e0500000000000000000000060c151c23282c2d3135373736332e2d2a251f170f09010000000000030a111720272b2e2f3437383735302f2c272119130c0400000000000000000815212e3a47535f6a7783909da8b2bdc9d5dddcd1c6bcb4aea69f9c979499939995989b9ea1a8a9acaeb4b2b1aaa1978c7f7266594c3f3326190c0000000000121f2c3945525f6c7885929fabb8c5d2dee5d9cec4bbafa49a93877f79726e696b666d70747c839195a0a9b3beccd5d4c8bdb2a89b8f8275675d5145392c1f1306000000000d1a2733404d5a6673808d99a8b2bdc9d5dbd2cbc2bbb3ada7a09d98999299969a9fa4abb4bcc6d0dcd4c7bbafa4998b7e7265584b3f322518070000000000000000000000000c18232e414e5b6874818e9ba7b4c1ced6cabeb3a9a29f9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9d9b9691857b6e61574d42362a1e120500000d192633404c5966737f8c99a6b2bfccd9e6dacfc4bbb3adabababababababababababababababaaaaa7a0978f8275685e5246392d20130700000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd8ccc0b69f9386796c605346392d35404b555f69707d87939fa5afbac3ced7e2e0dfe0e3e7edf4f4e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000915222f3c4855626f7b8897a2adbac6d3dfd4c8bbafa49a8a7d7064564c4131281d11070c19242f3a4854606b7885919eabb8c4d1dedacec1b4a79a8e8174675b4e413025190e02000000000000000714212d3a46535e697784919ea6b0b6b7b8b8b8b8b9bbc0c7d0d9e3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000030a11171b22272b2d31363a3b3e40424243434342413f3c3a38342e2c28231d18120b0300000000000000000000000000000000000000000000040c12181d202025292a2b2a282322201b160d070100000000000000040c13191d202125292a2a2824201f1b17110a0200000000000000020a11171c1f2024282a2b2a2824201f1c17110a03000000000000000714212d3a46535e697884919ea6afb6b7b7b8b8b8b8b8b8b8b8babec5ced7e1ecebe0d6cdc4beb9b8b8b8b8b8b8b8b8b7b6b3aca2988c7f7265594c3f3226190c00000000000000080d161e24292c2d3236373736322d2c29241e160d0800000000000000030b121821272c2f303437373734302f2c272118120c040000000000000916222f3c4955626f7c8895a2afbbcfdbe6e9dfd7cfcac6c5c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c3beb3a99a8d8174675a4e4134271b0e010000000000000000040c13191d202126292a2b292621201e19141b22272b2d303336373634302f2c272119130c04000000000000000000000000030a11171c1f2025292a2b292621211e1a140d05000000000000000000060c161b1f2223272a2b2a282323201c160d080200000000000000000006121f2b37434e5865717e8b96a0acb9c1cbd5ded8cfc6bfbab0aba9a4a1a49fa4aba5a8abadb2b6b9babfbfbcb3a99d9083766a5d5043372a1d100400000000121f2c3945525f6c7885929fabb8c5d2deebe0d8ccc0b6aca499938c837f7b797778797d81879195a0a7b1bbc5cfd9d0c7b8aca096897d7063554b4035291d1004000000000a1723303d4a5663707d8996a1acb9c2ccd6ddd4cdc5bebab1acaaaba39fa3aba7acafb5bdc6ced8d7cdc5b9ac9f93877b6e6154483b2e211508000000000000000000000000071a2633404d596673808c99a6b3bfccdbcfc5bbb3adababababababababababababababababababaaa8a0978f8275695e53463a2d21140700000d192633404c5966737f8c99a6b2bfccd9e5e1d6cdc4beb9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7b6b1a99f93877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbddd2b9ac9f9386796c60534639353d45515d676e7b859299a4afb7c1ccd5dcd6d3d2d3d6dce2eaf2e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000b1824313e4b5764717e8a97a9b3becad6dfd2c6b9ac9f93867a6d6154473a3021160c0008131e2c38444f596875818e9ba8b4c1cedbdcd0c3b6a99d9083766a564d42362a1e1105000000000000000815212e3b4854616e7b8796a0acb8c2c4c4c4c4c4c6c7ccd2d9e2ebdbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000060c11171b1f20262a2d2e31333536363736353432302d2c28231f1c18120c070000000000000000000000000000000000000000000000000001070d101314181c1d1e1d1b161613100b040000000000000000000002080d111314191c1e1d1c1713120f0b060000000000000000000000060b0f1213171b1d1e1d1b181312100c060000000000000000000815212e3b4854616e7b8796a1acb8c1c4c4c4c4c4c4c4c4c4c5c6cad0d7e0e9e9e9e8dfd6cfc9c6c4c4c4c4c4c4c4c4c4c3beb3aa9c8f8275695c4f4236291c0f0000000000000000040c13191d202126292a2a292521201d19130c0400000000000000000001070c161b1f2223272a2b2a272322201b160d0701000000000000000915222f3c4855626f7b8895a9b3becad6dcdcdcdcdbd6d3d2d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d0c2b5a89b8f8275685c4f4235291c0f0200000000000000000001080d111314191c1e1e1c191414110d0a11171b1f202327292a292723221f1b160d0802000000000000000000000000000000060c101213181c1e1e1d1a1514120e09030000000000000000000000040a0f1315161b1d1e1d1b171614100b050000000000000000000000030f1a26313c4653606d7984919ea5afb9c3ccd5ddd8d1cbc2bbb7b6b1b5afacafb5b1b4b7b9bdc2c5c7cbcec4b8ab9f9285786c5f5245392c1f120600000000121f2c3945525f6c7885929fabb8c5d2deebe8ddd2c7beb5aba49f95908b8785848586898e9299a0a7b1b9c3cdd7d2c7bdb1a79d9184786c605346392f24180c00000000000613202d394653606c7884919ea6b0bac4cdd5ddd7d0cac3bcb8b7b5afacafb5b4b9bbc0c7d0d8d9cfc5bbb0a69c8f8276695e52463a2d2014070000000000000000000000000b1825313e4b5864717e8b97a4b1bed1dcd7cdc5bebab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b7b7b2a99f93877b6e6154483b2e21150800000d192633404c5966737f8c99a6b2bfccd9e5e8dfd6cfc9c6c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c3bbafa49a8a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9aca09386796d6053463a3d47515b606d79839097a2abb5c0c9d3d8d0cbc7c5c7cbd0d8e0eae8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfd0dbddd0c3b7aa9d908477685d5246392d20130400010f1b27323f4b5865727e8b98a5b1becfdaded2c5b8ab9f928578695e52463a2d20140700000000000000091623303c4956636f7c8996a8b2bdccd1d1d1d1d1d2d4d7dddcdcdcdbcec1b4a89b8e8175685b4e4235281b0f000000000000000000000000000000000000000000060b0f12131a1e2122242628292a2a2929272523201f1c1813100c070000000000000000000000000000000000000000000000000000000000010406070c0f1111100e0a0907040000000000000000000000000000010407070c1011110f0a0605030000000000000000000000000000000306060b0f1111110f0b07060300000000000000000000000916232f3c4956626f7c8995a8b2bdcbd0d1d1d1d1d1d1d1d1d2d3d6dbdcdcdcdcdcdcdcdcdad5d2d1d1d1d1d1d1d1d1d1d0c3b6aa9d9083776a5d5044372a1d1100000000000000000001080d111314191c1e1e1c191413110d0801000000000000000000000000040a0f1315161b1d1e1d1b161613100b040000000000000000000815212e3b4854616e7b8797a2adb9c6d0cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcec1b5a89b8e8275685b4f4235281c0f020000000000000000000000010406070c101111100c0807050100060b0f1213161a1c1d1d1b1615130f0a04000000000000000000000000000000000000000306070b0f1111100d08070502000000000000000000000000000000030608090e1011110e0a09070400000000000000000000000000000a151f2c3844515c66717e8a939ea7b1bac3cbd5dadcd7ccc7c3c2bdc0bbb9bbc0bec1c4c5c9cfd2d3d7d2c6b9ac9f9386796c605346392d20130600000000121f2c3945525f6c7885929fabb8c5d2deebe9e4d9d0c7bdb5afa7a09d9898929191939a9b9fa3abb1b9c3ccd5d7ccc0b5aba0958a7e71665b5044382b1d1207000000000006121f2b3844505b66717e8b949fa8b2bbc3cbd5dadbd6cec8c5c3c0bbb9bbc0c1c6c7ccd2d9d7cfc7bdb3a99e94897d7063574d42362a1e12050000000000000000000000000a1623303d495663707c8996abb4bfcbd7dfd7cfcac6c5c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c3bbafa49a8b7e7164584b3e3125180b00000c1926333f4c5966727f8c99a5b2bfcfdadcdcdcdcdad5d2d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1ccc0b6ac988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9aca09386796d6053463b454f59626d75818e95a0a9b3bdc7d2d8cec6bfbab8babfc6ced8e2e8dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b5c1cedbdacdc0b4a79a8d817467564c4135291d110500000b15222f3c4855626f7c8895a9b3bec9d5dfd3c6baaea298877a6e6154473b2e211408000000000000000916232f3c4956626f7c899aa4afbbc8d1cfcfcfcfcfcfcfcfcfcfcfcfcdc0b3a79a8d8074675a4d4134271a0e00000000000000000000000000000000000000000000000305090e121415181a1b1c1d1d1d1c1a19161312100c07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a8b2bdc9d1cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3b6aa9d9083776a5d5044372a1d110000000000000000000000010407070c1011110f0c0706040100000000000000000000000000000000030709090e1011100e0a09070300000000000000000000000613202d394653606c7985929eabb4bdc2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1bcb2a89a8d8073675a4d4034271a0d01000000000000000000000000000000000304040300000000000000000305060a0d1011100e090907030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54616c75818e95a0a8b1b9c1c9cfd6dbd8d3d0cfd2ccc7c6c7ccd2ced1d2d5dadfd9d4cbc3b8ab9e9285786b5f5245382c1f120500000000121f2c3945525f6c7885929fabb8c5d2dee6ded8d3d0d0c7c0bbb1acaaaaa29f9e9e9fa4acacafb5bdc3ccd5d6cdc4bbafa4999083786c60544a3f33281c0b010000000000030f1c28333f4a54606c78828f96a1a9b1b9c0c9ced5dad9d4d1d1cbc7c5c7cbd1d2d4d7dad5cec5bdb5aba2978f82756b6054453b30251a0e020000000000000000000000000815212e3b4854616e7b8799a3aebac7d3dcdcdbd6d3d2d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1ccc0b6ac998c7f7266594c3f3326190c00000b1825323e4b5865717e8b98a9b2bec9d0cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfd2cbbfb4ab988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9aca09386796d605346434d57606b727f8b939ea7b1bbc5d0d9d0c6bcb4aeacaeb4bcc6d0dce7dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3d0dcd8cbbfb2a5988c7f7265594c3f3024190d0100000714202d3a4753606d7a8697a1adb9c6d2dfd6cabeb3aa95897c6f6256493c2f231609000000000000000714212e3a4754616d7a86939facb9c0c2c2c2c2c2c2c2c2c2c2c2c2c2c1bbb0a6988b7f7265584c3f3225190c0000000000000000000000000000000000000000000000000000020507080b0d0f0f1010100f0e0c09070604000000000000000000000000000000000000000000000000000000000000000000000000030607090c0d0c09060503000000000000000000000000000000000000000000020608080c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b8796a0acb9c0c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1beb4aa9c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6674818e99a3abb2b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b1aaa0968a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3942505a606d7a839096a0a7afb9bec5cacfd4d7dddcddd7d4d2d4d7dddbdedcdbd6d3cdc8c1b9b0a69c8f8275695c4f4236291c0f0300000000121f2c3945525f6c7885929fabb8c5d2dedcd4ccc7c3c2c5c7c3bcb8b7b4aeacaaabacafb6b9bbc0c7cfd5d6cdc4bbb1a79f93877c6f665b5042382d22170b000000000000000b17222d3844505b666e7b849197a0a7afb9bdc4c9cfd4d8dddcd7d4d2d4d7dcddd8d4cfc9c3bcb4aba39992857b6e61594f4433291f1409000000000000000000000000000713202d3a4653606d7986929facb9c5d1cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcabfb4aa988c7f7265594c3f3226190c00000916232f3c4956626f7c8997a1adb9bec2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c0baaea399897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d6053474b555e69707d87929fa5afb9c3cdd7d2c7beb4aaa39fa3aab4bfcbd6e3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000004101c2834404b556b7884919eabb7c4d1ded6cabdb0a3978a7d7064574a3d3124170800000006131f2c3945515d677885919eabb8c4d1dedbd0bdb0a3978a7d7064574a3d3124170a000000000000000713202d3946525e687683909da5afb5b5b6b6b6b6b6b6b6b6b6b6b6b5b5b1a99f94887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10121316191a191613120f0b06000000000000000000000000000000000003090f121415181a19171413100c070100000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697784919ea6afb5b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b3ada2988c7f7266594c3f3326190c00000000000000000000000000010507080b0d0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54626e7b869299a0a8a8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a7a0989184786d6053463a2d201307000000000000000000000000000000000000000000000000000000040607090b0b0c0c0b090707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303e45525d686e7b8490959ea5adb3babec5c7ccd2d1d2d3d7dcdcd7d4d2d1cfcfcac6c3bcb8afa79e948a7d7064574a3d3124170a0000000000121f2c3945525f6c7885929fabb8c5d2ded4cac2bbb7b6b9bbbfc6c5c3bfbab8b7b8b9bbc0c5c7cbd1d9d8cdc4bbb2a99f958d80746a60544a3f2f261c11060000000000000006111c28333f4a545e696e7c8591959da5acb2b9bec5c8ccd2d2d3d6dbd6d3d2d0cdc8c4beb9b1aaa29992877d70695e52473d3221170d030000000000000000000000000006121f2b3844505c667783909dacb6bfc2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1baaea2988a7d7064574a3d3124170a00000713202d3a4653606d7884919ea5aeb4b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b6afa79f9286796d6053473a2d20140700000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d605347515c676e7b859299a3afb7c1cbd5d8ccc0b6aca3989298a3aebac7d3e0dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000006131f2c3845515c677985929facb8c5d2dfd5c8bbaea295887b6f6255483c2f22150900000004101d2935404b55697683909ca9b6c3cfdcd7cbbeb1a4988b7e7165584b3e3225180b0000000000000005111d2a36414c5664707d8a939fa3aba9a9a9a9a9a9a9a9a9a9a9a9a9a8a7a0978f82766a5f53473a2e211508000000000000000000000000000000000000000000020507080b0d0d0b0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f202325262523201f1b17110a020000000000000000000000000003090e151a1f212225262623201f1d18120b060000000000000000000000000000000000000000000000000000000000000005111e2a36424d5766727f8c949fa3aba8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a9a19e92867a6e6154473b2e211408000000000000000000000002080d111414181919181514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3847535f69717e8791969a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b999590867c6f665c5044382b1f120600000000000000000000000000000000000000000000000205070c101314151718191818161413110d0805020000000306070a0c0d0c0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2935414c565e696e7b838e939ea1a9adb3b9bbc0c2c4c5c7cbd1d1cbc7c5c4c2c1bebab8b1aca59e958f82766c6155493c3023160a0000000000121f2c3945525f6c7885929fabb8c5d2d6cdc2b8b0aba9acaeb5bdc6cfcac6c5c4c4c6c8ccd2d4d7d9d2ccc3bbb3a9a1969083786d60584e42382d1d140a0000000000000000000b17222d38424d565f6a6e7b838e939ea1a8adb3b9bbc0c3c5c6cad0cac6c5c3c1bcb8b3ada7a09892877e716b60574d42352b210f05000000000000000000000000000003101c28343f4a546774808d9aa4aeb4b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b0a79f92867a6d6054473a2d211407000006121f2b3844505c66727e8b939fa2aaa8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8aca49f958d8174675d5145392c20130600000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d6053505a606d79839097a1abb5c0c9d3d5ccc3bbafa49a9285929facb8c5d2dfdbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000713202d3a4653606d798698a3aebac7d3e0d4c7baaea194877b6e6154483b2e211508000000000c18242f424f5c6975828f9ca8b5c2cfdbd8cbbfb2a5988c7f7265594c3f3226190c00000000000000010d1925303a4955616c74818d92999b9c9c9c9c9c9c9c9c9c9c9c9c9c9b999590857b6e62584e43372b1f12060000000000000000000000000000000000000003090e121415181919181413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000090c151c23282c2d30323332302d2b27221b140b070000000000000000000000060e151a20262b2e2f323332302d2c29241d17110a020000000000000000000000000000000000000000000000000000000000020e1a25303b4653606d79828e92999a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9997918a7e71685e5246392d20140700000000000000000001070d14191e20212426262522211e1a140e09020000000000000000000000000000000000000000000000000000000000000000000000000006111c2b37424d57616c717d848a8d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8d89837c6f6a60544a3f34281c100300000000000000000000000000000000000000000002090e1114181c1f202224252525252321201d1914120e09060b10121317191a191615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c19242f3a434d575e696e7a818b92979fa2a9acafb5b5b7b9babfbbbac0bbb9b7b6b4b3adaba7a09d938f837a6d615a5044392d2014080000000000111e2b3844515e6b7784919eaab7c4cfcec4bbb0a69f9c9fa3abb5bdc5ced3d2d1d1d2d4d8dbd6d3d0c7c0bbb1a9a19791847b6e665c51463d2f261c0b0200000000000000000006111c262f3b444e575f696e79818a91969ea1a9acafb6b7b8babfbbbebab8b7b4b1aba9a19e9590867e716c61594f453b3023190f000000000000000000000000000000000b17232e3c4855626f7c87939fa3aaa8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a69e958d8073675d5145392c201306000003101c28343f4a54626d74818c92989a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a938f837a6d60554b4035291d110400000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6b9ada093867a6d605358626d74818e959fa9b3bdc7d1d7cec3bab0a69f93887e8b98a4b1becbd7dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212d3a4754606d7a8793aab4bfcbd6e3d3c7baada094877a6d6154473a2e21140700000000071b2835424e5b6875818e9ba8b4c1cedbd9ccbfb2a6998c7f7366594c403326190d000000000000000008131e2d3944505a606d7880878c8e8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c89837c6f695f53463c31261a0f03000000000000000000000000000000000002090e141a1e21212526262421201e19130d0701000000000000000000000000000000000000000000000000000000000000000000000000020b121a1e262e34383a3c3f403f3c3937332d261d191108000000000000000000070f181f262b31373a3b3f403f3d3a38352f28221c140b03000000000000000000000000000000000000000000000000000000000009141f2c3845515c676d7981878b8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8d8a857e716c62564c41362a1e11050000000000000000040c13181e252a2d2e313333322e2d2a261f1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c45505a616b70787d8082828383838383838383838383838383838383838383838282807d786f6a60584e42382e23170b000000000000000000000000000000000000000003090f141a1e2023292c2d2f3132323231302d2c2924201e1a1411171c1f202326262522221f1b150f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313b454d575e686d757e858c92979c9fa4aba9abacaeb4aeaeb5afacaba9a7a9a29f9b95908a817a6d685d52473e33281c100400000000000f1c2936424f5c6975828f9ca8b2bcc3c4bcb3a99f948f9299a3abb3bcc2c7cbd1cfd0cfcfcfcac6c2beb6afa7a09791857c6f695e544b40342b1d140a00000000000000000000000a141d29323c454e575e676d747d848c92979c9fa4acaaacaeb4aeb3aeabaaa7a79f9d97918b837b706c615a50473d33291f1107000000000000000000000000000000000615212e3a47535f6a73808c92989a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b99948f83796d60554c4135291d11040000000b17232e3842515b606c777f858b8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c87827a6d685d52433a2f24180d0100000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada093877a6d6056606a717e8b939da7b1bbc5cfd9d0c6bcb2a89e948c7f7a8794a0adbac7d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212e3a4754616d7a8794a0adbad0dce7d3c6b9ada093867a6d6053473a2d201407000000010e1b2834414e5b6774818e9aa7b4c1cddad9ccc0b3a6998d8073665a4d4033271a0d000000000000000002101c28333e44505c666d747b7f818283838383838383838383838282807c786f6a5f574d42342a20150a0000000000000000000000000000000000050d141a1f252a2d2e323333312e2d2a251e18130c0400000000000000000000000000000000000000000000000000000000000000000000010b141d242c30383f4446494c4d4c4946443f382f2b231a120800000000000000071019212a31373c4347484b4d4c4a47454039332d261d150c030000000000000000000000000000000000000000000000000000000004101c2834404b555d676d747b7e8182828383838383838383838383838383838383838383838383838383838383838282807d79716c625a50443b3025190d0100000000000000040d161d24293036393b3e40403e3b3a36312a251f170f0600000000000000000000000000000000000000000000000000000000000000000000000009151f2a333e48505960666d70747576767676767676767676767676767676767676767676767573706c655f584e463d30261c110600000000000000000000000000000000000001070d151a1f252a2d2f34383a3c3e3e3f3f3e3c3a3935302d2a251f1c23282b2d303333322f2e2b26201b150f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f29333b454d565d606c717a80858b9093999a9c9e9fa3aaa1a1a0a39f9e9c9a9997928e89837d756d685d564c41352c22170b0000000000000b1825323e4b5865717e8b96a1aab2b7b7b2a9a1978f82879299a2aab0b9bbbfc1c2c3c3c2c0bebab8b0aca49f9590857c6f6a5f574d42392e22190b020000000000000000000000020b17202a333c454d555d606b70797f858b90939a9b9d9fa2aaa1aaa29f9d9b9895908b857f786e69615a50483e352b20170d000000000000000000000000000000000006121f2b37434e58606c7880868b8d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8d89827a6d675d51433a2f24190d0100000006111c26303f44505b656c727a7e81828383838383838383838383838383838383838383838382817f7b756d685d564c4131281d13070000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada093877a6d605e686f7c87929fa5afb9c2cdd6d6cabfb4aaa0968f82777a8794a0adbac7d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4dfd2c6b9ac9f9386796c605346392d201306000000010e1a2734414d5a6774808d9aa7b3c0cddad9ccc0b3a6998d8073665a4d4033271a0d0000000000000000000b172228343f4a545c60696e7275767676767676767676767676767573706c655f584e453c3122180e0300000000000000000000000000000000060e171f252a31363a3b3e40403e3a39363029241d160d0400000000000000000000000000000000000000000000000000000000000000000009131d262f363e424a50535658595856535049413d352c241a11080000000000060f19222b333c42474e53555859595653514b443f382f271e150b00000000000000000000000000000000000000000000000000000000000c18232e39434b555d60696e72747576767676767676767676767676767676767676767676767676767676767676767573706d66615a50483f32291e140800000000000000040e161f282f353b4146474b4c4c4b4846423b36302921180f060000000000000000000000000000000000000000000000000000000000000000000000030e18212c363e474f545c606467686969696969696969696969696969696969696969696969686663605b534e463d342b1e140a000000000000000000000000000000000000040c121820262b30363a3b404547484a4b4c4b4b494745413b3a363029262e34383a3d3f403f3c3b37322b272019100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d172129333b444c525a62686d737a7e83868a8d8f919298949494949992918f8e8c8985817d77706c605d564c443a30231a10050000000000000713202d3a4653606d79849198a1a9aaaaa8a09791857a7e8792989fa6acaeb5b5b6b6b6b5b4b3adaba69f9a938d837b6f6a5f584e453b30271d100700000000000000000000000000050e18212a333b434b515961676d72797e83878b8e9092989494949892908e8b88837e79726d665f5750483e362d231a0e050000000000000000000000000000000000030f1b26313c44505b666c737a7e8082828383838383838383838383838383838383838383838282807c766d685d554b4031281e130800000000000a141e27333f49535b60686d717475767676767676767676767676767676767676767676767574726e6a615d564c433a2f1f160c010000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada093877a6d60666d7a849199a3aeb7c0cbd4d4cac2baaea29891847a6d7a8794a0adbac7d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212e3a4754616d7a8794a0adbad0dbe7d3c6b9ada093867a6d6053473a2d201407000000010e1b2834414e5b6774818e9aa7b4c1cddad9ccbfb3a6998c807366594d4033261a0d000000000000000000050b17232e38424a50575f62666869696969696969696969696969686663605b534e463c332a20100600000000000000000000000000000000060f18202930363b4246484b4c4c4b4746413a352f281f160d0400000000000000000000000000000000000000000000000000000000000000040d1b252f38414850545c606365666563605b534f473e362c231a0f06000000050e18212b343d454d53585f6265666563605d55504a423930271d12070000000000000000000000000000000000000000000000000000000007121d27303a434b51575e616567686969696969696969696969696969696969696969696969696969696969696969686664605c5450483f362d20170d02000000000000020c162028313a41454c52545759595855534d46423b332a21180c030000000000000000000000000000000000000000000000000000000000000000000000060f1a242c353d424a5053575a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a56535049413c342b22190c020000000000000000000000000000000000060d161d242931373b4246474b51535557585858585654524c4846423b3530383f44464a4c4d4c4947433c37322b221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172129323a414550565d60676d71767a7d80828486878788878786868483817f7c7975706b64615a524c433a32281e11080000000000000006131f2c3845515c676f7c8691969c9d9d9c9691857d6f717d858f949b9fa3aba8a9a9a9a8a7a9a29f9b94908780796e695f584e463c33291e150b000000000000000000000000000000060f182129313940454f555c60676d71767b7e81838587878887868583817e7b77726d67605c544d453e362d241b1108000000000000000000000000000000000000000a152028333f4a545b60686e717475767676767676767676767676767676767676767676767675736f6b615d564c43392f1f160c010000000000020c17222d38414950565d6065676969696969696969696969696969696969696969696969696865625f58524c443a31281e0d04000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6d616d78828f96a1abb4bfc9d2d6ccc2b8aea49f92867c6f6d7a8793a0adbac6d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000714212d3a4754606d7a8793aab4becad6e2d3c7baada094877a6d6154473a2e211407000000020f1c2835424f5b6875828e9ba8b5c1cedbd8ccbfb2a5998c7f7266594c3f3326190c0000000000000000000006111c2630383f444d5355595b5c5c5c5c5c5c5c5c5c5c5c5c5c5b5956535049413c342a21180e00000000000000000000000000000000030c18212a333b42464d53545859595754524c45403a31281f160c010000000000000000000000000000000000000000000000000000000000010c16202d37414a525a61666d6f7273726f6c65605950483e352b22180e0500030c17202a333d464e575f616a6e727372706d67605b544b42392e23180c03000000000000000000000000000000000000000000000000000000000b151e28313a41454d5254585b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a5753514a423e362d241b0e050000000000000008131e28323a434b51565e6164666665615f57524d453c332a1e150b00000000000000000000000000000000000000000000000000000000000000000000000008121a232b30383f44464a4d4f4f5050505050505050505050505050505050505050504f4f4d4946443f382f2a2219100700000000000000000000000000000000000810181f282f353c43474d5254555c6062646565656463605d5654524d46413e424a50535659595855544e47433d342c231a0f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1720282f353e434c52555d6065686d71737678797a7a7b7b7a7979787674726f6c66636059555045413a312820160c000000000000000004101c2834404b55606a6f7d848b8f90918f8b847c6f6b6b707b82898f9299999b9c9d9c9c9a9897928e89837c746d675f574e463c342a21170c0300000000000000000000000000000000060f171f282f353e434b51555c6065696e717477797a7a7b7a7a787774726e6965605d55504a423c332c241b12090000000000000000000000000000000000000000040b17222d38424a50565e6165676869696969696969696969696969696969696969696969696866636059524c443a31271d0d040000000000000006111b262f383f444c5254585b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5955534e46413a32281f160c00000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6d6c74808d949fa8b2bdc6d1d8cec4bab0a69d928a7e716a6d7a8793a0adbac6d3dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000713202d3a4653606d798698a2aebac6d3dfd4c7baaea194877b6e6154483b2e211508000000030f1c2936424f5c6975828f9ca8b5c2cfdbd8cbbeb2a5988b7f7265584c3f3225190c00000000000000000000000a141e262e343c4247484c4e4f50505050505050505050504f4f4d4946443f382f2a22180f06000000000000000000000000000000000b151e2a333c454d52575e6165666664615e56514b433a31281e1308000000000000000000000000000000000000000000000000000000000008131e28323f49525c646c71797c7f807f7c78706b615a50473d342a20170d030b151e29323c454e5860696e767b7e807f7d79726c665c544b40342820150a00000000000000000000000000000000000000000000000000000000030c161f282f353b4246484b4e4f4f5050505050505050505050505050505050505050505050505050505050504f4f4d4a46444039302c241b120900000000000000010d1924303a444c555d60686e717373716e69615e574d453c30271c12070000000000000000000000000000000000000000000000000000000000000000000000000811191e262e34383a3d4142434343434343434343434343434343434343434343434342403d3937332d261d191007000000000000000000000000000000000008111a222a313940454e53575e6166676d6f71717272716f6d6866615e57524c4750545c6063666665625f58544e463e352c21170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e2429313a41454b5154565d616467696b686d6e6e6e6d6d676b69676662605b54544f49443e352f281f160e040000000000000000000c18232e39434e58606b6f797e828484827e796f6a6061696e767d82868a8c8e8f90908f8d8b8985817c766f6a605c554d453c342a22180f05000000000000000000000000000000000000050d161d2429313940454b5153575e6165686a676d6e6e6e6d676a6865615f5753514b443f38302a211a11090000000000000000000000000000000000000000000006111c262f383f444c5254585a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5a56544f46413a32281f150b0000000000000000000a141d262d333a4145474b4e4f505050505050505050505050505050505050505050504f4e4c4847433c35302820160d0400000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6d717e8a929da6b0bac4cfd8d0c6bcb2a89f948d80736c606d7a8793a0adbac6d3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000006121f2c3844505c667885929fabb8c5d2ded5c8bcafa295897c6f6256493c2f23160900000004111d2935414c566a7683909da9b6c3d0dcd7cabeb1a4978b7e7164584b3e3125180b0000000000000000000000020c141c232831373a3b3f424343434343434343434343434342403d3937332d261d1810060000000000000000000000000000000007121d27303c454d575e61696e717373716d68605d554c433a2f24190d04000000000000000000000000000000000000000000000000000000010d19242f3a44515b646e747e84898b8c8b89847d716c61594f463c32291f150b121d27303a444e57606a6f7b83888b8c8c89857f786d665c51453c31261a0f0300000000000000000000000000000000000000000000000000000000040d161d242930363a3b3f4142434343434343434343434343434343434343434343434343434343434343434342403d3a38342e271e1a1209000000000000000005111d2935414c565d676d747a7e7f7f7e7b756e695f574d42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000070c141c23282b2d31343536363636363636363636363636363636363636363636363533302d2b27221b140b07000000000000000000000000000000000008121a232c343c434b51585f62696e7276797c7d7e7f7e7e7c7a77736e69615e56515a61666d707273726f6a6260584f473e33291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191f282f353a4145474c5254575a5c565d6061616161605c555c5b595653504a48443d393329241e160d040000000000000000000007121d27303d464f5960676d7275777775726d675f58575e616b70757a7d808283838382817f7c79746f6a626058514b433b332a221810060000000000000000000000000000000000000000040c12181f272f34394045474d5254585b555d60616161605d555b5855534d47454039342e261e180f080000000000000000000000000000000000000000000000000a141d262d333b4146474b4d4f4f5050505050505050505050505050505050505050504f4f4d4948433d35302820160d03000000000000000000020b141b22273035393a3e41424343434343434343434343434343434343434343434342413f3b3a373129241e160e040000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7baada094877a6f7c86929fa4aeb8c2ccd6d6cbbfb4aaa1968f82786d60606d7a8693a0adb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000003101c28343f4a546b7784919eaab7c4d1ddd7cabdb1a4978a7e7164574b3e312418090000000713202c3945525d687885929fabb8c5d2ded6c9bcb0a396897d7063564a3d3023170a000000000000000000000000020a11171f262b2e2f3335363636363636363636363636363533302d2b27221b140b0600000000000000000000000000000000000c18232e39434d575f696e757b7e7f7f7e7a746d675d564c41352920160a00000000000000000000000000000000000000000000000000000004111d2935414c56626d74808a91969899989691877e716b60584e443a31271d1218232e39434c565f6a6f7c85909498999897928c82786d60584e43372b1f12060000000000000000000000000000000000000000000000000000000000040c13181f252a2d2e32343536363636363636363636363636363636363636363636363636363636363636363533312d2c28231c150c080000000000000000000713202d3946525d686d7981868a8c8c8b88827b6e695f544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f202427292929292929292929292929292929292929292929292929282723201f1b17110a02000000000000000000000000000000000008111a242c353e464e555d606a6e757b7f8386888a8b8b8b8b8986837f7b746d68605b626c70787d7f807f7c776f6a61594f453b31251a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d161e24292f35393a4146474a4d4f4c52545455545453514b504e4c4946443f3838322d282219130c040000000000000000000000000b151e2b343d474f555d6065696a6a6965605d554e4d53596063686d7073757676767574726f6d66626058544e4540393129211810070000000000000000000000000000000000000000000001070d151d23292f34383b4246484b4e4c515454555453514b4e4b4846423b38352f28231c140c0600000000000000000000000000000000000000000000000000020b141c22283036393b3e4142434343434343434343434343434343434343434343434342403c3b383229241e160e040000000000000000000000020a11171e24292c2d323436363636363636363636363636363636363636363636363635322f2e2b262019130c04000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd4c7baada194877a7a849198a2aeb6c0cad4d4cbc2baaea39891847a6d665c606d7a8693a0adb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000c17232e43505d697683909ca9b6c3cfdcd9ccbfb2a6998c7f7366594c4031251a0e0200000714212d3a4754606d7a8797a2adbac6d3dfd5c9bdb2a895887b6f6255483c2f2215090000000000000000000000000000060b151a1e2122262829292929292929292929292929282623201f1b17110a02000000000000000000000000000000000004101c2834404b555f696e7b82878b8c8c8a8681796d685d52453d32271b0f0300000000000000000000000000000000000000000000000000000713202c3945525d68727f8c929ea1a8a6a8a09992877d706a5f564c43392f2318242834404b555e686e7c8592979fa6a6a9a29e948d81746a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000001070d141a1e20212528292929292929292929292929292929292929292929292929292929292929292929282724201f1c18120b0300000000000000000007131f2c38444f59616d7a838e9299999998938f847b6e665c5144382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000060b101213171a1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a1613120f0b06000000000000000000000000000000000000060f1a232c363e474f585f676d747b82868c90929997989898979a93908c86817a706b626d727d84898c8c8b88837c706b61574d42362a1c120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d24292c3035393a3e40434145474748484746454043413f3c3938332d2c27211c170d080100000000000000000000000000030c19222b353d434b5153585c5d5e5c5853514b4342464f54565d60646668696a6969676563605c54544e47433d342f271f170f0700000000000000000000000000000000000000000000000000030b12181d23292c30363a3b3e41414547474847474540413f3b3a36312c29241d17110a02000000000000000000000000000000000000000000000000000000020a11171e252a2d2e32343536363636363636363636363636363636363636363636363533302f2c272119130c040000000000000000000000000000060b13191d20212528292929292929292929292929292929292929292929292929282622211f1a150d080200000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd4c7baaea194877b828f96a0aab4bfc8d2d6cdc2b9aea49f92867c6f685e54606d7a8693a0adb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000061b2835414e5b6874818e9ba7b4c1cedadbcec1b4a89b8e817568574d42362a1e12050000091623303c4956636f7c8996a9b3becad6dfd2c5b9ada196877a6d6054473a2d21140700000000000000000000000000000003090e121415191b1c1d1d1d1d1d1d1d1d1d1d1d1c1c1a1613120f0b060000000000000000000000000000000000000006131f2c3845515c676e7b848f9398999999928d837a6d60584e43382b1f130600000000000000000000000000000000000000000000000000000714212d3a4754606d7a85929fa4acb2b3b2aba39992857c6e685e554b403429242c363e45515c676d7a849197a2a9b0b3b3ada69f93877c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000002090e121415181b1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a171312100c0700000000000000000000000915222f3b4854606b75828f959fa3aba6a59e969083786d6053463a2d20130800000000000000000000000000000000000000000000000000000000000000000000000000000000000306070a0e0f10101010101010101010101010101010101010101010100f0d0a06050300000000000000000000000000000000000000030d18212b353e485059616a6f7980878e92999c9fa3aba4a5a5aca49f9d99928d857d716c727f8891969999989590867d70695e5346392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d13181d2024292d2e31342f35393a3b3b3b3a3a38342e34332f2d2b28221c1c16100b0500000000000000000000000000000000071019232b31394045474b4f51514f4b47454039363d44484c525457595b5c5d5d5c5a585653504a47433d373229231d150d0600000000000000000000000000000000000000000000000000000001070c12181c1f252a2d2e322f35393a3b3b3b3a39352f322e2d2a261f1d18120b0600000000000000000000000000000000000000000000000000000000000000060b14191e20212527292929292929292929292929292929292929292929292929282723221f1b160d08020000000000000000000000000000000002080d111314181b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b191514120f0903000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdacec1b4a79b8e818e949fa8b2bcc6d0d9cfc4bbb1a79d928b7e716a605653606d798693a0acb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfcfdaded1c4b7ab9e918478695e53463a2d2114090004111d2935404b5566737f8c99a6b2bfcfdbded1c4b7ab9e918478675d5145392c2013060000000000000000000000000000000000020608080c0f101010101010101010101010100f0d0a0605030000000000000000000000000000000000000000000713202d3a4653606d798391969ea5a6aba39f958e81756a6054473b2e22150800000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a98a2aeb9bdbfbdb5aba29791847a6d675c514540362c343e48515b606d79829096a0a9b3bbbfbeb9afa4998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000020507080c0e0f10101010101010101010101010101010101010101010101010101010101010100f0d0a07060400000000000000000000000000091623303c4956636f7c89949ea7afb5b2afa8a0958b7e7165584b3e2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333d47505a616b707c848d92999fa3abacafb5b1b2b1b6afacaba39f9791877e727e8a939aa1a8a6a79f9892857b6e61544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113191d2021242724292c2d2e2e2e2e2d2c2823282623201f1c1711100b05000000000000000000000000000000000000000711191f272f35393a3f424444423f3a39352f2a32383a4145474a4d4f5050504f4e4c4946443f3837322b272018120b0300000000000000000000000000000000000000000000000000000000000001070c10141a1e20212524292c2d2e2e2e2d2c29242522211e1a14100c070100000000000000000000000000000000000000000000000000000000000000000002080e111414181a1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1a1615130f0a040000000000000000000000000000000000000000010407070b0e0f101010101010101010101010101010101010101010100f0e0c080806020000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdbcfc2b6a99d938e939da6b0bac4ced8d1c7bdb3a99f958d81746c62584e53606d798693a0acb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000a1724313d4a5764707d8a97a8b2bdc9d5ded2c5b9aca196877b6e6154483b31261a0e020613202c3945515d6776828f9ca9b5c2cfdcdccfc2b5a99c8f827669554c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495365727e8b95a0a9afb2b5afa79e93897c6f6256493c2f23160900000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aaab3bec9cfc7bdb3a9a1969083796d605b52483e343d46505a636d75818e949fa8b2bbc5cdcac0b5ab9c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa6b0bbc0bfbab1a79c8f837669564c4135291d1104000000000000000000000000030608090d101213131313131313131313131313131313131313131313131313131313131313120f090907030000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c454f59616c717d8691969fa3abafb5b9bbc0bebebec0bbb9b5aea9a19992877e85929ea4acb2b3b1aaa2978e8174665c5144382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d111314171a191d202121222121201f1c181b191613120f0b060000000000000000000000000000000000000000000000070d151d24292c2d3236373736322d2c292421272c2f35393a3d404243434342413f3c3a38342e2b27201b150c07010000000000000000000000000000000000000000000000000000000000000000000004090e12141518191d202121222120201d18181514120e09040000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e0f10101010101010101010101010101010101010101010100f0d09090703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbded2c6baafa59d9b9da5afb8c2ccd6d7cbc0b5aba1979083786d605a504653606d798693a0acb9c6d3dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000815212e3b4854616e7b8796a1adb9c5d2dfd5c9bdb2a8988b7e7165574d42362a1f14080f18202d3a4753606d7a86929facb8c5d2dfd8ccc0b6ac998d8073665a4d402f24190d0100000000000000000000020507080b0c0b08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b657683909ca7b1bbbfc0bbafa59a8d8074675a4e4134271b0e01000000000000000000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1d0d9cfc5bcb2a89f958e81756d635a50473d454e58616c737f8c939ea6b0bac4cdd7d2c3b6a99c908376695d5043362a1d1000000000000000000000000000000000000000000000010507070b0c0b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a3744505d6a7783909daab6c1cbccc3b9ac9f928679685d5245392c20130700000000000000000000030a0f1215151a1d1f202020202020202020202020202020202020202020202020202020202020201e1b1615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000c18242f39434d57606b717e879298a0a8afb5bbc0c5c7cbd1cbd2ccc8c6bfbbb3aba399938b9297a1adb6bebfbcb3a99f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b080d111314141515141313100c070c090606030000000000000000000000000000000000000000000000000000030b12181d1f2025292a2b2925201f1d18161b1e24292c2d313335363736363432302d2b28231c1b160f0a04000000000000000000000000000000000000000000000000000000000000000000000000000002050708080d1113141415141413110d07080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407070a0c0d0c0a0706040000000000000000000000000000000000000000020507080b0c0d0c0b070705010000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe2d6cbc1b7afa9a7a9afb7c1cad3d5cbc3bbafa39991857b6e665c51484653606d798693a0acb9d2dddbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000714212d3a46535e697884919eabb7c4d1dcdacec2b6a99c8f8376695f53463b3025191318212b37434e5865717e8b98a2aebac7d3e0d4c8bbafa49a8a7d7063574a3d3024170800000000000000000002080e1114141819181514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7986929facb9c3cdcbc1b6aa9d9083776a5d5044372a1d1104000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99aab3becad6d7cec4bab1a79e938c80736c61594f454d57606a717e88939fa5afb8c2ccd6d6ccc2b5a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000002080d1113141719181514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4d1d3c7baaea398877a6d6054473a2d211407000000000000000002080d151a1f2122272a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2823221f1b160b0600000000000000000000000000000000000000000000000000000000000000000004101d2935404b555f69707d879299a2aab2bbc0c7cbd1d3d7dcd7ddd8d4d1cbc4bdb5aba49f989ea1a9b3bec7cec5baaea298887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070706040000000000000000000000000000000000000000000000000000000000000000000001070c101314181c1e1e1c181413100c0b1013191d2021242628292a2a29272523201f1c17110f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e1113131313131313131313131313131313131313131313131313120f0b070603000000000000000000000000000000000000000000000001080d11131417191a19171413100c070100000000000000000000000000000002080e11141417191a19171413110d0802000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8ddd2c9c1bab6b4b6bac1c9d2d7cdc3b9afa59f92877d6f695e544b404653606c7986939fb6c0ccd8dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000005121e2a36424d576875818e9babb5c0cbd7dfd2c6b9ac9f93877b6e61564d41362a2420202a333c4754606a7683909daab4bfcad6dfd2c6b9ac9f93867a6d6054473a2d2114070000000000000000060b14191e202124252522211e1a150d0802000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8799a3aebac7d5d1c4b8ab9e9185786b5e5245382b1f1205000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b98a2aebac2ccd5d6ccc2b9afa59c928a7e716b60574d555e696f7c86929aa4afb7c1cbd4d7cdc4bab0a6998c807366594d4033261a0d00000000000000000000000000000000000002080d13191e202124252422211e1a140f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d7cbbfb4aa94877a6e6154473b2e21140800000000000000040c131920262b2e2f333738393939393939393939393939393939393939393939393939393939393939393835302f2c272117110a02000000000000000000000000000000000000000000000000000000000000050f19232c3945515d676e7b869299a3abb4bcc3cbd1d7d7d3d2cecac9c8c8cacdcfc7bdb5afaca5abadb3bbc5cfd6cabfb4aa96897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070c0f11110f0c070604000001080d111314171a1c1d1d1d1c1b19161312100b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151a1e1f20202020202020202020202020202020202020202020201f1e1c181312100b060000000000000000000000000000000000000001070d13191d20212426262623201f1c18120b0600000000000000000000000000070c14191e2021242626262421201d19130d080200000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8e4dbd2cbc6c2c1c2c6cbd2d9d0c5bbb1a79e938b7f726b60564d423944505b6579869aa4afbbc8d4dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000020e1a25313e4b5864717e8b99a3afbbc7d3e0d4c8bbafa49a8d8073685e52463f352f2c2d333c45505a626f7c88959fabbcc6d0dbddd0c3b6aa9d908377685d5245392c201307000000000000020a11171e252a2d2e3132312f2e2b262019130c040000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794abb4bfcbd7d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000714202d3a4753606d7985929fa6b0bac3ccd6d4cbc1b7ada49f92867d6f695f565d676e7b859198a3acb6c0c9d3d7cec5bbb2a89e94887c6e6255483b2f2215080000000000000000000000000000000000050c13191e252a2d2e3132312e2d2a261f1b150b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1dcd1baada194877a6e6154473b2e211408000000000000050e161e252931373a3c4043454646464646464646464646464646464646464646464646464646464646464645423c3b383227221b140b0200000000000000000000000000000000000000000000000000000000000b16212b37434e58606d79839098a2abb4bdc6ced7d8d1cbc7c5c2bebcbbbcbdc0c5c6c7c0bbb9b1b8b9bec5cdd7dbd0bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000040607080807060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030404030000000000000000010407070a0d0f1010100f0e0c0907060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0c0c0c0b09070604010000000000000000000000000000000000000000000000000000000000000000060b141a1e2122272b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b2924201f1c17110a0200000000000000000000000000000000040c12181e24292c2d31333332302d2c29231d17110a02000000000000000000030b12181e252a2d2e31333333312e2d29241e19130d05000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8ede4ddd6d2cfcecfd2d6ddd2c7bdb3a9a0958e81756d62594f443b333f49606c7986939facb9c6d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000914212e3a4754616d7a86929facb9c5cfdad8ccc0b6ac9f92867b6e615a5045403a393a3e454d57616c76828f9ca7b1bcced8e2d4c8bcb1a7998c7f7266564c4135291d11040000000000020c141c23283036393b3e3f3e3b3a373129241e160e0400000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbad1dcd1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000613202c3945515d67727f8c949ea8b2bac4cdd6d3c9bfbaaea39892857b6e685d666d79839097a1aab4bec7d2d8cfc5bcb3a9a1968f82756a5f53473a2e21140800000000000000000000000000000000050e161e252a3036393a3e3f3e3b3a36312b262017110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000050e17202830353c4347484d505253535353535353535353535353535353535353535353535353535353535353514e4948443d332d261d140a0000000000000000000000000000000000000000000000000000000004101c27333b4754606a74808d95a0aab3bdc6cfd7d3cfc6bfbab9b5b1afaeafb0b4b8b9bec5c7c6bec5c6c9cfd7dfd6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000070c10121315151413110d08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c0d0d0b0706040100000307090e121415171818191818161413110d070603000000000000000000000000000000000000000000000000000000020a11171f262a2d2e3437393939393939393939393939393939393939393939393939393835312d2b28231c140c060000000000000000000000000000040d161d24292f35393a3d3f403f3d3a38342f27221b140b0200000000000000030c151c23283036393b3e3f403f3e3a3935302a251e170e060000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4efe8e2dedbdadbdeded7ccc0b5aba2979083796d605b51473d322d46535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000713202d3946525d6876828f9ca9b3becad6ddd2c7baaea2988e81756d625a514b4745464850575f69717e8a949fabb9c2cde0ddd1c4b8ab9f95887b6e6255483b3024190d0100000000000a141e262e343b4146474b4c4b4847423c35302820160c02000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000004101d2935404b55606c78828f96a0a8b2bbc5ced7d7cbbfb4aaa19791837a6d666d78828f95a0a9b3bcc6d0d9cfc6bcb4aaa19791847a6d61584e43372b1f1206000000000000000000000000000000050f17202830363a4146474a4c4b4846423b373227221b140b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000020d172029323a41464e53555a5d5f5f60606060606060606060606060606060606060606060606060606060605f5e5b56544f443f382f261b11060000000000000000000000000000000000000000000000000000000713202c38444f59626f7c87929fa7b1bcc5cfd8d2cac1bcb4aeaca8a4a2a1a2a3a7abadb3bbc0c7d0d1d2d5dae1e9d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000040a0f12181c1f20212221201d1913100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080b0c0d0c0b09060603000000000000000000000000000000000000000000000000000000040607090c0d0d0c0a0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415181a19171413110d080a0f13151a1e21212325252625242321201d1815120f0a04000000000000000000000000000000000000000000000000020b141b222731363a3b41444646464646464646464646464646464646464646464646464645423e3a38342e261e170f06000000000000000000000000040d161f282f353a4145474a4c4d4c4a47454039332d261d140b020000000000030c151e272e343b4146474a4c4d4c4a4746413a36302920180f0600000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4f9f3eeeae8e7e9e0d5ccc3bbafa49992857b6e675d51493f352b3946535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000005111d2935414c5664717e8b97a1adb9c6d0dbd6cabfb4aa9e938b7e716c605d55545253555a61696e7b85929fa6b0bbcbd4ded5c9beb3a99d908376695f53473a2e1e1308000000000006111c2630383f444c525457585855534e45413a32281e140a000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000010d18242f3944505b666d7a849196a1a9b3bcc5ced8d1c6bcb3a9a0958f82786d74808d949ea7b1bbc4ced8d0c7bdb4aaa29892857c6e685e52463c31261a0f020000000000000000000000000000030c172129323a41464c525457585755534d47433c332d261d150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000008141e29323b444c52585f62666a6b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b68636059504941382d22170b0300000000000000000000000000000000000000000000000000000916222f3c4854606b76829099a3afb9c3ced7d2c8c0b8b0aaa39f9b97969595979a9ea1a9afb5bdc7cfd9e3e6ece3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000070f161b1c23282c2d2e2e2d2c29241f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f12141518191a19181513120f0b060000000000000000000000000000000000000000000001070c1013141618191a19171413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151a1e21222526262421201d1913161b1f22252a2d2e3031323232312f2d2c2924211f1b15100b05000000000000000000000000000000000000000000000a141d262d333b4246484d5152535353535353535353535353535353535353535353535352514f4b46443f38302921170e0400000000000000000000010c162028313940454c5254575959595653514b443f382f261d140a00000000020b151e27303940444c5254575959595754524c46413a322921180d04000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffffaf7f8ece2d7cec3baafa59f93877d70695f554b40372d2c3946535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000010d1924303a4753606d7985929eaab4bfcad6dbd0c6bcafa59f92877e736d6763605d6062656c717b849197a2adb8c2ccdddcd2c6b9ada1978b7e7164574d42372b1e0c0200000000000b17232e38424a50565e61646564625f57524c443a30261c11060000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000007121d28333f4a545d686e7b849197a1aab3bcc6cfd8cfc5bbb1a79f948e80747f8b929da6b0b9c3cdd6d2c7beb5aba39892867c6f6a5f564c41332a2015090000000000000000000000000000000b151e29333b444c52565e61646564615f57544e443f382f261e150c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000020e1925303b444c565e616a6f7376787979797979797979797979797979797979797979797979797979797979797978756f6b605b53493f33271f14090000000000000000000000000000000000000000000000000005121e2a36424d5763707d89949fabb5c0cbd5d3c9c0b6aea69e98928f8b8988898a8d92979fa4abb5bdc7d1dce8f4e3d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000010a101921272c2e34383a3b3b3a39352f2c28231d150c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10151a1f2122252626262522201f1c17110c0701000000000000000000000000000000000002090e12181d1f2023252626262421201d19130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000060e151a20262b2e2f323333312d2c29241e21272c2f31363a3b3d3e3f3f3f3e3c3a39352f2e2b26201c160e09030000000000000000000000000000000000000006111b262f383f444d53555a5e5f60606060606060606060606060606060606060606060605f5e5c5753504a423b332920160c0200000000000000000008131e28323a434b51565d606466666563605c55504941382f261c11060000000a141d273039424a51565e616466666664615d56524c443b33291f160c010000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffffff7eee7dbd0c5bcb2a89e938c7f736b60574d43392f252c3946535f6c7986929facb9c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000008131f2c3845515c6773808d98a2aebac5cfdad8cec1bbafa39992888079736f6d686d6e71767e859196a0a9b3becad4e0d5c9beb3a99e9285796d6053473c31261a0e000000000003101c28343f4a545c60686e7172716e6a605d564c42382e23170b0000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000010b17222d38424c565e696e7b859298a2aab4bdc7d0d7cdc3b9b0a69d928e8187929fa4aeb8c1cbd5d8ccc0b6aca39992867d706a60574e443a3021180e03000000000000000000000000000007121d27303b454d565e61686d7172716e69625f585049413830261e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000005111e2a36414c565e686d757c8083858686868686868686868686868686868686868686868686868686868686868684817c746c655b50443b31261a0e020000000000000000000000000000000000000000000000000714212d3a46535f6976828f9ca6b0bdc7d1d7cdc1b7aea49d948f86827e7c7b7c7d81858d9399a3abb5c0cbd7dee9e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000010a131c222b32383940444648484745413a38342e271e160e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f262b2e2f31323333322f2d2b28221c18120b03000000000000000000000000000000050d141a1d24292c2d3032333332312e2d2a251e1b150e07000000000000000000000000000000000000000000000000000000000000000000000000070f1820262b31373a3b3f40403e3a39352f272a32383b3c4246484a4b4b4c4b4b494745413c3a37312c27211a140d050000000000000000000000000000000000000b17222d38414950575f61676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6864605c544d453b32281e13080000000000000000010d19242f3a444c555d60686d70727372706d67605b534a42382d22170b020006111b262f39434b545c60686e71727372716d68615e564d453b31281d12070000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffffaf0e5dcd6cabeb4aaa0968f81776c60594f453b31271d2c3946525f6c7985929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000004101c2934404b55616e7a86929fa9b3bec9d5dfd7cbc0b5aba39a938d85807c7a79797b7e838a9297a0a8b2bbc5cfdcd8cec6b9ada1978c7f72675c5145382a1f1509000000000006121f2b3844505c666d737a7e7f7e7b756d685d544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000006111c262f3a444d575f696f7c869298a3abb5bec7d2d5ccc2b8afa59d938e9299a3afb6c0cad3d2c8c0bbafa49a92877e706b60584e453c32291e0f060000000000000000000000000000000c18232e39434d575e686d757a7d7f7e7b766f6a605b534a423830261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000714202d3946525e686e7a81888d909292999393939393939393939393939393939393939393939393939393939992918e8980776c60574d42362a1e12050000000000000000000000000000000000000000000000000815222e3b4855616e7b87939facb9c2cfd9cfc5bbafa59d928d827b75716f6e6f70747980879299a3afbbc2cdd8e3e3d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000009131c252e343d43484a5153545554524c46454039302820160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c151c23282c31373a3b3e3f403f3e3c3938332d29241d150d0600000000000000000000000000090f171f252a2f35383a3c3f40403f3d3a3936302b262018100901000000000000000000000000000000000000000000000000000000000000000000071019212a31373c4247484b4d4c4a4745413a33363d4448494d53545658585958575654514b4847433c38332a251f170f0800000000000000000000000000000000030f1b27333f49535b60696e7477797979797979797979797979797979797979797979797979797875716d665f574d443a3025190d000000000000000004111d2935414c565d676d747a7d7f807f7d79726c655b544a3f33281e1308060f17222d38414b555c666d747a7e7f807f7e7a746d685f574d43392f24180d0000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fffcf2e8ded4cac2baaea2989184796d655b50473d33291f152c3946525f6c7985929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000c18232f3946525e6873808d97a1adb9c2cdd6dcd1c7bdb5aca49f97918c89878686888b90959ea1a9b2bac4cdd7dbd0c6bcb0a69e9185796d60554b403429180e030000000006121f2b37434e58606d7880868a8b8b88827a6d665c5044382b1f120600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000a141d28323b454d575f6a707d869299a3acb6c0ccd8d4cac0b7afa59e9b9fa3abb5c0c8d2d3c9c0b6aea49f93887e716c61594f463d332a20170d00000000000000000000000000000004101c2834404b555e696e7a81868a8b8a88827c736c655c544a42382e231712090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000006131f2b37434e58616e7a838e93999d9e9fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9b928c7f73695f53463a2d211407000000000000000000000000000000000000000000000005111e2a36414c5666737f8c9aa4afbbc8d4d6cabeb3a99e938d80756e696463626264676d737e87929fa6b0bbc7d3dee3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000050e1b252e3740464f54545c606161605d5653514b423a32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161e272e34383c4347484b4c4d4c4b4846443f38352f271f180f06000000000000000000000009121a2129303639404547494b4c4d4c4a4746413a37322a221b13090000000000000000000000000000000000000000000000000000000000000000040e19222b333c42474d53555859595754524c443f42464f5456575e6163646565656462605d5555534e48443d363129211a120a0100000000000000000000000000010c161f2b3744505b656c727b80848586868686868686868686868686868686868686868686868584827e786e695f564c4135291d1207000000000000000713202c3945525d686d7980868a8c8c8c89857f776c665b50443a3024190d0d172127333f49535c676d7880868a8c8c8c8a86817a6e695f554b4035291b110600000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4fef4eae0d6ccc2b8aea49f92867c6e675d53493f352c21171f2c3946525f6c7985929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000007121d2a36414c56616d7a85929ea6b0bbc4cfd9d9cfc7beb6afa9a19e999699929995989d9fa7adb3bbc4ccd6dcd6cabfb4aa9f948b7e71675d5143392f23180600000000000815212e3a47535f6a74808d92999897948f83786d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000020b162029333c454e58606b707e87929aa4afbbbfc8d2d2c9c0b7afa9a7acafb5bdc7d1d3cac1b7aea49c928c7f726c625a50473d342b21180e0500000000000000000000000000000006131f2c3845515c676e7b848e92999897948f877f776d665c544a3f3428241b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000815212e3b47535f6a76828f959ea5a9abacafb5acacacacacacacacacacacacacacacacacacacacacacacacacb4aeacaba49f92877b6e6155483b2e22150800000000000000000000000000000000000000000000000714202d3946525e687783909dacb6c0ccd8d2c6b9ada2978e81776c615e57565556555c606c727f8b949fabb7c2cdd8e4d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000020d17202d37404952596063666d6e6e6d6865605c544c443a3024190c020000000000000000000000000000000000000000000000000000000000000000000000000000000000020b161f2830394044464e535558595959585553504a454039312a21180f0600000000000000000009131b242c333b42464b515356585959595754524c47433c342d251b1209000000000000000000000000000000000000000000000000000000000000020c16202b343d454d53575f6265666664605d5650494d5359606368696e7071727272716f6d6766625f58544f46423b332c241c130a0200000000000000000000000007121d2c38444f59606c777f878d9192989393939393939393939393939393939393939393939892918f8a837b6e685e5246392e23180c00000000000006121f2b37434e58606d7a838d929899999897928c81786c60564c4135291d11151f29333b44505b656d79828d929999999999928e847b6e675d5145382d22170b00000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4f8ede2d8cec4bab0a69c928a7e706a5f554c41382d231a0f1f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000010d1925303b46525d68717e8b949fa9b2bdc7d0d9d9d0c7c0bbb3adaba6aba39fa3aba4a9abb1b9bec5cdd6dcd3cac1baaea2989082776c60554b4031271d120700000000000915222f3c4855626f7c88929fa3aba69e958b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000040d17212a333c464f59616c717e88939fa4aeb6c0c9d3d2c9c1bab6b4b9bbc0c7cfd4cac1b8afa59d928c80736d625a50473e352b22190f0600000000000000000000000000000004101c2834404a54606d798390969fa3aba69f99938c81786d665c504440362d23190f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000916222f3c4955626f7c88949ea8afb6b8b9bbc0b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbab9b7afa3998d8073675a4d4034271a0d00000000000000000000000000000000000000000000000814212e3b4754616e7a87939facb9c6d2d7cbbfb4aa9e92857a6d655b534d4948494b515a626d76828f9ca6b0bbc7d3dfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000000009141f29333f49525c636b6f75797b7b7a77726d665d564c4135291e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28313a424a5153585f62646566666562605b54514b433c332a21180c030000000000000007111b252d363e454d52555d60636566666564615e56534e463f372d241b0e05000000000000000000000000000000000000000000000000000000000008131e28323d464e575f62696e727373716d68605b53575f616b6f74787b7d7e7e7f7e7e7c7a77736f6a636059534d453e362e251c140a0100000000000000000000010d18242f3c4854606b73808c92999d9fa2aa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9b9590847a6d61544b4034281c100400000000000815212e3a47535f6a75818e959fa3aaa6a9a19e938c7f73685d5246392d20131d27313b454f59606c77818e949fa3aba6aba39f969184796d6053493f33271b0f03000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f4efe7dbd0c6bcb2a89f948d80736c61584e433a2f261b11121f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000008141e2935414c56626c76828f96a1abb5bdc7d0d8d9d2ccc4beb9b8b3b5afacafb5b1b6b8bcc2c9cfd7dcd7cac1b8aea49f92867c6e655b5043392f1f150b0100000000000d1a2734404d5a6773808d9aa4afb5b0a79c8f8276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000050f18212a343d474f59616c727f8b929ca4aeb7c1cad3d2cbc6c2c1c5c7cbd1d5cbc2b8b0a69e938d80746e635b51483e352c231910070000000000000000000000000000000006121f2c3844515c66737f8c95a0a8afb5b0aba49f938e81786d605c52483f352b21180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000c1926323f4c5965727f8c98a6b0bac1c5c5c7cbd1c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d1cbc7c5c0b5ab9d9083776a5d5044372a1d1100000000000000000000000000000000000000000000000a1724313d4a5764707d8a9aa4afbbc8d4d3c7baaea3988c7f72685e5349423c3b3c4045515b626f7c88949fabb7c4d0ddd6cabdb0a3978a7d7064574a3d3124170a000000000000000000020e1a25303b45515b636e737c8286878887847f796d685d52453e30261c110600000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3a434c545c60656a6e71727372716f6c66605d554e453c332a1e150b000000000000030c19232d373f4850575e61676d6f72737372706d68625f5851493f362d20170d02000000000000000000000000000000000000000000000000000000010d1924303a444e5860696e767b7e807f7d7a726c655b61696e767c818587898b8b8c8b8a898783807c76706b615e57504840372e261c130a0000000000000000000004101d2935404b5563707d89929fa3abacaeb4acacacacacacacacacacacacacacacacacacacb4aeacaba7a0968d8074665c5145382c1f130600000000000915222f3c4855626f7c88939ea7aeb4b3b3ada59f92867a6d6154473a2e2118242f39434d57616b737f8c939ea6afb5b3b5afa8a0968c8073655b5044372b1f1205000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f1e6ddd6cabfb4aaa1968f82786c605a50463c31281d140a121f2c3945525f6c7885929fabb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000020d1924303a44505a616e7a849199a3abb5bec6ced7dcd8cfc9c6c4bfc0bbb9bbc0bec3c4c8cdd5dad9d1cbc1b8b0a69d928b7e716a5f53493f31271d0d03000000000000101c2936434f5c6976828f9ca9b5c0b8ab9e9285786b5f5245382c1f1200000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000060f19222b353e47505a626d73808c929da5afb8c1cad4d7d2cfced2d4d7d5ccc3b9b0a69e948e81776c605c52493f362d231a110700000000000000000000000000000000000713202d3a4653606d7985929ea7b1bbc0bdb5afa59e938e81746e635a50473d332a20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000d1a2733404d5a6673808d99a6b3c0ccd1d2d3d7dcd2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dcd7d3d1c4b8ab9e9185786b5e5245382b1f1200000000000000000000000000000000000000000000000d1a2633404d596673808c99acb6c0ccd8d2c5b9ac9f92867a6d61564c4138312f2f343f47535f6a7683909ca9b6c3d0dbd6cabdb0a3978a7d7064574a3d3124170a00000000000000000005111e2a36424d57626d7380898f92989495918b827a6d605a5042382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424c565d666d72787b7e7f807f7e7c78736d675f574e453c30271d120700000000000b151e2b353f49515a61696e74797c7e7f807f7d7a756f6a625b51483e32291f140900000000000000000000000000000000000000000000000000000005111d2935414c56606a6f7b82888b8c8c8a867f776c666b707b82898e91979697989898979595908d88837d766e69615a514940382e251c11080000000000000000000613202c3945515d6776828f9ca4afb5b8babfb9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbab8b7b1a89f9286796d6053463a2d20130700000000000d192633404c5966737f8c99a5afbabfbfbeb9aea2988b7e7164584b3e3125222935404b555f69707d87939fa5afbbc0bfc0bbb2a89e9285786c605346392d201306000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8e8dfd4cbc2baaea29891847a6d665b50483e332a1f160b02121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000008131e28323e46525e686f7d879299a4acb4bcc4cbd1d7dad5d2d1d1cbc7c5c7cbd1d0d1d4d8d9d4cfc7c0bbafa69e948d80746c62584e41382d1f150b00000000000000101d2a3743505d6a7683909da9b6c3b9ac9f9387796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000071019232c353e48515b636e74808d939ea6b0b8c2cfd9e3dbdadfe0d9cec3bab1a79f948f82786d655b504a40372d241b1108000000000000000000000000000000000000091623303c4956636f7c8997a2adb9c3cbc7c0bbafa59d938c80736c62594f453c32281e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000c1925323f4c5865727f8b98a7b1bcc8d4dfe0e3e8dfdfdfdfdfebe3ddd7d4d2cecececececececececececececececec4b7ab9e9184786b5e5145382b1e1200000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8b5c2d2ddcec2b5a89b8f8275685d52443a2f2622232b37434e5865717e8b98a9b3becad6d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000714202d3a46525e69727f8c929c9fa3a7a09d948f82766c61544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545d686d787f84888b8c8c8c8b88847f796e6a5f574d42392e23180c0100000007121d27303d47515b626c717b8185898b8c8c8c8a86827c726d625a50443b3025190e0000000000000000000000000000000000000000000000000000000713202d3946525d686f7c858f9498999998928c81786c707d858f949b9ea1a9a4a5a5a5a4a7a09d99949089827b716c635b524a40372e241a0f0600000000000000000714202d3a4753606d7a86929facb9c0c5c6cad0c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d0cbc7c5c3baaea298897c6f6256493c2f23160900000000000f1c2936424f5c6975828f9ca8b5c1cbcfcabfb4aa9a8d8174675a4e4134272b343d45515d676e7b859299a4afb7c1cbd1cbc3b9ada197887b6e6155483b2e221508000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbeae1d6cdc2b9aea49f92867c6f685e544a3f362c21180d0400121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000000020c16202a36414c56606b717e87939aa2aab2bbc0c7ccd2d5dadddcd7d4d2d4d7dcdcdcd6d3cec8c2bdb5afa59e948f82786d605a50463c2f261b0d0300000000000000111d2a3744505d6a7783909daab6c3bbafa49a86796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000007111a232d363f49525b606c77818e949ea6b0bdc7d1dce8e7ece1d4c8bdb2a8a0959082796d665c53493f372e251b1209000000000000000000000000000000000000000b1724313e4a5764717d8a97a9b3becad6d2ccc1b7afa59c928b7e716b60574d443a30261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000915222f3c4855626f7c8895a0acb8c2cdd7e2ebf3ecececf5ebe2d9d2ccc7c6c2c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bcb2a89c8f8276695c4f4336291c100000000000000000000000000000000000000000000004111d2a3744505d6a7783909daab6c3d0d8cbbfb2a5988c7f7265564c4132281d141a26313c4855626e7b8897a2adbac6d3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000814212e3b4754616e7b86929fa4acaeb1aca69e948a7e71665c5044382b1f160a0000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666d7a828b9196979899999896918c847c6e695f544b4034281e13080000000c18232e39424f59626d727e868d92989899999899938f877f726c62564d42362a1c110600000000000000000000000000000000000000000000000000000714212e3a4754616d7a8491979fa6a6aaa29f938c80737e8792989fa6abadb3b1b1b2b1b1b1acaaa69f9c948f857e726d635c52493f362c21180b02000000000000000815222f3b4855626e7b8899a3aebbc7d1d3d6dbd2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dcd6d3d2cabfb4aa978a7d7064574a3d3124170a0000000000101d2a3743505d6a7683909da9b6c3d0dad0c2b5a89b8f8275685c4f423529323d46515b606d79839097a2abb5c0c9d7dcd4c8bcb1a795887c6f6255483c2f221509000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe2d8cfc4bbb0a69d928b7e716a5f564c42382d241a0f060005121f2c3845525f6b7885929eabb8c5d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000000040e1925303b444f59616c717e889298a0a8afb5bbc0c7c9cfd0d2d3d6dbd7d4d2d1d0cbc7c3bdb9b1aba39f938e82796d665c51483e332a1d140a0000000000000000111d2a3744505d6a7783909daab6c3c0b69f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000008111b242d374044505b656d78828f949fabb5c0cbd7e3efebded2c5b8aca09690837a6d675d544a41382d251c13090000000000000000000000000000000000000000091623303c4956636f7c8997a2adb9c4cfd8d7c9c0b7aea49f92877d70695f564c42382e231710070000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000815212e3b47535f6a7783909da6b0bbc5d0d9e4eef9fff9eee3d9d0c7c0bbb9b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b2aaa1968b7f7265584b3f3225180c0000000000000000000000000000000000000000000005121f2b3845525e6b7885919eabb8c4d1d6c9bcafa396897c706356493d3023160b13202d394653606c7985929fabb8c5d2d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000d192633404c5966737f8c98a3aeb8babcb8b0a69e9184786d6053463d32271b0f020000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54606c788290949ea1a8a5a6a5a8a19e9691857b6e665c51453a2f24190d010004101c2834404b54606b727f8892989fa2aaa6a6aba49f99928b7e71695e5246382e23170b0000000000000000000000000000000000000000000000000005111e2a36414c566673808c96a1a9b0b3b4aea59f92877e869299a2aab0b8b9bebebebfbebdbcb8b7b0aba69e97928a7f736e635b51483e332a1d140a00000000000000091623303c4956636f7c8996abb5bfcbd7dfe2e7dfd8d4d1d0cececececececececececececececed1c9beb3a9968a7d7063574a3d3024170a0000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c504336303a444e58626d74818e95a0a9b3bdc7d2dbd7cec5b8aca095877a6d6154473a2e211407000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbdcd1c6bdb2a99f948d80746c61584e443a2f261c1208000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000000000008141e29323d47505a626c717e8691969fa3abafb5b9bdc1c3c5c6cad0ccc7c6c4c2bfbab8b2aca79f99928c81796d675c544b40362d21180b020000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000000000000000000000000000009121b2527333f49535c666d79829099a3afbbc7d3e0edeaddd1c4b7aa9e91847a6d685d554b42392f261b130a0100000000000000000000000000000000000000000713202d3a4653606d7985929ea8b2bdc6d1dcd2c9bfbbafa39992857b6e685d544a3f342822190e0500000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000006121f2b37434e5864707d8a949ea9b3bec7d2dde8ecf5f4e8ddd2c7bdb5afaca8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a0989184796d6053473a2d2014070000000000000000000000000000000000000000000006131f2c3946525f6c7985929facb8c5d2d4c8bbaea195887b6e6255483b2f221508121f2b3744505b657784919daab7c4d0d6cabdb0a3978a7d7064574a3d3124170a0000000000000000020f1c2935424f5c6875828f9baab4bfc7c8c2b8aca0968a7e7164594f43382c1f1408000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b66717e8b949fa6acb2b2b3b2b2ada8a0979083796d60564c4135291d11040006131f2c3845515c66707d87929aa2aaaeb4b2b3b5afaba39f92867b6e61544a3f34281c10030000000000000000000000000000000000000000000000000713202d3946525e687784919ea9b2bbbfbfbaaea399928b9298a3abb3bcc2c6c9cfcbcbcbcec8c5c2bcb7b0a9a29f918c80736d635a50453b2f261b1106000000000000091623303c4956636f7c8996a2afbcd1dce7e6ddd4cdc8c4c3c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1bfb9ada197887b6f6255483c2f2215090000000000111e2b3744515e6a7784919daab7c4d0dccfc3b6a99c908376695d50432e38424c56606a727f8b939da7b1bbc5d0d9d9cfc5bcb1a79d908477685e5246392d201307000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cfd6d1cbbfb4aba1979082786d605a50463c32281d140a00000004111e2b3744515e6a7784919daab7c4d0d6d0c1b4a79a8e8174675b4e4134281b0e00000000000000000000000000000000000000000000000000000000020d17202b343e48505a626c717c848d92999fa4abadb2b4b6b8babfbac0bbb9b7b5b4aeaca8a09e9590877f756d675d554b42392e241b0f06000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120500000000000000000000000000000000000000000000000000000000000000000000000006111b262f38424b545d676e7b86929facb9c5d2dfece2d6c9bcafa396897c70695e564c433a30271e150b0200000000000000000000000000000000000000000006131f2c3845515c6773808c96a0abb4bfcbd7dbd7cbc0b5aba29791847a6d665c50443e342b20170c02000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000030f1b26323c4955616c76828f97a2acb6c0ccd8dae4ecf0e3d7ccc0b5aba49f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a9691867d6f675d5145382c1f13060000000000000000000000000000000000000000000005121f2b3744505b657986939facb9c6d2d4c7baada194877a6e6154473b2e2114080f1b27333f4953697683909ca9b6c3cfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000030f1c2936424f5c6975828f9ca8b5c2d0d4c8bdb2a89d9083776b6054483b3025190e00000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7884919ea6b0b9bdbfbfbfbdb9b2a9a0958c7f72685d5245392c201509000713202d3a4653606d79849199a3acb4babfbfbfc0bbb5aea2988d8073665c5044382b1f12060000000000000000000000000000000000000000000000000714212e3a4754616d7a8796a0acbbc4cdcabfb4aba39f989fa3aab4bdc5ced2d5dad5d7d8d9d4d1cdc7c2bbb3ada39c928c7f726c61574d41382d22170b010000000000091623303c4956636f7c8996a2afbcc9d5e2dfd4cbc2bcb8b6b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4aea69e9185786c605346392d2013060000000000111e2b3744515e6a7784919daab7c4d0dccfc3b6a99c908376695d5043343f4a545e686f7c87929fa5afb9c3cdd7d9d0c7bdb3aaa0958b7f7265564c41362a1d1105000000000000000000000000000000000c1926323f4c5965727f8c98a7b1bdc6cac6bfbaaea39991857a6e665c51483e342a20160b02000000030f1c2936424f5c6975828f9caab4bfc7cbc7beb2a8998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000050e19222c363e48505a616a6f7a80878f93999ea1a8a8aaacaeb4aeb5afacaba8aaa39f9c96918b837c726d605d554b433930271d120900000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000000091317222d38414a545c666d79839099a3afbbc7d3e0edeaded1c4b7ab9e91847b6e685e554b433930261d140a00000000000000000000000000000000000000000004101c2834404b55606d79849199a3aebac0c9d3dcd1c7bdb3a9a0968f82786d605a50463d32291e140a000000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000a15202d3944505a616e7b85929aa4afbbc0c8d2dae4ede0d4c7bbafa499938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8a847d6f6b60554b4035291d1004000000000000000000000000000000000000000000000613202d394653606c798698a3aebac7d3d3c6baada093877a6d6054473a2d2114070b17222d43505c6976838f9ca9b6c2cfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000010e1b2834414e5b6774818e9aa7b4c1cdd8cec3b8ab9f95897c6f63564d41362a1c120700000000000000000000000000000000000000000000000000000000000000000004101c2834404b5463707d8a96a0acb8c2c9cecccfc9c3bbb1a79f92857a6d6054473c31261a0e07131f2c38434f5965727f8b96a0abb5bec5cad0d2ccc7bfb4aa9e9185796d6053463a2d2013080000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a8b2bdcdd6d1c6bdb4aeaca4acaeb4bcc6cfcecac8c8c9caced2d3d6d8d3cdc5bebaada49c918a7e70695f53493f33271d12070000000000091623303c4956636f7c8996a2afbcc9d5e4d8cdc2b9b1aba9a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aaa39f948c7f72655b5044372b1f12050000000000111e2b3744515e6a7784919daab7c4d0dcd0c3b6a99d9083766a5d50433c44505c666d7a849199a3aeb7c1cbd5ddd2c7beb5aba2989083786d6053463a3025190d01000000000000000000000000000000000916232f3c4956626f7c8995a0abb4babfbab4aea39f92877c6f685e544a40362d22180e0400000000000c1926333f4c5966727f8c98a3aeb9bbbfbab5aca096897d706356493d3023160a00000000000000000000000000000000000000000000000000000000000007101b242d363e4850585f676d747c82878d9196989b9d9fa2aaa1a1a49f9e9c9a98928f8a847e786f6a625b514b433930271e150b0000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000000000000000000000000000000000000000008121b2527333f49535c666d78828f959fabb5c0cbd7e3efebded2c5b9aca19691837a6d675d554b42382f261b11060000000000000000000000000000000000000000000c18232e3945515d676f7c87929fa4aeb7c1cbd4d9cfc5bbb2a89f948d80746c62584e443b30261c11060000000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000004101c28333e46525e69707d88939fa4aeb6c0c8d2dae4dfd2c6b9ac9f938781828282828282828282828282828281807d796f6b60594f43392f24180c000000000000000000000000000000000000000000000005121f2b3744505b657986929facb9c5d2d4c7bbaea194887b6e6155483b2e221506111d2935404b556a7783909daab6c3d0d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000b1825313e4b5864717e8b97a7b1bcc8d4d4c8bcb1a79b8e8175685e5246392e23180c00000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6675818e9ba8b2bdcad5dad9dad5cdc3baada2978b7f7265574d42372b1e120915222f3b4854606b7784919da8b2bdc7d0d6dbddd7d0c5b9ada197897c706356493d3025190e0200000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbced5d8cfc6bfbab9b1b8babfc6c6c5c1bdbcbbbcbdc1c5c6cad0d7d7d0cabfb6ada39f92857b6e655b5044392f24180c0000000000091623303c4956636f7c8996a2afbcc9d5e0d4c8bcb1a79f9d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a98928d82786d6053493f33271b0f030000000000111e2b3744515e6a7784919daab7c4d0dcd0c3b6a99d9083766a5d504346505a606d78828f96a1abb4bfc9d2dbd8ccc0b6aca39992867c6f665c504438281e130800000000000000000000000000000000000815222e3b4754606a77839099a2aaaeb4aeaba39f918b7e716a60564d42392e241b10070000000000000814212e3b4754616e7a86929fa4acafb4aeaba39a9184786c605346392d2013060000000000000000000000000000000000000000000000000000000000000009121b242d363e464e555d606a6f757b8084888c8e9092989494949993918f8d8a86827d78716c6660585145403931271e150c030000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f120501000000000000000000000000000000000000000000000000000000000000000008111a242d373f44505b656d78818e949fa7b1bdc7d1dce8e4ebe1d5c9bdb2a8a0959083796d675c544a41382d2217130a000000000000000000000000000000000000000007121d2935404b55606a717e8b929ca5afb9c2ccd6d7cdc3bab0a69d928b7e716a60564c42382e23170e0500000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000b17222a36424d57616b727f8c929ca4aeb6c0c8d2dbe0d4c7bbafa4998d8175757575757575757575757575757573706d6660594f473d31271d12070000000000000000000000000000000000000000000000030f1b27333f495f6c7885929fabb8c5d2d5c8bbafa295887c6f6255493c2e23170b13202c3945515d677784919eaab7c4d1d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000815212e3b4854616e7b87959fabb8c6d0d8cdc3b9ac9f92867b6e61544a4034281c100400000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929fabb8c4cedee5e6e5dfd6cabeb3a99d908377695f53473a2d2114091623303c4956636f7c8996a0acbac4cfd9e2e7e8e2d5c9beb3a99a8d807367564c41362a1e110500000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e1d8d1cbc7c5bec5c7c5bebab8b4b0afaeafb1b4b8babfc6ced3dbd6c8bfbaada2979082776c60554b4035291c110600000000091623303c4956636f7c8996a2afbcc9d5ddd1c4b8ab9f95908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8b8680786d665c5041382d22170b000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b6aa9d9083776a5d50434e58616c73808d949fa8b2bdc6d1dbd2c9c0bbafa49a92877d706a5f544a3f3428160c02000000000000000000000000000000000006131f2b37434e58636f7d8792989fa2aaa29f99928b7f736c62584e443b30271c1209000000000000000714202d3946525e68727f8c929c9fa3aaa39f9992887d70665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000009121b242c343c434c51585f62696e74787c7f8183858687878786868482807d7a75706c66605b544e463f352f271f150c03000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000020814212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f13110d0802000000000000000000000000000000000000000000000000000000000007101a232c363f49515b606c77818e939ea6b0b9c2cfd9e0dfd7dedfdacec4bab1a79f958f82796d665c53493f3327251b120900000000000000000000000000000000000000000c18242f39434e58626c73808d939ea7b1bac4ced7d5ccc2b8aea49f92867c6f685e544a3f342820170d02000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000050e1a25303b454f59636d73808d929da4aeb6c0c9d2dbd7ccc0b5ab9d928c7f726c6868686868686868686868686764605c544f473d342b1f150b010000000000000000000000000000000000000000000000000b17222d44515e6a7784919daab7c4d0d7cabeb1a4978b7e7164544a3f34281c1117202d3a4753606d7a86939facb9c6d2d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000714212d3a46535e697683909daab4bfcad6d3c7bbaea3998c8073665c5144382c1f150a00000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8998a2aebac6d3dfecf6f1e6dbcfc5b8aca095887b6e6155483b30251a131f2b37434e586774808d9aa8b2bdccd6e1ebf4f2e6dacfc4b7aa9d918477685e5246392d20140700000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5eae2dcd7d3d2cbc9c0bcb3aeaba7a4a2a1a2a4a8acaeb4bcc1c9d1dad6cabeb3a99f948b7e71675d5145382e23170b00000000091623303c4956636f7c8996a2afbcc9d5dcd0c3b6a99d908382828282828282828282828282828281807e7a736d665c544a3f2f261b1106000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b6aa9d9083776a5d504c555f6a717e8a929da6b0bac4cfd8d3c9c0b7aea49f93887e716b61584e42382e231705000000000000000000000000000000000000030f1b27323d4854606b717e868e92989698928e867f736d635a50463d32291e150b000000000000000005111e2a36414c56636d7380898f92999698928f877f726b61544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000009121a222a313a41454e53575f61676a6f72757779797a7b7a7a79787573706d6763605b54504a423c3429241d150d0300000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000001070d1419212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c21201d19130c07010000000000000000000000000000000000000000000000000000060f19222c353e48515b636d73808d939da5afb8c2cbd4d7d4d2cbd2d3d6d6ccc3b9b1a79f948f81786d655b504440372d241b12080000000000000000000000000000000000000007121d27313c46505a606c77818e959fa8b2bcc5cfd9d4cac0baaea39891847a6e665c50443e33291f1409000000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000009141f29333e47515b636e73808d929da4aeb7c0c9d3ddd2c7bdaea49f93887e716b60585b5b5b5b5b5b5b5b5b5a5753514b423d342b22190d0300000000000000000000000000000000000000000000000000061c2936434f5c6976828f9ca9b5c2cfdacdc0b4a79a8d8174665c5044382e231c212834404b5463707c8999a4afbbc7d4d6cabdb0a3978a7d7064574a3d3124170a00000000000000000005121e2a36424d5765727f8b98a2aebac7d3d7cbbfb5ab9e9185796d6053463c32271b0f0200000000000000000000000000000000000000000000000000000000000004101d2935404b556673808c99aab4becad6e2eefbf7ece1d4c8bcb1a7998c7f7266574d42362a1e15222e3b47545f6a7884919eabb7c3cedee8f3fdf7ebded1c5b8aca095877a6e6154473b2e21140800000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2ede7e3dad0c7beb7afaaa29f9b97959596979b9fa2aaafb7bfc8d1dbd0c5bcb0a69e9185796d60544a3f34281c1003000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7575757575757575757575757575757574716d68605c544b42382e1d140a00000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b7aa9d9084776a5d49535d676e7c86929fa4aeb8c2ccd6d4cac1b7afa59c928c7f726c62594f463c30261c1106000000000000000000000000000000000000000a16202c38434f59616c717b818588898885817b726d635b51483e342b20170c030000000000000000020e1925303b44515b646e737d838688898886827c726d62594f42382d22170b00000000000000000000000000000000000000000000000000000000000000000000000810181f282f353c43474d5355585f6265686a666d6d6e6e6d6c65696763605d5553504a443f382f2b2218120b030000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000040c13181e252a2e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f524538322e2d2a251e18120b03000000000000000000000000000000000000000000000000040d18212b343e47505a626d737f8c929da5afb7c1cad4d1cbc7c5bec5c6cacfd5cbc2b9b0a69e938e81776c605b52493f362d241a1007000000000000000000000000000000000000010b151f2b343e44505b656d79839096a1aab4bdc7d1dcd7cbbfb4aaa1968f82786d60594f453b30251a0f060000000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000020d17212c353f49525c646e73808d929da5afb7c1cad3d9d0c0bbafa49a92867d6f6a5f564d4f4f4f4f4f4f4e4d4a46454039302b2219100700000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cfdad1c4b8ab9e9184796d60544a3f342d2a2c333b45515c6674808d9aabb5c0ccd7d6cabdb0a3978a7d7064574a3d3124170a000000000000000000020e1a25313b4754606d7a86929facb8c2cdd8d1c6b9ada1978a7e7164584e43372b1e130800000000000000000000000000000000000000000000000000000000000006131f2c3945515d677683909da9b6c3d0dbe7f2fefdf0e4d9cdc3b6a99d908376695e52463a2d2016222f3c4955626f7c8896a1acb9c5d2deebf9fff9ede0d4c8bcb1a7978a7e7164574b3e3025190d01000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f1e7ddd1c8beb5aca59d98928e8a8988898a8e92989ea5adb5bfc8d2d7cec2b9ada1978c7f72665c5044382b1f1207000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e716868686868686868686868686868686764615e56514b423930261c0b0200000000000000111e2b3744515e6a7784919daab7c4d0ddd0c3b7aa9d9084776a5d505b656d79849198a2aeb6c0cad4d5cbc2b8afa59d938d80736d625a50473e342a1e150a0000000000000000000000000000000000000000040f1b27323d47505a61696e75797b7c7b79756e69625b514940362d22190e050000000000000000000008141e29323f49525c646b70767a7c7c7b79756f6a625b51473e2f261c1106000000000000000000000000000000000000000000000000000000000000000000000000060d161e242931373c4246484e5355595b545c6061616160605b535a5753514b46443f38332d261d19100701000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000040d161d24293036393b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245413e3a39363029241d150d0300000000000000000000000000000000000000000000010c161f2a333d464f59616c727f8b919ca4aeb7c0c9d3cfc7c0bbb9b1b8babec5cdd4cbc2b8afa59e938d80746e635b51483f362c22190b02000000000000000000000000000000000000030d192227333f49535d676e7a849198a2abb5c0cbd7dcd1c6bcb2a89f948c80736b61574d42362a21180e0300000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000050f1a232d37404a525c646e74808d939da5afb8c2cbd5d8ccc0b6aca39892857c6e695e554c424242424242403d3a38342e271e1910070000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a9b3bec9d5d2c5b9ada1968a7d70665c50443f3836383d454e57606d7985929eabb8c5d2ddd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000914202c3945525d6874818e9ba6b0bbc7d3d5c9beb3a99d9083766a6054473a3025190d0000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c5d2dfecf8fffff5eaddd1c4b8ab9f95877b6e6154483b30251e2b37424d576673808c99a8b2bdc9d5e1edfafffdf0e5d9cec0b4a79a8d817467564c41362a1d1105000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2eadfd5cbbfb6aca39b938e85817d7c7b7c7e81868e939ca3adb6c0ccd6d5c9beb3a99e9184786d6053463a2e23180c000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e71645b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5854524c45403930271e150a0000000000000000111e2b3744515e6a7784919daab7c4d0ddd0c4b7aa9d9184776a5e59606c77818f96a0aab4bfc8d2d5ccc3b9b0a69e938e81746e635b51483e352c22180c030000000000000000000000000000000000000000000a16212b353e4850575f62666d6f6f6f6d67625f57514940372e241b10070000000000000000000000020d17202e37404a52596063676d6f6f6f6d6762605851493f352c1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000040c131920262b31373a3c4347484c4e4b5153545454535350494d4a4745403938332d28221c140b070000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000030c161f282f353b4146474b54616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f524f4e4b4746413a352f271f150c0300000000000000000000000000000000000000000007131d28313c464e58616b717e88939fa3adb6c0c9d2d1c7bdb5afaca4abadb3bbc5d0d4cac1b8afa59d928c80736d625b51483e342a1d140a00000000000000000000000000000000000000071017222d38414b555e686f7c869299a3afbbc0cad3d8cfc4bab0a69f93887d70695e52463f332a1f140900000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000008111c252e38404a525c606c77808e939ea6b0b9c3cdd6d2c7beb4aaa29791847b6e675d544b41382d353534312d2c28231d150c07000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8897a1adb9c6d2d5c9bdb2a99d9083786d605a504a464145464f575f6a737f8c97a1adb9c6d2e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000004111d2935414c56626f7c88949fabb7c4ced9cfc4b7ab9f95887c6f62564c41362a1c110600000000000000000000000000000000000000000000000000000000000a1623303d495663707d8999a3aebbc7d3e0edf9fffff9ece0d4c8bcb1a7988b7f7265564c41362a212d3a46535f697784909daab7c3cedae5f1fdfffff5eaddd0c4b7aa9d918477685e5246392d201307000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2e4d9cec3b9ada49b918b817a74716f6e6f71757a818c919ca4aebac4cedacfc4b9ada1968a7d7064544b4034281c10040000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574f4f4f4f4f4f4f4f4f4f4f4f4e4d4b4746413a342e271e150c030000000000000000111e2b3744515e6a7784919daab7c4d0ddd0c4b7aa9d9184776a57606b727f8c939ea8b2bcc5d0d6cdc3bab1a79f948f81786d605c52493f362d231a100600000000000000000000000000000000000000000000040f19232c363e454d53545c60626362605d55534d453f372e251c120900000000000000000000000000050e1c252e3840474f54555d60626362605c55544e463f372d231a0b0200000000000000000000000000000000000000000000000000000000000000000000000000000001080d151b1f262b2d31373a3c3f424045464748474746443f403d3a39352f2b28221c17110a02000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000b151e28313a41454c5254585a616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5c5c5a5854524c45403931271e150b0000000000000000000000000000000000000000010d18242f3a434e58606a707d87929aa4afb5bfc8d2d7cbc0b5aba39f989fa2a9b3bdc7d2d3cac1b7aea49c928c7f726d625a50463c2f261c1106000000000000000000000000000000000001070c131b262f39434c565f6a707d87929fa4aeb8c2cbd5d6ccc2bbafa49a92857b6e615b51453c31261a0d04000000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000a131c262e384044505b656c78818e949ea7b1bbc4ced7d0c6bcb3a9a1969083796d665c53493f3327282724201f1c18120b0300000000000000000000000000000000000000000000000000000000000613202d394653606c7985929eabb8c4cfdacfc4b8aca0958c7f726c605b54524c51535960696e7c86929fa9b3bec9d5e2d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000010d1924303a47545f6a7683909ca8b2bdc9d5d3c7bcb1a79b8e8174685e5246382e23170b0000000000000000000000000000000000000000000000000000000004101c2834404b546673808c99abb5bfcbd7e3effbfffffcf0e4d8cdc2b6a99c908376685e5246392d222e3b4855616e7b8895a0acb8c5d1e0ebf6fffffff7ebded1c5b8aca095877a6d6154473a2e211408000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2e0d4c8bcb1a79c928b7f746d686462626364686d757f8c929da8b2bdc9d5d5c9bdb2a99b8e8275665c5145382c1f13060000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b424242424242424242424242413e3a39363028231d150c03000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7aa9e9184776b5e69707d87929fa5afbac3ced7cdc4bbb2a8a0958f82796d665c504a40372d241b110800000000000000000000000000000000000000000000000007101a242c333c42474a515355565553514b47423c332d251c130a0000000000000000000000000000000a131c262e353d44484c515455565553514b47433c342d251b1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f141a1e21262b2e2f322e34383a3a3b3b3a3937332d302d2c29241f1c17110b060000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000007121d27303a434b51565e616567686e7a8794a1adbac7d4d1c5b8ab9e9285786b6969686765615e56514b433930271c12070000000000000000000000000000000000000004111d2935414b555f6a6f7c869299a3acb6c0c8d1d5cbc3bbafa399928b9297a2abb5c0ccd7d2c9c0b6aea49b918b7f726c61584e42382d22170b00000000000000000000000000000000030b12181e24292c313b444e58616b727f8b929da6b0b9c3cdd6d8ccc0b6aca1978f82766d62574d42372b1f160c010000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000010a141c2627333f49535b666d78828f95a0a9b2bcc6d0d8cfc5bbb2a8a0958f82786d655b50443f352c22181313100c070000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6674818e9ba8b2bdc9d5d4c8bcb1a79f92877e726c66615e565c60636b707b849198a2aebbc5cfdae6d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000008131e2b37434e5864707d8a96a0acb9c5d0d8cdc2b8ac9f92867a6d61544a3f34281c100300000000000000000000000000000000000000000000000000000006131f2c3845515c6676838f9ca9b6c2d1dce7f3fcfaf9faf5ecdfd2c6b9ac9f93867a6d6154473a2f2a36414d5665727f8c98a7b1bcc8d4e0f2fcfffffff9ede0d4c8bcb1a7978a7d7064574a3d2f24190d010000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2ded1c5b8aca0958c7f736d605d56565556565e616d74808d96a1acb9c4cfdacfc4b8ab9f9285796d6053463a2d2013070000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e353535353535353535353534312e2d2a251e18120b0300000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7aa9e9184776b676e7b859299a3afb7c1ccd5cec5bbb2a9a0969083796d675c544a3f382e251b1209000000000000000000000000000000000000000000000000000008121a212a3137394044464849484745403937312a211b120a01000000000000000000000000000000010a141c232b33383a4145474949484745403937322b221b130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12151b1f21222623282c2d2e2e2e2d2d2b272224201f1d18120f0b0600000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000c18232e39424b555d60686e717475767a8794a1adbac7d4d1c5b8ab9e9285787676767574716d68605d554b42392e23180c000000000000000000000000000000000000000613202c3945515d676e7c859298a2abb5bec7d2d7cdc3b9afa59f92877e859299a4afbbc1cbd5d2c8bfb6ada39f93877e716a5f544a3f33281c0f030000000000000000000000000000070d151d24292f35393a4145474f59626d74808d949ea7b1bbc5ced8d2c7beb3a99f948b7f72695f53463e31281d12070000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000020a1417222d38414a545c666d79839097a1aab4bdc7d2d7cdc4bab1a79f948e81776c605b51473e342a20160c04000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a5463707d8a96a1adb9c5cfd9cdc3bbafa39992877f78716d686b676d70757d849196a1aab4bfcdd7e1e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000020f1b26323c4653606c7884919ea9b3becad6d3c7baaea3988c7f72665c5044382b1f150a0000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929facb8c5d2dfebf4f0edecedf0ede0d4c7bbafa4998b7e7165564c41352d3946525e687683909da9b6c3ced9e5f0f7f6f7f8faf0e5d9cec0b3a79a8d807467564c4135291d11040000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e1d4c8bdb2a89d9083786d605b524c4948494c525b606d7984919ea9b3bec9d5d3c6baaea298897c706356493d3023160a0000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3128282828282828282828272521201e19130c07000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7aa9e9184776b6d79839097a1abb5c0c9d3cfc6bcb3a9a19791847a6d675d554b42382e261c130900000000000000000000000000000000000000000000000000000000080f1820262b2e34383a3c3c3c3a38352f2b2620180f09000000000000000000000000000000000000020a111a21272c2f35393a3c3c3c3a38342f2b272019100900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050a0f12151519181c1f2021212120201f1b17171413100c0703000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000004101c2834404b545d676d747a7e818282828f9ca9b6c2cfdcd2c5b9ac9f92878282828282817e7a746d675d544a4034281c1004000000000000000000000000000000000005121e2a36424d57606d79849197a2aab4bdc6d0d9d0c5bbb1a79e938c7f727d87939fa5afb9c3cdd7d1c8bfbbafa49992877c6f665b5044382b1f1206000000000000000000000000000810191f272f353a4145474c515456585b606d78828f95a0a9b3bcc6d0d9d0c5bbb0a69f92867b6e615a5043392f24180d0200000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000006111b262f38424a545d676e7b859198a2abb5c0ccd7d6ccc3b9b0a69e938d80736d62594f463c32281e150a000000000000000000000000000000000000000000000000000000000000000000000b17222d3a4653606d7884919ea9b3becad6d7cbc0b5aba399928b837e7a797778797d81889196a1a8b2bcc6d0dfe9e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000a151f2b3844505b66727f8b97a2adbac7d1d6cbbfb4aa9e9184786d6053463c31261b0f010000000000000000000000000000000000000000000000000000091623303c4956636f7c8998a2aebac7d3e0ece8e4e0dfe0e4e8e3d7ccc0b5ab9c8f8276685d5245392e3b4754616e7b87939facb9c6d2dfececeae9eaebedf1e9ddd0c3b6aa9d908377685d5245392c2013060000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5ded2c5b9aca096897d70665c5045413c3b3c4146515d67717e8a97a1adb9c6d2d6cabeb4aa998c7f7266594c3f332619080000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e31241c1c1c1c1c1c1c1c1b1a181413110d080200000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7ab9e9184786c74818e959fa9b3bdc7d1d0c7bdb4aaa29791857b6e685e554c433930261c140a010000000000000000000000000000000000000000000000000000000000060e151a1c23282c2d2f302f2d2c29241d1a150e06000000000000000000000000000000000000000000080f161c1e24292c2d2f302f2d2c29231d1b150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809070c1013131415141413120f0b06070604000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000006131f2c3845515c666d7981868b8d8f8f8f949fabb7c4d0ddd3c7bbaea399928f8f8f8f8f8d8b8680796d665c5144382c1f130800000000000000000000000000000000000714202d3a46525e6974818d96a0a9b3bcc6cfd8d2c7bdb3a9a0958e81756d727f8c939ea7b1bbc5d0d9d7ccc0b5aba3999083786c605346392d20130600000000000000000000000009121a222a313940454c5154555d6063646566666d79839097a1aab4bfcbd6d7cdc2baaea2988f82766c61554b4035291e130800000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000a141d262f39424b555e696f7c869299a4afbbc0cad3d5cbc2b8afa59c928b7f726b61584e443a30261c110600000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66737f8c97a1adb9c3cfd8d1c7bdb4aba39f95908b87858485868a8e939aa1a8b2bac4ced8e2f1e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000030f1c28333f4a54606d7a85929fabb5c0cbd7d0c6b9ada1968a7d7064584e43372b1e13080000000000000000000000000000000000000000000000000003101c28343f4a5466727f8c99aab4bfcad6e2e4ddd8d4d2d4d8dde4ddd2c5b9ac9f92867a6d6054473a35414c5665727e8b9aa4afbbc8d4e0e4e0dddddddee1e5ecdfd2c6b9ac9f93867a6d6054473a2d2114070000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5ddd1c4b7aa9e9184786c60544a3f352f2f3036404b55606d7985919eabb8c4d1dbd0c1b5a89b8e8275685b4f422f24190d0100091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180f0f0f0f0f0f0f0f0e0b07070501000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b7ab9e918478717e8b939da7b1bbc5cfd2c7beb5aba29892857c6f695e564c433a30271e140a020000000000000000000000000000000000000000000000000000000000000003090e12181c1f20222322201f1d18120e09030000000000000000000000000000000000000000000000050b1013191d2021222322201f1c18120f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070808070605030000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000713202d3a4653606d79828d92999a9b9c9c9fa6b0bbc7d3dfd7cbbfb5aba39f9c9c9c9c9b9a99928d82786d6053463a2f24190d01000000000000000000000000000000000815212e3b4854616e7b86929fa8b2bbc5ced8d7ccc0b5aba2979083796d606d75818e95a0a9b3bdc7d2ddd2c7bdb4aba0958a7d7064574a3d3124170a000000000000000000000009121b242c343c434b51555d6065676d6f7172727272717b859298a3aebac7d3dfd6cabfb4aa9f948a7e71675d51453a3025190d02000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000020b141d27303a434d575f6a707e87939fa4aeb8c2cbd5d4cac1b7aea49f92877d706a5f564c42382e23170e05000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7a85929ea7b1bdc6d1d9cfc6bdb4aea79f9d9898929192939a9b9fa4acb2bac4ccd6e0e8eee3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000b17222d3845515d6773808d99a3afbbc7d4d5c9bdb2a89c8f82766a5f53473a2f24190d0000000000000000000000000000000000000000000000000006121f2b3844505c6676828f9ca9b5c2d0dbe2d9d2ccc8c6c8ccd2d9e0d3c7bbaea3998b7e7164554b403945525d6876828f9cacb6c0ccd8dfd8d4d1d0d1d2d5d9e0e0d4c7bbafa4998a7d7063574a3d2f24180c0000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d9ccbfb3a6998c8073655b5042382e2422252f3944505c6673808d9aa6b3c0d2ddd0c3b7aa9d9084776a554c4135291d110400091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b02020202020202010000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b8ab9e9185787c86929fa5afb9c3cdd8ccc0b6aca39992867d6f6a5f574d443a31281e150c020000000000000000000000000000000000000000000000000000000000000000000000070c1012131516151413100c070100000000000000000000000000000000000000000000000000000001080d1113141616151413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000003101c28343f4a5465727f8b949fa3aba8a9a9abb0b8c2cdd8e3dcd1c6bdb5aeaca9a9a9a9a8aba39f948b7f7265554c4135291d1104000000000000000000000000000000000c1925323f4c5865727f8b99a3afbac3cdd7d5cbc3bbafa49992857b6e675d606d79839097a2abb5c0ccd7d9d0c6bdb1a79a8e8174675b4e4134281b0e0100000000000000000008111b242d363e464e555d60676d72767a7c7e7f7f7f7f7e7b7c85929facb8c5d2dfdbd0c6bcb0a69e9184796d60564c41362a1e1308000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000020b151e28313b454e58616c727f8c929da6b0b9c3cdd6d3c9c0bbafa39992867c6f685e544a3f342820170d0200000000000000000000000000000000000000000000000000000000000000000b17232e3845515d67727f8c95a0abb4bfcbd7d8cfc6bfbab1abaaaaa29f9e9e9fa4acacafb6bec4ccd2d4d7dde3ebd6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000006111c2935414b55616e7b87929facb9c3ced9cfc4b7ab9f94887c6f62564c4135291b11060000000000000000000000000000000000000000000000000713202d3a4653606d7985929fabb8c5d2ded9d0c7c0bbb9bbc0c7d0d9d7cbbfb5ab9b8f8275675d51453a4754606d7a86929facb9c5d2ddd4cdc8c4c3c4c5c9ced5ded7ccc0b5ab998d807366554b4035291d100400000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d6cbbfb4aa96897d706353493f30261c151d28343f4a5464707d8a97acb6c0ccd8d2c5b8ab9f928578675d5145392c20130600091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c4b8ab9e91857a849198a3aeb7c0cbd4d4c8bbafa49a92877d706b60584e443f38302a211a1209000000000000000000000000000000000000000000000000000000000000000000000000000406070909090706040000000000000000000000000000000000000000000000000000000000000000010406070909090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0d0b08070502000000000000000000000000000000000000030607090c0d0c0a070604000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000006121f2c3844505c667783909da6afb5b5b5b6b7bbc2cad4dee9e3d8cfc6bfbbb9b5b5b5b5b5b4aea69d908477675d5145392c201306000000000000000000000000000000010d1a2734404d5a6773808d9aabb5c0ccd5d7cdc3b9afa59f93877d70695f555d676e7b859299a4afbbc1cbd5d8cfc2b5a89c8f8275695c4f4236291c0f030000000000000000060f1a232d363e4850585f676d737a7f8386898b8c8c8c8b8a888586929facb8c5d2dfe2d7cec2b9ada1968c8073685e52463a3025190d000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000030c161f29333c46505a626d74808d949fa7b1bbc4ced8d7cbc0b5aba29891847a6d665c50443e32291f1409000000000000000000000000000000000000000000000000000000000000000006111c2935414b55606d78839099a3aebac1cad3d8d1cbc3bcb8b6b4aeacaaabacafb6b9bbc0c7c3c2c6c7ccd2d9e2d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000d18242f3a46535e6975828e9ba7b1bcc8d4d3c7bbb0a69a8d8174685d5245382d22170b0000000000000000000000000000000000000000000000000916222f3c4955626f7c8898a2aebac6d3ddd2c7beb6afacafb6bec7d2dcd1c5b8ac9f92867a6d605347404b5564717e8a99a3aebbc7d3d4cbc3bcb8b6b7b9bdc4ccd5ddd2c3b6a99d908376675d5145392c1f130600000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d3c7baaea398877a6d6054473a2d21150c17232e3b4854616e7b879aa4afbbc8d4d3c6baaea298877a6d6054473a2d21140700091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd1c5b8ab9e9285838f96a1aab4bfc9d2dfd2c6b9ac9f93877e716b64605c54504a423c332c241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e111414181919181414110e09020000000000000000000000000000060b10121316191a19161312100c0700000000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000713202d3a4653606d7986939facb9c0c2c2c2c4c7cdd4dce6f0eae1d8d1cbc7c5c2c2c2c2c2bfb8aca095877a6d6054473a2d211407000000000000000000000000000000000d1a2633404d596673808c99aab4bfcbd0cec5bbb1a79e938c7f726b60574d555f69707d87939fa5afb9c3ccd1ccc1b4a89b8e8175685b4e4235281b0f0200000000000000030c18212c353e48505a616a6f797f858b90929997989999989797929298a2aebac6d3e0e9e0d5c9bdb2a89f92857a6d61564c41362a1c11060000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929eabb8c5d1d4c8bbafa49a877a6d6154473a2e211407000000000000000000000000000000040d17212a343e47515b606d78828f95a0a9b3bcc6d0d9d1c7bdb4aaa1968f82786d60594f443b3025190d0300000000000000000000000000000000000000000000000000000000000000000d18242f3a44505c666f7c86929fa5afb8c1c9d5dad7cdc8c4c3bfbab8b7b8b9bbc0c6c8c2bbb7b5b9bbc0c7d0d9d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000007131d2a36424d57636f7c8995a0acb8c5d1d8cdc2b8ac9f92867a6d6053493f33271b0f0300000000000000000000000000000000000000000000030f1b27333f495365727f8c98aab3becad6d8ccc0b6aca49fa4acb6c0ccd8d3c7baaea2988a7d7164554b45515c6775828e9babb5bfcbd7cdc3b9b1abaaaaacb2bac4ced9d2c5b9ac9f92867a6d6053473a2d20140700000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c5b8ac9f928579685d5245392c20130613202d394653606c7986939facb9c6d2d6cabeb4aa94877a6e6154473b2e21140800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd2c6b9ada297928f949fa8b2bcc6d1dbddd0c3b7aa9d90837d7976716d66605c544d453e362d241b120800000000000000000000000000000000000000000000000000000000000000000000030608090c0d0c0b08070502000000000000000000000000000000000000020507080b0c0d0c0b08070502000000000000000000000000000000000000020608080b0c0d0b080705020000000000000000000000000000000000000002080d14191e20212526262521201e1a140d080200000000000000000000020a11171c1f202325262623201f1c18120b030000000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000714212e3a4754616d7a8799a4afbbc7d1cfcfd0d3d8dee6eef8f3eae3dcd7d3d2cfcfcfcfd1c8bcb1a794887b6e6155483b2e221508000000000000000000000000000000000b1824313e4b5764717e8a98a3aebac1c4c3bcb3a9a0958e81756d63594f454d57616b737f8c939ea7b1b9c1c4c2bab0a6998c807366594d4033261a0d00000000000000000a151e2a333e47505a626c717c848c92989c9fa3aba5a5a5a5a9a19e9fa2aab4bfcad6e2efe5dacfc4baaea2988d8073685e5246382d22170b0000000000000000000000000000000000000000000000000000000005111e2b3844515e6b7784919eaab7c4cfd0c6b9ac9f9386796d6053463a2d201307000000000000000000000000000407090a0f19222c353f44505c666d79839097a1aab4bdc7d2d9cfc5bcb2a89f948d80736b61564d42362a1f150b010000000000000000000000000000000000000000000000000000000000000007131d28343f4a54606a727f8b939da6afb7c0c9cfd6d8d4d1d0cac6c5c4c5c6c8cccac2b8b0aba9acafb5bdc7d2d8ccc0b6ac978a7d7064574a3d3124170a0000000000000000000000000000010e1a25313b4854606b7784919daab7c4d0ddd3c6baaea2988c7f72655b5044372b1f15090000000000000000000000000000000000000000000005121f2b3744505b6575828f9ba8b5c2d0dbd4c8bbafa49a939aa4afbbc7d2d6cabfb4aa9b8e8175675c514753606d7985929facb8c5d1d4c8bcb1a79f9d9ea0a8b2bdc9d5d3c7bbaea399897c706356493d2e23180c00000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b8ab9e9185786b564c4135291d1106121f2b3844505b667885929fabb8c5d2dbd0bbaea194887b6e6155483b2e22150800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd6cabeb3a9a29e9c9fa6b0bac4cfd8e2ded1c5b8aca095908986827e78726d665f5750483e362d241a0f0500000000000000000000000000000000000000000000000000000000000000040a0f121515191a19181514120e0903000000000000000000000000000003090e12141518191a19171414110e0802000000000000000000000000000003090e12141518191a181514120e090300000000000000000000000000000000040c13191f252a2d2e313333312e2d2a251f19130c050000000000000000080c141c23282b2d30323332302d2c28231c150c0800000000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000714212d3a4754606d7a8798a2aebac7cbd1cbcccfd4dae2ebf4f2e9e2dbd6d3d2cacacad1cbc7baaea399877b6e6154483b2e211508000000000000000000000000000000000714212e3a4754616d7a86929fa7b0b6b7b6b2aaa2979083796d605b51473d454f59606c77818f95a0a7b0b6b7b7b1a89e94887c6f6255493c2f2216090000000000000006111c26303c454f59626c717e8691969fa2aaacafb5b2b2b2b2b3adabacaeb4bcc6d0dbe7f3ebe0d6cabeb4aa9f92867a6d61544a3f33281c0f03000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8b2bcc3c4beb4aa9e918477665c5144382c1f12060000000000000000000000050b101316161a1c1a2328343f4a545d676e7b859198a2abb5c0ccd7d7cec4bab0a69d928a7d70695e52463e31271d120700000000000000000000000000000000000000000000000000000000000000010c17232e38424e58626d74818e949ea5aeb9bec5cbd0d4d9dbd6d3d2d1d1d2d1cbc1b8b0a69f9c9fa4abb5c0ccd1c8bbafa49a897c6f6356493c30231609000000000000000000000000000003101c28343f4a54616e7a86929facb9c5d2dfd6cabfb4aa9e9184786c6053463c31261a0e010000000000000000000000000000000000000000000613202d394653606c7985929eabb8c5d1d7ccc0b5ab9f9386939facb6c0ccd8d0c5b8ab9f9285796d60534a5464707d8a98a2aebac6d3d1c4b8ab9f95909196a0acb9c5d2d7cbbfb5ab998c807366544b4034281c1004000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7ab9e9184786b544a4034281c1004101d2935404b556b7885929eabb8c5d1d4c8bbaea195887b6e6255483b2f22150800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dddbcfc5bbb3adaba9abb0b8c2ccd6e1eae0d4c8bcb1a7a09d98928f8a847f786e69615a50483e362c21170d0300000000000000000000000000000000000000000000000000000000030a0f151b1f21222526262522211e1a140f0a040000000000000000000003090e141a1e2121242626262421201e19140e090200000000000000000000040a0f151a1e21222526262522211e1a140e080200000000000000000000000000050e161e252930363a3b3e40403e3b3a36302a251e160e0500000000000109111a1e262e34383a3c3f403f3d3a38342e271e1a120a010000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000613202c3945525d687885929facb5bbc0bdbebfc3c9d0d9e2ece9e0d7d0cac6c5bdbdbdbdc0bbb6ac9f9286796d6053463a2d201307000000000000000000000000000000000713202d3946525e6874808d959ea6aaaaa9a8a09892857b6e675d51493f353e44505b656d798390959ea6a9aaaaa79f968f82756a6054473b2e221508000000000000000c17232e38424d57616b717e889298a0a8aeb4b9bbc0bfbfbfbebeb9b8b8babfc6ced8e2edf7f2e7dbd0c5baaea2988c7f72665b5044382b1f1307000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b96a1aab2b7b7b3aca2988d807367544a4034281c100400000000000000000002080d161c20222327292928232e38424c555e696f7c869299a4afbbc2cdd7d6ccc2b8aea49e92857b6e615a5043392f24180c010000000000000000000000000000000000000000000000000000000000000006111c26303c46515b606d78828e939da4adb3babfc6c8cececfd0cfcfd0cac6bfbbb0a69f948f9399a4afbbc1c4c0b9ac9f93867a6d6154473a2e211407000000000000000000000000000006121f2b3844505c66737f8c99a3aebbc7d3e0dbd0c6b9aca0968a7d7063574d42372b1d13070000000000000000000000000000000000000000000915222f3c4855626f7b8897a1adb9c6d2d4c7bbafa4998e828e9aa4afbbc8d4d3c6baaea2988a7d706354505c6674818e9baab4bfcad6d0c3b6aa9d908384919eaab7c4d1dcd1c2b6a99c8f8376665c5145382c1f1306000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c5b8ab9f928578665c5144382c1f1206131f2c3945515d677986929facb9c5d2d7cbc0b5ab94877b6e6154483b2e21150800091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde1d7cdc5beb9b8b6b7bbc2cad4ddddddddd9cec3b9b1acaaa39f9c96918b837b716c615a50483e33291f1409000000000000000000000000000000000000000000000000000000060e151b20262b2e2f323333312e2d2a261f1b150e070000000000000000060e151a1f252a2d2e31333333312e2d2a251f19140d050000000000000000070f161b1f262b2d2e313333322e2d2a261f19140d050000000000000000000000050e17202830353b4246474b4c4c4b4746423b36302820170e050000000009131b232c30383f4446494c4d4c4946444039302c241c130a0000000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000004111d2935414c566875828f9aa4abafb5b0b1b3b7bec7d0dae5e2d7cec5bebab8b1b1b1b0b5afaca49c8f8276675c5145382c1f13060000000000000000000000000000000005111d2a36414c56606d79838f949b9d9d9c9b9691867d6f695f554b403727333f49535d676e7a838f949a9d9e9d9b9590847a6d61584e43372b1f130600000000000003101c28343f4a545f69707d87929aa3aab2babec5c7cbd1cccccfc9c6c5c5c6cad0d6dbe2e6ecf3ece2d6cabfb4aa9e9184786c6053463a2f24180d010000000000000000000000000000000000000000000000000000000713202d3a4653606d79849198a1a9aaaaa9a29a92867b6e6154473b2e23180c000000000000000000050d131921272c2f3034363634302f303a434d57606a707e87939fa6b0bbc5cfdbd4cac0b9ada1978f82756c61554b4035291d120700000000000000000000000000000000000000000000000000000000000000000a151e2b343f44505c666d79818d929ea1a9aeb4b8bcc0c1c2c3c3c2c1bebab5aea69e948f8287939fa7b0b6b7b5afa49d908376685e5246392d20130700000000000000000000000000000713202d3a4653606d7884919eabb5bfcbd7e3e2d5c9bdb2a89c8f8276695f53473a2f24180d0100000000000000000000000000000000000000000c1825323f4b5865727e8b98a9b3bec9d5d2c6b9ac9f93877b87939facb9c6d2d6cabeb4aa9a8e8174665c53606d7985929eabb8c5d0d5c9bdb2a8998c7f818e9ba8b4c1d0dbd2c5b8ac9f9285796d6053463a2d201306000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c6b9ac9f9386796d6053463a2d20130914202d3a4753606d7a8698a3aebac7d3d3c7bbafa399877a6d6154473a2e21140700091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde9dfd7cfcac6c5c2c3c7ccd0d0d0d0d0d0d1d2cbc3bcb8b4aeaca8a19e9590867e716c615a50453b30251a0e050000000000000000000000000000000000000000000000000007101820262b32373b3c3f403f3e3b3a36312b2620191008000000000000070f181f262b31363a3b3e3f403f3e3b3936302a251f170e0600000000000009101921272c31373a3b3e3f403e3b3a36312a251f170e05000000000000000000020b172029323a41464d52545859595854524d46413a322920170b02000007111b252d353e424a5053565859595653514a423e362e251c110800000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000010d19242f3c4956636f7c8893999fa3aba4a5a7acb5bec9d4dfdbd0c5bcb4aeaba4a4a4a4aba39f9a93897d7063554b4034281c100400000000000000000000000000000000010d1925303a45515d676d7a82898e9091908e8a847c6f6b60574d43392f222d38414b555e686e7a82898e9091908e8a837b6e685e52463c32271b0f030000000000010c161f2c3844505c666e7b859299a3acb4bcc3cad0d3d7d1cbc7c5c3c0bfc0c2c5c6cad0d6dbe1e9f2e7dbd0c6b9aca0968a7d7063554b4035291d110400000000000000000000000000000000000000000000000000000006131f2c3845515c666f7c8691969c9d9d9c9792887e71695e52463a2d1c12070000000000000000050e171e252a32383b3d404243413d3c38313b454e58616c73808c949fa9b3becad6dcd5c9beb3a99e948a7e71675d5145392f24180d0100000000000000000000000000000000000000000000000000000000000000030c192228343f4a545c676d78808a92979fa3aaacb1b3b5b5b6b6b5b4b4aeaba39f938f8279808e959ea6aaaaaba39f928a7d7063564c41362a1d11050000000000000000000000000006121e2b37424e5764707d8a96a1adbdc6d1dce7e5d9cec4b9ac9f93877b6e61554b4035291d11040000000000000000000000000000000000000005121e2b37424d576875818e9ba8b5c1cfdad0c3b7aa9d90847783909da9b6c3ced9d0c5b8ab9e9285796d605663707c8997a1adb9c6d2d2c5b9aca096887c7f8b98aab4bfcad6d3c7baaea298897c6f6356493c2e23170b000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d4c8bbafa49a887c6f6255493c31261a1119232f3c4956626f7c8995aab4bfcbd7d2c5b9ac9f9286796c605346392d20130600091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddeae0d8d0cac6c5c3c3c3c3c3c3c3c3c3c4c5c6c8ccc8c6bfbab8b2aca79f9892877e716c61574d42362a22170c000000000000000000000000000000000000000000000000071019222a31373c4347484c4d4c4b4846423b37322a221a120800000000071019212a31373b4246484b4c4d4c4a4746413b36302920170f060000000009121b222b32383c4247484b4c4d4b4846423b36302920170f0500000000000000000a141d29333b444c52565e6164666664615e57524c443b32291d140a00050f19232d373f474f545c606365666563605c5450483f372e231a0b02000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000815222f3b4854606b727f878f92999697989ba3acb7c3cfdbd6cabeb4aaa29f979797979699928f887f726b605443392e23180c00000000000000000000000000000000000008131e2935404b555d686d757d81838483817d796f6a60594f453b31281d262f3a434c565e686d757d81838484827e776e695e564c41342b20150a00000000000007131d2a36414c56606d78839098a2abb5bec6cfd6d9d2ccc7c0bbb9b6b3b2b3b5b8babfc5cad0d7e0e7ede2d5c9bdb2a89b8f8275675d5145392c20130600000000000000000000000000000000000000000000000000000004101c2834404b54606a6f7d848b8f90918f8c857e716c61564d42362a1e0b0000000000000000040d17202930363d4448494d4f504e4a48443d353c46505a606d78828f97a2adbac1ced7dacfc5bbb0a69e9184796d60554b4035291d10040000000000000000000000000000000000000000000000000000000000000000071017232e38424b555c666c737d858d92989da0a7a6a8a9a9a9a9a7aaa29f99928c81796d79838f949b9d9d9c99928c80746b6155443a3025190d01000000000000000000000000000814212e3a47535f6a76828f9ca8b2bdcfd8e3edebe0d4c8bbafa49a8d8074675d5145392c20160b000000000000000000000000000000000000000714212d3a46535f697884919eabb8c4d1dacdc1b4a79a8e81747f8c98a7b1bcc8d4d2c6b9ada197897d7063586774808d9aa9b3becad6d1c4b7aa9e9184777c8898a2aebac7d3d6cabfb4aa998c7f7266544a3f34281c10030000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d8ccc0b6ac988b7e7265574d42362a221d222a36424d5765727f8b98a5b2bed1dcd1c4b7ab9e918478665b5044382b1f120600091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde2d8cec6bfbab8b7b7b7b7b7b7b7b7b7b7b8b9bbc0c7c8cbc7c4bdb9b1aaa29993877e71695e52463e33281c110400000000000000000000000000000000000000000000040e19222b343c43474e53555859595855534d47433c342c241a0f060000040d19222b333c42474d5354575959595754524d46423b322921170c02000007101b242d343d43484d53555859595855534d46413b322921170b0200000000000006111b262f3b454d565e61696e717373716e69615e564d443b2f261b11060b16212b353f49515961666d6f727372706d66615a51493f352c1d140a000000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000007131f2c38434f59626d727c8286898a8a8b919ba7b3bfccd8d3c6baaea298928a8a8a8a8a8986827c726d63594f4430271d1207000000000000000000000000000000000000020c18242f39434c565d606b707477777674716d6760584f473d332a1f161d28313b444c565e616b707476777775716c655e564d443a3022190e040000000000010d18242f3946525e68727f8c95a0aab3bdc7d0d8d8d0c7c0bbb5afaca9a7a6a6a8acaeb4babec5ced5dee7e5d9cec4b9ac9f92867a6d6053473a2d22170b000000000000000000000000000000000000000000000000000000000c18232e39424e58606b6f797e828484827f7a716c615a50443b3025190e00000000000000010c161f29323a41464f54565a5c5c5b56544f4540393e44505c666e7b85929fa5afbcc5d0dbd7cdc1b9ada1978c7f72675d5145392c20150a00000000000000000000000000000000000000000000000000000000000000000006111c263039434b545b606b707a80868c909597999b9c9d9c9c9b9998928e867f786d676d7a82898e9091908d8780776c60594f4432281e13080000000000000000000000000004101d2935404b55626e7b88949fabbac4cfe1eaf4f0e4d8ccc0b6ac9f92857a6d6053473d33271c10030000000000000000000000000000000000000815222e3b4855616e7b8896a1adb9c5d2d6cabfb4aa988b7e717b8895a0acb8c5d1d6cabeb3a99a8d817465606a7884919eabb7c4cfd5c9beb3a99a8d80737985929facb8c5d2dbd0c2b5a89c8f8275665c5044382b1f12060000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5ddd2c2b5a99c8f8276695f53463d342c292c343d46535f6976828f9ca9b6c2cfdccfc2b6a99c8f837669544a3f33281c0f0300091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dddbd0c6bcb4aeacaaaaaaaaaaaaaaaaaaaaabacafb6b8bcc3cccec9c2bcb4aba49992857b6e615a5045392d20150a000000000000000000000000000000000000000000020c16202b343d464e53585f6265666664615f57544e463e362c21180d03010c161f2b343c454d53575e616466666664615e56524d443b33291e140a00040f19222d363f474f54575f6164666665615f57524d443b33291d140a0000000000000b17222d38414d575e686d747b7e7f7f7e7b756d685e564d41382d22170b101c27333d47515b626c70787c7f807f7d79716c635b51473d2f261b11060000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000030f1b27323d47515b626b6f757a7c7d7d7f8b98a5b1becbd8d2c5b8ab9f92867e7e7e7d7d7c7a756f6b635b51473d331e150b000000000000000000000000000000000000000007121d27313a434c52596063686a6a696864605c554e463d352b21180d161f29323b444c52596163676a6b6a6864605b534d443b32291e100700000000000004111d2935404b55616d7a86929fa7b1bcc5cfd9d8cec6beb6afaba39f9c9a999a9b9fa2aaaeb3bcc4ccd5dfe8e0d3c7baaea3998a7d706453493f33271b0f0300000000000000000000000000000000000000000000000000000007121d27303d464f5960676d7275777776726d68615a50483e32291f14090000000000000007131d28313a444c5259606367696967636059514b43393f4a545e69717e8a939ea9b3becad6dfd5c9beb2a99e9285796d6053473c32271b0f030000000000000000000000000000000000000000000000000000000000000000000a151e273139424a505961686d737a7f84878a8d8e8f90908f8e8c8985817b736c665d686d757d81838483807b736c655b50473e3320160c02000000000000000000000000000613202c3945515d6774808d9aa6b0bbccd6e0f3fcf4e8ddd2c7baaea2988b7e7265594f44382c1f14090000000000000000000000000000000000000b1825323e4b5865717e8b98a9b2bdc9d5d3c6baaea298887b6f7784909daab7c3cedacfc4b8ab9e9184786c626f7c8896a1acb9c5d2d2c6b9ada197897c6f7683909ca9b6c3cfdcd2c5b8ab9f9285796d6053463a2d2013060000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5dfd2c6b9ac9f93877b6e61594f463e3935393e464f59616e7b87939facb9c6d2d7ccc0b5ab9a8d8073675a4d402d22170b0000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd6cabfb4aaa29f9d9d9d9d9d9d9d9d9d9d9e9fa4acacb1b9c0c8d5cec6bdb5aba2988f82766c6155493c32271b0f03000000000000000000000000000000000000000008131e28323d464e585f626a6f727372716e69625f5850483e33291f140907131d28313c464e575f61696e71727372716e68615e564d453b30261c11060a16202b343f4850596063696e717273716e69615e564d453b2f261c110600000000030f1b27333f49535e696e7a81878b8c8c8b87817a6e695e53493f33271b0f13202c38444f59626d727d84898b8c8c89847e726d63594f41382d22170b0000000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000a16212b343f4951596063676d6f70717a8794a1adbac7d4d1c5b8ab9e928578717171706f6d6763605951493f352b210c030000000000000000000000000000000000000000010b151f28313a41454f54565b5d5e5d5b5753514b433d342b23190f060d172029323a41464f55565b5d5e5d5b57535049413b322920170d000000000000000613202c3945515d6774808d98a2aeb9c3ced7dbd0c6bcb4aca49f9992908d8c8d8f92989fa2aab2bac4cdd6e1e3d7cbbfb4ab9b8e8174655b5044372b1f1205000000000000000000000000000000000000000000000000000000010b151f2b343d474f555d6065696a6a6965615d5650483e362c20170c03000000000000010d18242f3a434c565e616b7073757674706b605d554b4238424d57616c75818e97a2adbac4ced9dacfc4b9ada1978c7f7265584e43372b1f1306000000000000000000000000000000000000000000000000000000000000000000030c151f272f383f444f565d60686d72777b7e808282838382817f7d79746e69605b565d606b7074777776736e69605b53493f352c210e0500000000000000000000000000000714202d3a4753606d7985929fabb8c2ccdee8f2f9f9eee4d6cabeb3aa9d9184776b6054483b31251a0e010000000000000000000000000000000005111e2a36424d576874818e9ba7b4c1cfdad2c5b8ac9f9285796d73808c99a8b2bdc9d5d2c5b9ada196897c6f6673808c99a8b2bdc9d5d1c5b8ab9e9285796d73808d9aa6b3c0cfdad3c6baaea298887c6f6255493c2d22170b0000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e0d4c8bbafa49a8e81756b60585047454145475058616c75818e9aa4afbbc8d4d4c7bbafa4998a7e7164574b3e312418060000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd3c6baaea298929090909090909090909192939a9da0a7aeb6c0c9d3d0c7bdb3aa9f948a7e7164584e43372b1f130600000000000000000000000000000000000000010d1924303a444e58606a6f767c7f807f7e7b766f6a615a50453b31261a0e0d18242f3a434e5860696e767b7e7f807f7d7b756e695f574d42382e23170b0f1b27323d46505a626b6f777b7e7f807e7b756e685e574d42382d22170b0000000005121f2b3744505b656e7b848e939999999a938e847b6e655b5044372b1f1216222f3b4854606b727f88919698999896918a7f726b6153493f33271b0f0300000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000040f19222d373f474f54555d6062636e7a8794a1adbac7d4d1c5b8ab9e9285786b64646362605d55544f463f372d231a0f00000000000000000000000000000000000000000000030d161f282f353d44484a4e5051504e4a46454039302b2219110700050e17202830353d44484a4e5051514f4a46443f382f2920170e05000000000000000714202d3a4753606d7a85929faab4bfcbd5e0d6cabfb4aaa29a938e8783807f8082858c9298a0a8b2bbc5cfdae6dcd1c4b8ab9e9185786c605346392d20130600000000000000000000000000000000000000000000000000000007121d273139424b51575f6166696b6b6966625f58514c433b32291e150b00000000000004111d2935414b555e686d767d808283817d756d675d544a3f3b45505a616e7b85929fa8b2bdc9d5e0d5c9beb3a99d9184776a6054473b2e22150700000000000000000000000000000000000000000000000000000000000000000000030d151d262d333e434c52565e6165696e717375767676767473706d67615f57504c52596063686a6a6966625f57504941382d231a10000000000000000000000000000007131f2c38434f5965727e8b97a2adbac6d3dfecedecedf0e6dbd0c5b8aca095897d7063574d42362a1d1207000000000000000000000000000000000714202d3a46525e697784919eaab7c4d1dccfc2b6a99c8f8376666f7c8896a1acb9c5d2d5c9bdb2a99a8d8073697784919daab7c4ced6cabfb4aa9b8e817466707d8a97a8b2bdc9d5d6cabeb3aa988c7f726553493f33271b0f0300000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e4d8ccc0b6ac9e93897d706a615a53514c52545a626a707d8a939eacb6c0ccd8d2c6b9ac9f93867a6d6154473a2e2114070000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd2c5b8ac9f92868384848484848484848485868b91959da4aeb7c1ced7d0c5bcb0a69c9083766a6054473b2e2215070000000000000000000000000000000000000004111d2935414c56606a6f7c83888b8c8c8b88827c716c61574d42362a1d13111d2935404b55606a6f7b82878a8c8c8c8a86817b6e695f544a3f34281c10131f2b37434e58626c717d83888b8c8c8b88827a6e695e544a3f33281c0f030000000613202d394653606c778390969fa4abaca49f969082776c605346392d20131e2b37424d5763707d87939aa0a8a6a8a19e93887d70655b5044372b1f120500000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000007101b252d343d43484b515356616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f57575653514b48433d342d251c11080000000000000000000000000000000000000000000000040d161e242933383c3d41444443413e3a38342e271e191007000000050e161e252933383c3d41434444423e3937332d261d170e050000000000000003101c28343f4a5464717e8b98a2aebcc6d0ddddd3c7baaea2989288817b7674737375797f859196a0a9b3bec9d5dedfd2c6b9ada197887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000c18242f39434b545c60696e7376777776736f6a605d554d443b30271d120700000000000613202c3945515d676d7a82898d8f8f8e8981796d665b50443a3e46525e68727f8c96a0acb9c5cfdbdacfc5b8aca095887c6f6255493c2f24180c0000000000000000000000000000000000000000000000000000000000000000000000030b141c2228313a41454c5254575e61646668696a6969686663605d55534d4441454f55565b5d5e5d5a55534d443f382f261b110800000000000000000000000000000a15222f3b4854606b7783909da9b3becad6e2e4e0dfe0e4e8e1d4c8bcb1a79b8f8275695e5346392f24180c000000000000000000000000000000000814212e3b4754616e7b8796a0acb9c5d2d9ccc0b3a6998d8073666a7884919eabb7c4cfdacfc4b7aa9e9184776e7b8895a0acb8c5d1d3c6baaea2988a7d70646e7a8796a1adb9c5d2dbd0c2b5a89b8f8275655b5044372b1f120500000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e8ddd2c7beafa59f92857c706c64605d565d60646c717d86929fa5afbec7d2d7cbbfb4aa9d908376685e5246392d2013070000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8277777777777777777777787a7e838d929da5afbcc5d0d7cec2b7ab9f94887c6f6255493c2f23180c000000000000000000000000000000000000000713202c3945525d686f7c85909598999997948f867e71695f53463a2f241813202c3945515d676f7c858f939a99999999928e847b6e665c5044382b1f1515222e3b4754606a717e88909597999998938f847b6e665b5044382b1f12060000000b1724313e4a5764717d8a959fa8afb5b6afa89f948a7d7164574a3e2e2318212e3a47535f6977839099a4acb2b3b2ada49a9083786c605346392d20130600000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000009131b222b32383940454754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f524a494745403938322b221c130a00000000000000000000000000000000000000000000000000040c131921272c2f303537373635312d2c28231d150c070000000000040c131921272c2f303437383735312d2b27221b140b05000000000000000006121f2c3844505c6675828f9caab3beced7dfd2c6baafa59f92867e746e69676667676d727c849197a1adb9c2cdd8e1d5c9beb3a9978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000004101d2935404b555d666d747b8083848483807c756d675e564d42392e23180c0000000005111e2a36414c56606d79838f949a9c9c9a938f82786c60564c4136414d56606d7984919ea9b3becad6e1d4c8bcb1a79a8d807367554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000020a11171f282f353a4146474d5254575a5b5c5d5d5c5b595653514b46423b353d44484a4e5051504d4847423c332d261d140a000000000000000000000000000006111c2a36414c56636f7c8995a0acbcc5d0dbddd8d4d2d4d8dde4d9cec3b9ac9f93877b6e61554b4035291d10040000000000000000000000000000000b1824313e4b5764717e8a97a8b2bdc9d5d5c9bdb2a8978a7d70646773808d9aa9b3bec9d5d2c5b9aca096887c727f8c99a7b1bcc8d4d2c5b8ac9f9285796d60687884919eabb7c4d1ded1c5b8ab9e9285796c605346392d20130600000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2e4d9d0c1baada29792857d75716d676b686d71767e869298a2aeb7c1d0d9d3c7baaea3988c7f7265564c41362a1e11050000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f83766a6a6a6a6a6a6a6a6a686d7178808d939eaab4becad6d3c7bcb0a69a8d807367554b4034291c10040000000000000000000000000000000000000714212d3a4754606d7a8491979fa7a6a5a69f9992867b6e61554b4135291d1d2935404b55606d798491979fa4aca6aba39f969083786d6053463c32271b1e2a36424d57626f7c87929aa0a7a5a6a59e969083786c605346392d2013060000020f1c2935424f5c6875828f9ba7b1bbc0c0bbb0a69c8f827569544a4034281c222f3b4855626e7b88959fabb5bebfbdb6aca095887c6f6255493c2f22160900000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000109101921272c2f353b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f52453c3a39352f2c272119100a01000000000000000000000000000000000000000000000000000001080d161c202223282a2b2a2824201f1c18120b030000000000000002080d161c202323282a2b2a2824201f1b17110a020000000000000000000713202d3a4653606d7985929facb8c5d0dfd9cec2b6aa9e938a7e716c615e5659555c606a6e7b85929ea6b0bbc7d3dfdacfbfb3a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000006131f2c3945515d676d7880868c8f9191908d8781796e685e544b4034281b11060000000714202d3946525e6874818d959fa6a8a9a59e948b7f72685d5245393b45515c66717e8b97a2adbac6d3dfd9cec3b6aa9d908377675d5145392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000060d161e24293036393b4246484b4d4f4f50504f4e4c494745403936312933383c3d41444443403b3a373127221b140b0200000000000000000000000000000b17232e3946525e6875818e9ba7b1bcced7d9d2ccc8c6c8ccd2d9e0d4c7bbafa4998d8073675d5145382c1f160a000000000000000000000000000005111d2a36414c566774818d9aa7b4c0ced9d2c5b9ada196877b6e61636f7c8997a1adb9c6d2d5c9bdb2a8998c807683909da9b6c3ced7cbc0b5ab9b8f8275675d6875828e9ba8b5c1d1dcd2c6b9ada197887b6f6255483c2f22150900000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2ebe2d6cabeb3a9a197928a827d7a7877787a7e828b9298a2aab4bfc9d3d7cbc0b5ab9f92867a6d6154473a3025190d010000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695d5d5d5d5d5d5d565e61666d75818e98a2aebac6d3d8cdc2b6a99d908376675c5145382c1f1306000000000000000000000000000000000005121e2a36424d576673808d96a1a9b1b3b2b0aba2988e8174675d5145392c201f2c3945515d6773808c96a1a9afb6b3b5afa89f958b7e7164584e43372b1f212d3a46535f6976828f99a3acb1b2b3afa89f948a7e7164574b3e2e23170c000003101c28343f4a546b7885919eabb8c2ccccc2b8ab9e928578665c5144382c1f25313e4b5864717e8b97a7b1bdc7d0c7beb1a7988b7e7265584b3f3225180c00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000070f161b1d242e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382d2c29241d1b160f07000000000000000000000000000000000000000000000000000000000000050b101416171b1d1e1d1b171313100c070000000000000000000000050b101416171b1d1e1e1c1713120f0b0600000000000000000000000916222f3c4955626f7c8898a2aebac6d3e0d4c8bcb1a79b8e81756c615a524d4c4b51575f69707d8a949fabb7c4d0dddbcec2b5a89b8f8275685c4f4235291c06000000000000000000000000000000000000000000000000000714202c38444f59606d79828d92999c9e9e9c9a938e837a6e665c5145382d22170b0000000814212e3b4754616e7a86929fa7b0b5b6afa69f92857a6d6054473d34404b54606d7985929fabb8c5d2dedfd2c5b9ac9f92867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d30363a3b3e40424343434341403d3a38352f2a2621272c2f3035373736332f2e2b262017110a02000000000000000000000000000003101c28343f4a54616e7a86929facb9c3ced9d0c7c0bbb9bbc0c7d0d9d7ccc0b5ab9e9285796d6053473d32271b0f02000000000000000000000000000713202d3946525e687784919daab7c4d0ddd1c4b8ab9e918478695e606c7985929eabb8c5d0d9cec4b7aa9d91837b87939facb9c6d2d4c7bbafa3998b7e71645565727f8c98abb4bfcbd7d5c9beb3a9988b7e7265584b3f31261a0e02000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f4e6dbcfc5bbb3a9a19e948f8a86858485878b8f949fa2aab3bcc6d0dad3c7bbafa3998e8174685e524639291e1308000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5151515151514c52545c616d7a85929fabb8c5d2ded2c5b9ac9f9286796d6053473a2d20140700000000000000000000000000000000000714202d3a46525e697884919ea8b2bcbfbfbdb4aa9f92867a6d6054473a2d21202d3a4753606d7985929fa8b2bbc0bfc0bbb1a79d9184776a6054473b2e22222e3b4855616e7b88949fabb5bebfbfbab0a69c8f827669544a3f34281c10030006121f2c3844505c667986929facb9c5d2d2c6b9ac9f9386796d6053463a2d2026323f4c5965727f8c98a5b2bfd0d9d0bfb3a6998c807366594d4033261a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000040a0f14212e3b4754616e7a8794a1adbac7d4d1c5b8ab9e9285786b5f5245382c1f1d18120f0a040000000000000000000000000000000000000000000000000000000000000000000407090a0e1111100e0b0706040000000000000000000000000000000407090a0e1011110f0b060503000000000000000000000000000b1824313e4b5764717e8a97aab4bfcad6ded1c5b8aca095887b6e615a5046424040454e57616b7683909ca9b6c3cfdcddd0c3b6aa9d9083776a5d50442d22170b000000000000000000000000000000000000000000000000000916232f3c4855616b75818e949fa3abaaaaaca49f959083796d6053493f33271b0f0300000b1825313e4b5864717e8b99a3aeb9c2c1baada2978c7f7266594f43383945515c6774818e9aa7b4c1cddae0d3c7bbafa399897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000001080d13191d20252a2d2e313335363736363533302d2c29241d1a161c202323282a2b2a2722211e1a150b060000000000000000000000000000000006121f2b3844505c66737f8c99a3aebac7d5d2c7beb6afacafb6bec7cfd9d2c7b9ada2978b7e7165594f43382c1f1409000000000000000000000000000714212e3a4754616d7a86939facb9c6d2dbcec2b5a89b8f827568575b6674818e9aaab4becad6d1c5b8aca0958d808d9aa4afbbc8d4d2c5b9ac9f92867a6d6156626f7c8999a3aebac7d3dacfc1b4a89b8e817568574d42362a1e1205000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f7ece1d7cdc5bbb3ada69e9c979792919297979c9fa6aeb3bcc5ced8d5c9beb3a99f92877b6e61564c41362a170d02000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c50444444444441464a525d6874818d9aa7b4c0cddad3c7baaea399887c6f6255493c2f22160900000000000000000000000000000000000815212e3b4854616e7b8796a1adbac4cecfc6baaea3988a7d7164574a3e2e232935404b5564717e8a97a2adbac4ccd1cbc2b8aca095887c6f6255493c312626323f4c5965727f8c98a6b0bdc7d0ccc2b8ab9f928578665c5044382c1f1206000713202d3a4653606d798699a3afbbc7d3d4c8bbafa49a867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adbacedad1c5b8ab9e9285786b5f5245382c1f100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfd0dbddd0c3b7aa9d908477695f53483e3630343c454f5965727e8b98a5b1becbd8ddd1c4b7aa9e9184776b5e493f33271b0f03000000000000000000000000000000000000000000000004111d2935414b5563707d8a939ea6afb5b7b7b6afa79f958c7f72655b5044372b1f120500010d1a2734404d5a6773808d9aabb4bfcccabeb3a99e9184776b6054483b34404b5564717d8a97a4b0bdcad7e3d7cbc0b5ab978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141a1e2021242728292a2a29282623201f1d18120e0b101416171b1d1e1d1a1514120e090300000000000000000000000000000000000713202d3a4653606d7884919eabb4bfcbd7ccc0b6aca49fa4acb5bdc7d1d6cabeb3a99d9083776b6054483b3025190e000000000000000000000000000a1724313d4a5764707d8a9aa4afbbc8d4d7cbc0b5ab998c7f7266595463707d8a98a2aebac6d3d4c8bcb1a79f9386939facb6c0ccd8cfc2b6a99c8f8376685e53606d7986929facb9c5d2ded1c4b8ab9e918478695f53463a2d211407000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2f4ede7dfd6cdc5beb9b0aaa8a9a29f9e9fa2a9a9abb0babec5ced7d4cac2b9ada1978d8174695f53443a3025190500000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5043373737303638414c5664717d8a97a4b0bdcad7d7cbbfb4ab96897c706356493d3023160a00000000000000000000000000000000000916222f3c4955626f7c8895a9b2bdccd6d6cbbfb4aa9a8d817467544a3f34282c3945515d6775828f9ca9b3beccd8dcd4c8bcb1a79a8d807367584e43372b2a36424d576975828f9ca8b5c2cfd9d3c6baada29786796d6053463a2d201307000713202d3a4653606d798693a0b5c0cbd7d8ccc0b6a093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a8b2bdc9d5d1c5b8ab9e9285786b5f5245382c1f12000000000000000000000000000000000000000000000000000000000000020608080b0d0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cdd9dacec1b4a79b8e817468574d42362a2529333e4955626f7c8895a2afbbc8d5ded2c5b8ab9f928578655b5044372b1f120500000000000000000000000000000000000000000000000613202c3945515d6776828f9ca5afbbc0c4c4c0bbb1a79e9184786c605346392d20130600010e1b2734414e5a6774818d9aa7b4c0d1d0c5b9aca096897c6f63564d42363c4955626f7c8895a2afbbc8d5e8dcd1beb1a5988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090e121415181a1c1c1d1d1c1b19161413100c0701000407090a0e1111100d0808060200000000000000000000000000000000000006121e2b37424d5764707d8a96a1adbdc6d1d4c8bbafa49a939aa3abb5c0cbd7cfc5b8aca095897c6f63564d42362a1d1207000000000000000000000004111d2935414c556774808d9aacb6c0ccd8d4c7bbafa399897c70635653606d7985929fabb8c5d1d9cec3bbafa4999399a4afbec7d2d4c8bcb1a7988b7f726556515c677683909da9b6c3d0dcd2c5b9ada196887b6e6155483b2e221509000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2eae3dcd7d3d2cfc9c1bbb7b5b3adabaaabadb3b6b7bbc2cad0d7d4cbc2b8aea49e91857a6d60574d4232281e130800000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5043362a2a252a303c4956626f7c8995a2afbcc8d5dcd1bdb0a4978a7d7164574a3e3124170b00000000000000000000000000000000000815222f3b4855626e7b8895abb5c0cbd7dcd0c3b6aa9d908377665c5044382b2d3a4753606d7a86929facb8c5d0dfe5d9cec3b7aa9e9184776a5f53473a2e2d3a46535e697885929eabb8c5d1ded2c5b9ac9f928679665c5044382c1f1206000713202d3a4653606d798693a0acb9d1dcddd2b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798696a1acb9c7d1d0c4b7aa9d9184776a5e5144372b1e1104000000000000000000000000000000000000000000000000000000030a0f121415181919181514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cddad9cdc0b3a69a8d8073675a4d40312419212e3b4754616e7a8794a1adbac7d4dfd2c5b9ac9f9286796c605346392d20130600000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c1cbd1d2ccc2b9ada197887c6f6255493c2f22160900010e1a2734414d5a6774808d9aa7b3c0cdd4c8bdb2a89a8e8174695e52463e3c4955626f7c8895a2afbbc8d5e2d8ccbfb2a5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f101010100e0d0a07060400000000000000000204040300000000000000000000000000000000000000000000000814212e3a47535f6976828f9ca8b2bdcfd7cbbfb4ab9f93869299a3afbbc7d3d4c8bcb1a79b8e8175695e5246392e23180c00000000000000000000000613202c3945515d677783909daab6c3d2ddd2c5b9ac9f92867a6d6053515c6675818e9baab4bfcbd7d7ccc0b5aba49fa4abb5c0d0d9d1c4b8aca095877b6e61544b556774808d9aa7b3c0cfdad5c9bdb2a8978b7e7164584b3e30251a0e020000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5eae1d8d1cbc7c5c6c8ccc7c3c2bebab8b7b8babec2c4c7cdd6dbd6cbc2b9b0a69d928a7e70685d52453b3120160c0200000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5043362b2b262b2f3c4955626f7c8895a2afbbc8d5d8cbbeb1a5988b7e7265584b3f3225180c00000000000000000000000000000000000814212e3b4754616e7a8799a3afbbc7d3dfd2c5b8ac9f9286796d6053463a2d343f4a5464707d8a98a3aebac7d3e0eaded2c5b9aca096887b6f6255483c312e3b4854616e7b8797a2adb9c6d2ded1c4b7ab9e9184786b544a3f34281c1003000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677884919eabb5c0c5c5bdb3a99c8f8275695c4f4236291c0f0300000000000000000000000000000000000000000000000000040a0f151a1f21222526262521211e1a140e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cddadacdc0b4a79a8d817467554b40352920242f3b4855626e7b8895a1aebbc8d4e0d3c7baaea39886796d6053463a2d20130700000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3aebbc7d7dcddd5c9beb2a9978a7e7164574b3e3124180b00000d1a2633404d596673808c99a6b3bfd0d9cec3b9ac9f92867b6e615a5047464a5463707d8996a3b0bcc9d6e3d8cbbeb2a5988b7f7265584c3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626e7b87939facb9c4cfd3c7baaea3998d8087929facb9c4ced9cdc3b9ac9f92867b6e61544b4034281c1004000000000000000000000714212d3a4754606d7a86929facb9c5d2ddd0c3b7aa9d908477675d514b5464717e8a98a3aebac7d3ddd2c7bdb5afacafb5bdc7d2ddd0c3b7aa9d908377695e534b5764717e8a97a9b2bec9d5dacfc1b4a79b8e817468574d42362a1e11050000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e3d8cfc6bfbbb9b9bbc0c7d0cfcac6c5c4c5c6cad0d0d3d8d7d0cac1b8b0a79f948d80746c61564c41332a1f0e050000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c504338383831373a414c5663707d8a96a3b0bdc9d6d7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000613202d394653606c7986929facb9c5d2dfd3c7baaea398887b6e6155483b2e3844505c6674818e9baab4bfcbd6e3ede1d4c8bdb2a8998c7f7366574d4236303d4a5763707d8a96a9b3becad6dccfc3b6a99c908376695d50432e23170c00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000004101c2834404b556774818d99a3afb5b8b8b4aba1978b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000070e151b20262b2e2f323333312e2d2a251f1a140d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dccfc2b5a99c8f8276675d51453b322d2f36414c5663707d8a96a3b0bdc9d6dfd2c5b9ac9f928679665c5044382b1f120600000000000000000000000000000000000000000000000a1623303d495663707c8996abb5bfcbd7e3e6dacfbeb2a5988b7f7265584c3f3225190c00000b1825313e4b5864717e8b97aab4bfcad6d3c7baaea3988e81746c615a5353535c66737f8c99a6b2bfccd9e4d7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000407090a0f1213131313131313131313131313131313131313131312110f0e0b080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d6774808d9aa4afbbc8d6d2c5b9ac9f92867a828f9ba8b2bdc9d5d3c7bbafa3998c8073665c5145382c1f150a000000000000000000000a1724303d4a5763707d8a99a3afbbc7d4dacdc1b4a79a8e817467554b4754606d7a86929facb9c5d1dcd9d0c7c0bbb9bbc0c7d0d9d5c9bdb2a8998c807366574d4854616e7b8797a1adb9c6d2ddd1c4b7aa9e918477695e52463a2d2014070000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5dcd1c6bdb5aeacacafb6bec5cdd3d3d2d1d2d3d6dbd9d5d1cbc5bfbaafa69f958f82786d605a50443a2f21180e000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c50454545454542474b535d6873808d9aa6b3c0cdd9d7cabdb0a4978a7d7164574a3e3124170b000000000000000000000000000000000006121f2b3844505b667884919eabb7c4d1ded6cbbfb4aa968a7d7063574a3d303a4653606d7985929eabb8c5d0dce7f1e5d9cec3b6aa9d908377695e53463a323f4c5965727f8c98a5b2bfcfdbdacec1b4a79b8e8174685b4e4135281b0600000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000c18232e3b4855626e7b87929fa3abacabaaa2999185796d6053473a2d20140700000000000000000000000000000000000000000000000008101820262b31373a3b3e40403e3b3a36312a261f170f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2becfdadfd2c5b8ac9f92867a6d60574d443c393a4046525e6874808d9aa7b4c0cddaded1c5b8ab9e9285786b5f4a3f34281c100300000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3afbbc7d4dddfd6cabeb3a9978b7e7164584b3e3125180b00000916232f3c4956626f7c8998a2aebac6d3d7cbbfb4aa9d938a7e716c63606061656d7884919eaab7c4d1dde2d5c9beb3a996897d7063564a3d3023170a00000000000000000000040b101316161b1e20202020202020202020202020202020202020201f1f1e1c1a181514120f0a0603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929facb6c0ccd5c9bdb2a89b8e82757d8996a0acb9c6d1d7cbc0b5ab9e9185796d6053463d32271b0f02000000000000000004101d2935404b556673808d99abb5c0cbd7d6cabfb4aa988b7e7165584b45515d6775828f9cabb5c0cbd7e2d9d2ccc7c6c7ccd2d9ded2c5b9aca196887c6f62554946535e697885919eabb8c4d1ded2c5b9aca096877b6e6154473b2e2114080000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d7cbbfb5aba39f9fa4acb3bbc1c7cbd1cfcfd0cfcecec9c7c0bbb4aea59e949083796d665c51483e32281e0f06000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695c5252525252524e53555d656d7a85929eabb8c5d1ded6cabeb3a996897c6f6356493c302316090000000000000000000000000000000000030f1c28333f4a546976828f9ca9b6c2cfdcdcd0bfb2a5988c7f7265594c3f323c4956636f7c8997a1adb9c6d2e2edf6eaded1c4b8aca095877b6e6154483b30414e5b6774818e9aa7b4c1cddad9ccbfb2a6998c7f7366594c403326190d00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000714212e3a47535f69727f8c92999e9f9f9d9892877d70675d5145392c1f1306000000000000000000000000000000000000000000000008111a222a32373c4347484b4c4c4b4846423b36312921181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a9b2bec9d5e0d3c7baaea3988c7f72695e564e4746474b515b616d7a85929fabb8c5d2deddd0c3b6aa9d9083776a5d50442e23170b0000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c1ccd2d2cdc4baada297897c6f6356493c3023160900000713202d3a4653606d7985929facb8c5cfdad1c6bcafa59f92867e75706d6c6d7077808d96a0acb9c5d2dedfd2c6b9ada197887b6e6155483b2e221508000000000000000001080d161b202223282b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272522211f1a15130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f5965717e8b97a2adbec7d2d2c5b9ada1968a7d707884919eabb4bfcbd7d1c7b9ada1978a7e7164584e43372b1e1308000000000000000006131f2c3845515d677683909da9b6c3d1dcd3c6baaea298887b6f625548414b5565717e8b99a3afbbc7d4e0e3ddd7d4d2d4d7dde3ded1c4b7ab9e9184786a5f5347424d576875828f9ba8b5c2d1dcd5c9bdb2a8978a7e7164574b3e3025190d0100000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d3c7bbaea39992939aa2a9afb9babfc1c2c3c3c2c2c0bdb9b5afaaa29f938e827a6d675d544a40362c20160c00000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8376695e5e5e5e5e5e5e575f62676d77818e97a1adb9c6d2dfd2c6b9ada297877b6e6154483b2e2115080000000000000000000000000000000000000b17222d414d5a6774808d9aa7b3c0cddadacdc1b4a79a8e8174675b4e4137434e586773808d9aa9b3bec9d5e2f4f9ece0d4c8bcb1a7988b7f7265564c4136414b556976838f9ca9b6c2cfdcd7ccc0b5ab978a7d7164574a3e3124170b00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57636d727f878d919292908d867e706b60554b4035291d100400000000000000000000000000000000000000000000060f1a232c343c43474e53555859595854534d46423b332a22180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8897a1adb9c6d2dfd6cbbfb4aa9f92857b6e685f58545353555d606d75818e98a2aebac6d3dfdbcec1b5a89b8e8275685b4f4235281c060000000000000000000000000000000000000000000000000713202c3945525d687683909ca5afbbc0c5c5c2bbb2a89f9285786d6053463a2d201307000006121f2c3844505c6675828f9ca9b3bec9d5d8cfc1baaea3989288817c7a797a7d828d929da8b2bdc8d4e1ded1c5b8ab9e928578695f53463a2d21140700000000000000040c131921272c2f30353839393939393939393939393939393939393939393938373634312f2e2b26221f1b16100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000a15222f3b4854606b7783909da9b3bed0d8ccc0b6ac9e9184786c727f8c99a3aebac7d3d5c9beb3a99d9083766a6054473a3025190d00000000000000000714202d3a4753606d7a86929facb9c5d2dfd2c5b8ac9f9285796c6053463a4754616d7a86929facb9c5d2dfece8e3e0dfe0e3e8e2d6cabeb3a99a8d807467584e433f4c5966727f8c99abb5c0cbd7d9cec0b4a79a8d817467564c41362a1d110500000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d2c5b9ac9f92878692979ea5acaeb4b4b5b6b6b6b5b3b2acaba39f98928b81796d685d554b42392e241a0d0400000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f83766b6b6b6b6b6b6b6b6b6a6e7279818e939ea9b3bec9d5ded1c5b8ab9e9285796c605346392d201306000000000000000000000000000000000000061825323e4b5865717e8b98a4b1becedadcd0c3b6a99d9083766a564c413a47535f6a7784919eaab7c4cfdae6f2fcf0e4d9cdc2b6a99c8f8376685e52463945515d677885919eabb8c4d1ded4c7bbafa499887b6f6255483c2f22150900000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000020e1a26313c45515b636d727c8184858584807a706c61594f43392f24180c00000000000000000000000000000000000000000000030e18212c353e464e53585f6265666664615e57534d453c342a20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697885919eabb8c4cfdadcd0c6baada29790837a6f6a6361606062676d747f8c939eaab4becad6e2d6cabeb3a9998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000004111d2935414c5663707d8a939ea6afb5b8b8b7b0a9a0968c8073665c5044382b1f1206000003101c28343f4a5464717e8a97a1adb9c4cfdad6cbbfb4aaa39a938e898686878a90949da4aebac3ced9e2d6cabeb3a99b8e827568574d42362a1e1205000000000000040d161e242932383b3d4245464646464646464646464646464646464646464646454442413e3b3a37312e2b27201c170e0903000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c56636f7c8995a0acbcc5d0d4c8bbafa49a8c8073666d7a86929facb9c3ced9cfc4b8ab9f95897c6f62564c41362a1c1106000000000000000a1623303d495663707c8999a3aebac7d3dccfc2b6a99c8f8376665b50443946525e687683909ca9b6c3cdd9e4f0f0edecedf0ecdfd2c6b9ada297897c706356493d3c4956636f7c8999a3afbbc7d3ddd0c4b7aa9d918477685e5246392d20130700000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e91847d858f939b9fa3aaa7a9a9a9a9a8a6a8a09e99928e867e756d675d564c433a30271c11080000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dccfc2b6a99c8f8278787878787878787878797b7f848e939ea5afbbc5cfdad7cbc0b5ab9c8f8275655b5044372b1f12050000000000000000000000000000000000000916232f3c4956626f7c8995a8b2bdc9d5ded2c5b8ab9f928578685e52463c4855626f7b8896a0acb9c5d2e1ecf7fff5ecdfd2c5b9ac9f92867a6d6154473a4754606d7a8797a1adb9c6d2dfd2c6b9ac9f9386796d6053463a2d20130700000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000915202a333f49515b636a6f7477797877736e68615a50473d31271d12070000000000000000000000000000000000000000000009151f2a333e474f585f626a6e717373716e69615f574e463c32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576875818e9ba9b3bec9d5e1d6cabeb3a9a09590847c75706d6c6d6f7379808c919ca5afbcc5d0dbdfd3c6baada297897c6f6356493c30231609000000000000000000000000000000000000000000000000010d19242f3a4855616b75818e949fa4ababacaaa69f969184796d60544a3f34281c10030000000c17232e3a4753606d7985929ea8b2bdc9d5dcd0c6bcb4aca49f9b96999399979c9fa6aeb6c0ccd5e0dbd2c6b9ada2978a7e7164574a3e31261a0e020000000000030d161f282f353d4448494e5153535353535353535353535353535353535353535252514f4d4b4847433c3b37322d28221a150e06000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3946525e6875818e9ba7b1bcced7d2c6b9ac9f93877b6e616875818e9ba8b2bdc8d4d4c8bcb1a79b8e8174685e5246382e23170c00000000000004101c2834404a546673808c99abb4bfcbd7d9ccc0b3a6998d807366544a3f36414c5665727f8b98a7b1bcc8d4e0ecf9f9f9f9f8ebded1c5b8ab9e9285796d6053463a3a4753606d7a86929facb9c5d2dfd2c6b9ac9f93867a6d6154473a2e21140700000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184777a82898f9298999a9c9c9d9c9b9a9896918c87817a716c605c554c443a31281e150b000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd2c5b9ac9f92878485858585858585858586888c91969ea5afb7c1cdd7ded3c7bbafa3998b7e726553493f33271b0f030000000000000000000000000000000000000714212d3a4754606d7a8796a1acb9c5d2ded3c6baada297877a6e615447414d5666727f8c99a8b2bdc8d4e1f3fdfff9ede0d4c7bbafa3998b7e7164554b404955626f7c8895a9b2bec9d5ddd1c4b7aa9e918477675c5145382c1f130600000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000000030e18212d37404951585f62676b6c6c6a66615e5650473e352b1f150b01000000000000000000000000000000000000000000020e1a26313c454f59616a6f767b7e7f7f7e7b756e695f584e443a3024190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4a5764707d8a97a1adb9c5cfdbdbcfc5bbb1a7a0969187817d7a797a7c7f848d929ca3adb7c1ced7e2ded2c5b8ab9f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000008131e2c38444f59606d79828d93999d9f9f9e9b948f847b6e675d5142382e23170b0000000006131f2c3845515d67737f8c96a1adb9c0cbd4d8cec6beb6afaca8aba49fa4aba9abb0b8c0c8d2dedcd5c9beb2a99e9285796d6053473a2d2014090000000000010b151f28313a41454f54565b5e5f6060606060606060606060606060606060605f5f5e5d5c5a5855534e4947433d39332b261f180f09000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616d7a86929facb9c3cdd6cabeb3aa9c8f8376695f63707d8996a0acb8c6d0d8cdc2b9ac9f92867a6d61544a3f34281c1003000000000006121f2c3844515c6676838f9ca9b6c2d1dcd5c9bdb2a8978a7d7064574a3d303b4854616e7b8795a0acb8c4d1deeaf6fffffbefe3d6cbbfb4aa9b8e8174665c5044383945515d677783909daab6c3d0ddd4c8bbafa49a8a7d7064574a3d2f24180d01000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776e757c8286898c8e8f90908f8f8d8b8884807b746e68625a514b433a32281f160c03000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd3c7baaea39992919191919191919191919299989ea1a9afb7c1c9d3dfd7ccc0b5ab9f92867a6d6154473a2d22170b000000000000000000000000000000000000000613202c3945515d677884919eabb7c4d1ded6cabeb3a996897c7063564946525e687683909da9b6c3ced9e5f1fffffcefe3d7cbc0b5ab9c8f8275675d51454b5764717e8a97a4b1bdcfdadbcec2b5a89b8f827568554b4034281c100400000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000000060f1c252e3740464e53555a5e5f5f5d5a54524c443e352c231a0d030000000000000000000000000000000000000000000006121e2b37424d57616b707c83888b8c8c8b87827b6f6a5f564c41352920150900000000000000000000000000000000000000000000000000000000000000000000000000000000000913202d3a4653606d7985929ea9b3becad6dfd7cdc3b9b1a8a099938e8a878686888c91979da4adb5bfc9d3e0ded3c7bcb0a69b8e8174665c5145382c1f13060000000000000000000000000000000000000000000000000001101c28333e45515d676d7981878d919292918e89827b6e695f554b4130261c11060000000004101d2935404b55606d7984919ea5afb9c2cbd4d8d0c7c0bbb9b4b5afacafb5b6b7bbc2cad2dadcd4cac2b9ada1978c7f73675d5145382c1f1306000000000007121d27313a434c51596063686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a696764625f5856544e49443e37312a211b120a0100000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66727f8c99a3aebac7d5d3c6baaea2988b7e716457606b7784919daab4bfcbd6d3c7baaea3988c7f73665c5044382c1f150a00000000000713202d3a4653606d7985929facb8c5d2dfd2c5b9ada196877a6e6154473b2e3a46535e697783909daab6c3ced9e5f1fdfff9ece0d3c7baaea3988a7d7064544a3f3435404b556774818d9aa7b4c0cfdad8ccc0b6ac9a8d807467554b4135291d1104000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b6b6f757a7d7f818283838382807e7b77736e69615e5650454039312820160d0400000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddd7cbbfb4aba39f9e9e9e9e9e9e9e9e9e9e9fa3ababadb2bbc1c9d3dbd8cec6bbafa4998e8175685e5246392d1b11060000000000000000000000000000000000000004111d2935414b556975828f9ca8b5c2cfdbdbcfbeb1a5988b7e7265584b4754616e7b87939facb9c6d2dfecf6fffffff4e8dcd1c5b8ac9f92867a6d6053474d596673808c99a6b3bfccd9d9ccc0b3a6998d8073665a4d402e23180c0000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000000000a131c252e343c4347484e515252514d4746413b322c231a110800000000000000000000000000000000000000000000000814212d3a47535f69707d86909498999997938f857c6f685d52453c31261a0f030000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c66737f8c97a2adbac2cdd6dfd5cbc3bab2aba49f9b9699939995999ea1a9aeb6bfc7d1dbe0d5ccc4b7ab9f94897c6f63544b4034281c100400000000000000000000000000000000000000000000000000000b17212935404b555d676d747c8084858584817d766e695f574d433a2f1e140a0000000000000c18242f3945515d67707d8a939da7b1b9c3cbd6d9d2ccc8c6c1c0bbb9bbc0c3c4c7cdd4dcdbd6cac2b8aea49e91847a6d60554b4035291d100400000000000c18232f39434c555d606b70757879797979797979797979797979797979797979797978777574716e6a67626058555047423c332d241c130a0100000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7884919eabb4bfcbd7d2c5b8ab9f9285796d60535965727f8c98a3aebac7d3d7cbbfb4aa9e9184796d6053463c31261b0f0100000000091623303c4956636f7c8998a2aebac6d3ded1c4b7ab9e918478695e52463a2d36424d5766737f8c99a8b2bdc8d4e1edfafff8ebdfd2c5b8ac9f92867a6d6053473a2e2f3e4b5864717e8b97a9b3bec9d5ddd2c3b6aa9d908377675d5145392c201306000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b6063676d707374767676767573716e6966615e57524c443f342f271f160e040000000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dddcd1c6bdb4aeacababababababababababacaeb5b8b9bdc4cdd3dbd7cfc6bcb2a89f93877c6f62564c41362a1d0a0000000000000000000000000000000000000000010d18242f404d5a6673808d99a6b3c0d1dcdacdc0b3a79a8d8074675a4d4b5565717e8b9aa4afbbc8d4e0edfaf6f5f6f9ece0d3c7baaea3988a7d7164544a4e5b6875818e9ba8b4c1cedbd7cbc0b5ab978a7e7164574b3e312418070000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000010a131c222a31373a3c4144464544403b39363029201a1108000000000000000000000000000000000000000000000004111d2935414c56616e7b8692989fa6a6a6a69e9791847a6d60584e43372b1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54606d7a85929fa6b0bbc5ced8ddd5ccc3bdb5afaca8aba49fa4aba6abadb2bbc0c8d1d9e0d7cec4baafa59c9083766b605442392e23180c000000000000000000000000000000000000000000000000000000050d18242f39434b555c606a6f747778797774706b615e564d453c31281d0c0200000000000007121d2935404b55616c74818e959fa7b1b9c1cad0d7d8d4d2d2ccc7c6c7ccd2d0d3d8ddd8d0cac0b8b0a69d928a7e71675d5143392f24180c000000000004101c2934404b555d676d757d8184868686868686868686868686868686868686868685858482807e7b78746f6a64615a534d453f362e251c130a0000000000000000000000000000000000000000000000000000000000000005121e2b37424d5764707d8a96a1acbdc6d1d4c8bcb1a79a8e8174675d5154616d7a86929facb8c3ced9d1c6b9ada1968a7d7164584e43372b1d120700000003101c28343f4a5466727f8c99aab4bfcad6dbcec1b5a89b8e827568564d42362a313c4855626f7b8896a0acb9c5d2deebf7fcf0e3d7ccc0b5ab9c8f8275675d5145392c2e3b4855616e7b8897a1adb9c6d2dfd2c5b9ac9f92867a6d6054473a2d211406000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e555d6063666769696a69686765625f5754524d46413b3229231d150d04000000000000000000000000091623303c4956636f7c8996a2afbcc9d5d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0dde2d8cfc6bfbab9b8b8b8b8b8b8b8b8b8b8b9bbbfc4c5c9cfd6dcd7cec5bcb4aaa0968d80746a5f53443a3025190d000000000000000000000000000000000000000000071824313e4b5764717e8a97abb5bfcbd7dccfc2b5a99c8f827669554b515d6775828f9cacb6c0ccd8e4f0ebe9e8e9ebefe3d6cbbfb4aa9b8e8175665c514d566a7783909daab6c3d0ddd4c7bbafa399887c6f6255483c2f2215090000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000000000000010a101820262b2e2f3438393937332e2d2a251e170e080000000000000000000000000000000000000000000000000713202c3945525d6875828f98a2aab0b2b2b0a9a1968e81746a5f53473b31251a0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945525d68727e8b949fa9b3bcc6cfd7ded5d0c7c0bbb9b4b5afacafb5b2b8b9bec4cdd2dadfd7cec5bcb2a89e93897d6f63594f4330271d12070000000000000000000000000000000000000000000000000000000007121d283139434b51585f62676a6c6c6b68636059524d443c332a1f160c00000000000000010d18242f3a43505a606d798390959fa7afbabfc5cbd1d5daddd7d4d2d4d7dddedbd6d2ccc5bebaafa69f948d80746c61554c4131271d1207000000000006131f2c3845515c676d7981898e9192999393939393939393939393939393939399929291908f8d8b8884817c77706c625f57504840372e251c12090000000000000000000000000000000000000000000000000000000000000714212d3a46535f6976828f9ca8b2bdcfd8d1c5b8aca095897c6f62554b525d6875818e9ba7b1bcc8d4d5c9bdb2a89c9083766a5f5347392f23180c00000006121f2c3844505c6676828f9ca9b5c2d0dbd7cbc0b5ab988c7f7265594c3f30252e3a47535f6a7784919eaab7c4cfdae6f1f9ede0d4c7bbafa4998b7e7165554b4035292d3a47535f697885929eabb8c5d1ded4c7bbafa399897d706356493d2e23170b000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e4c515456595b5c5d5d5c5c5a5855534d4846423b3630292018120b0300000000000000000000000000091623303c4956636f7c8996a2afbcd1dcd7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919daab7c4d0ddeae1d8d1cbc7c5c4c4c4c4c4c4c4c4c4c4c5c7cbd1d2d5dad6d1cbc3bcb3aaa29891847a6d60584e4332291e13080000000000000000000000000000000000000000000915222f3c4855626f7b8899a3aebbc7d3ded1c4b7ab9e918478675d5153606d7a86929facb9c5d2dde8e3dfdddcdddfe3e7dcd0c5b8ab9f9285796d6053525e697985929facb8c5d2dfd2c5b9ac9f9286796d6053463a2d2013070000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f2122272b2c2c2a2721201e19140d05000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929faab4bcbfbfbbb2a89f92877b6e62574d42362a1e13080000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414c56606c78829097a1aab4bcc5ced7dcd9d2ccc7c6c1c0bbb9bbc0bfc4c6c9cfd6dfdcd7cdc5bcb4aaa0968e81746b6054473d321e150b0000000000000000000000000000000000000000000000000000000000010c161f28303940454e53555a5e5f5f5e5b56554f46423b322a21180d04000000000000000007131d28313e45515c676d7a8390959ea5aeb4bbc0c7c9cfd1d2d3d7d8d4d2d1d0cac7c0bbb4aea59d948f82786d605a50433a2f1f150b010000000004101d2935404b55606d79828e939b9e9fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9c9a9796918d89837d766e69625a524940372e241b0f060000000000000000000000000000000000000000000000000000000004101c2834404b54616e7b87939facb9c4ced7cbbfb5ab9d9084776a6054434c56636f7c8995a0acb8c6d0dacfc4b7ab9f94887c6f62554b4034291c100400000713202d3a4653606d7985929facb8c5d2dfd4c7bbafa399897c6f6356493c30232b37434e586773808d9aa9b2bec9d5e1eef9ecdfd2c6b9ac9f93867a6d6154473a2f242b37424d576975828f9ca8b5c2d2ddd7cbc0b5ab998c7f7366544a3f34281c10030000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5145474a4c4e4f5050504f4d4b4847423c3a36302a251e170e070100000000000000000000000000000916232f3c4956626f7c8995abb5c0cbd7d7cabdb1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000111e2a3744515d6a7784909daab7c3d0dcdcdcdcdcd7d3d2d1d1d1d1d1d1d1d1d1d1d2d3d7dcd7d3d0cbc6bfbab1aaa29892867c6f685d52463c3120170c020000000000000000000000000000000000000000000713202d3a4653606d7986929facb9c5d2dfd2c6b9ac9f93867a6d60535464717d8a98a3aebac7d3e4ded8d3d0cfd0d3d8dedfd3c6baada297897d70635354616e7a8798a2aebac6d3ddd0c4b7aa9d918477675c5145382c1f13060000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d201300000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f1215151b1e1f1f1e1a1414110d08020000000000000000000000000000000000000000000000000000091623303c4956636f7c8999a3afbcc5cecdc4bbafa3998e8174695e53463a2f24190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000d1924303a44505b666e7b859298a2aab3bcc3cbd1d7ddd7d4d2d2ccc7c6c7ccd2d1d2d5dadcd7d1cbc3bbb3aaa29891847a6d60594f44342b210c03000000000000000000000000000000000000000000000000000000000000040d161e272e343c4347484d515252514e4a48443d36302920180f06000000000000000000010c161f2834404b555d686d7a838f939fa2aaafb5b9bec2c4c5c7cbccc8c6c4c2bebab6afaaa29f938e82796d665c51483e31281e0d03000000000006131f2c3945515d6773808d959ea5abacaeb4acacacacacacacacacacacacacacb5afacacabaaa8a7a8a19e9a95908a827b716c635c524940362d21180e0300000000000000000000000000000000000000000000000000000006131f2c3845515c6673808d9aa4afbbc8d6d3c7bbaea3998c7f7265584e434854606b7783909daab4bfcad6d3c7bbb0a69a8e8174675c5145382c1f130700000916232f3c4956626f7c8998a2aebac6d3dfd2c5b9ac9f92867a6d6053473a2d2026313c4956626f7c8997a1adb9c6d2dfebf7e9dccfc3b6a99c908376685e5246392d1d2631404c5966737f8c99abb5c0ccd7dcd1c2b6a99c8f8376665c5044382b1f12060000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e51443a3d40414343434342403e3b3a37312d2a251f19140d05000000000000000000000000000000000815222f3b4855626e7b8899a3afbbc7d4d5cabeb3a9968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000000000000101d2a3643505d697683909ca9b6c2cccfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfceced1cbc7c5bfbab4aea8a09892867d706a5f564c41342a200e050000000000000000000000000000000000000000000006131f2c3845515c667784909daab7c3d0ddd4c8bbafa49a887c6f62555c6674818e9baab4bfcbd7dcd4ccc7c3c2c3c7ccd4dcd6cabeb3a99a8d8174655b5663707c8996aab4bfcad6dbcec1b5a89b8e827568554b4034281c10040000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090e111312110d08070501000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996aab4bfcad6d7cbc0b5ab9f92867b6e61564c4135291d12070000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28333f4a545e696f7d869298a2a9b1bbc0c7ccd2d5daddddd7d4d2d4d7dddedcd9d4d1cbc6bfbbb1a9a29892867c6f685d52473d3222190f0000000000000000000000000000000000000000000000000000000000000000040c151d232831373a3c4144454644413d3c38332a251f170e060000000000000000000000040d18232e39434c565e686d79818b92989fa3abadb2b5b7b9bbbfc0bbb9b8b6b3adaca49f98928b81786d675d544b40362c1f160c0000000000000714202d3a4753606d7986929fa7afb7b9babfb9b9b9b9b9b9b9b9b9b9b9b9b9b9c0bbb9b8b8b7b5b3b2adaba7a09d9490867e736e635c52483e332a1f15090000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eacb6c0ccd8d2c5b9ac9f92867a6d6154473d434f5965727f8b98a2aebac6d3d8cdc2b8ab9f9285796d6053473a2e23180c00000c1926333f4c5966727f8c99aab4bfcad6ddd0c3b7aa9d908377675d5145392c20202d394653606c7884919eabb8c4cfdbe6ede0d4c8bcb1a7988c7f7265564c41362a1d23303d495663707d8999a4afbbc7d4dfd2c5b8ac9f9285786d6053463a2d2013070000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e514438303334363637363534322f2e2b26201e1a140e080200000000000000000000000000000000000714202d3a4753606d7a86929facb9c2c8c9c4b9ada297887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa6b0bac1c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1bfbfbab9b4aeaba39f9591867d706b60584e433a2f22180e000000000000000000000000000000000000000000000004101c2834404b546875828e9ba8b5c1cedbd8ccc0b6ac978a7e716457606d7985929eabb8c5d1dcd4cac2bbb7b5b7bbc2cad4dbd0c4b8ab9e9184786c605865727e8b98a5b1bed0dbd9ccbfb2a6998c7f7366594c402e23180c000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8898a2aebac7d2dcd1c7bbafa3998d8073685d5245392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000020b17222d38424d56606b707d869297a0a7afb5bbc0c7c9cfd0d2d3d6dbd8d4d2d1d0cec8c7c0bbb5aea7a09792867d706a5f564c41352b211007000000000000000000000000000000000000000000000000000000000000000000030b121820262b2e2f343739393835302f2c272119140d050000000000000000000000000007121d27303a444c565e676d757f868e92999ea1a9a8aaacaeb5b6afacaba9a9a29f9a938e867e746d665d554b42392e241a0d040000000000000a1724303d4a5763707d8a98a2aeb9c1c5c7cbd1c6c6c6c6c6c6c6c6c6c6c6c6d1cbc7c5c5c4c3c2c0bdb9b7b1aca69f98928b80736e635a50453c31261a0e050000000000000000000000000000000000000000000000000004111d2935414c5664717d8a97a1adbec7d2d5c9bdb2a99b8f8275685e5246393d4754606d7a86929facb8c3cdd9d3c6baada2978a7d7164544a4034281c1004000f1c2835424f5b6875818e9ba8b5c1d0dbdacdc1b4a79a8e817467554b4035291d1f2b3744505b6574818d9aa9b3becad6e2eaded1c5b8aca095887b6e6155483b302519212d3a4754606d7a86939facb9c6d2dfd3c6baaea298887c6f6255483c2f2215090000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b2628292a2a2929272522211e1a15120e0903000000000000000000000000000000000000000613202c3945515d677683909da6b0b8bdbeb9b2a89e9285786c605346392d201306000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d89949fa8afb4b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b5b4b3b4aeacaaa39f99928d837c706b60594f463c31281e10060000000000000000000000000000000000000000000000000c18232e404c5966737f8c99a6b2bfd0dbddd2bfb3a6998c8073665963707c8997a2adb9c6d2d6ccc2b8b0aba9abb0b8c2ccd8d2c5b9ada196897c6f625a6773808d9aa6b3c0cdd9d6cabfb4aa978a7d7064574a3d31241707000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000000000000000001040707090a0b0c0c0b0b0907070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929facb6c0ccd8d7cbc0b5ab9f92857a6d60554b4034281b11060000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b444f59616b707d8590959fa3abafb5b9bdc1c3c5c6cad0ccc8c6c4c3c1bdb8b5afaba39f9590857d706b60584e433a2f23190f000000000000000000000000000000000000000000000000000000000000000000000000070c151b1f2122272b2c2c2b282323201c160e09020000000000000000000000000000000b151e28323a444c555d606d727b81878d9197999c9e9fa3aba1a49f9e9c9997928d87817b716c605c544b433930271d1208000000000000000c1925323f4c5865727f8b98aab4bfcbd2d3d7dcd2d2d2d2d2d2d2d2d2d2d2d2dcd7d3d2d2d1d0cfcfc9c5c3bcb8b0aaa29f928c80736c61574d42372b21160b000000000000000000000000000000000000000000000000000713202c3945525d6875828f9ca9b3bed0d9d2c5b9ada1968a7d7063564c41363945525d6874818e9ba7b1bcc8d4d6cabeb3a99b8e8275665c5144382c1f120600111e2a3744515d6a7784909daab7c3d0ddd6cabeb3aa988b7e7165584b3e2f24181b27333f495363707d8997a2adbac6d3dfeaddd0c3b7aa9d908477695f53463a2d1e13202c3945515d677784909daab7c3d0ddd6cabfb4aa978a7e7164574b3e3124180b0000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e1b1c1d1d1d1c1a181514120e09050200000000000000000000000000000000000000000004111d2935404b5564717e8b949fa6acb2b3ada8a1968d8073655b5044372b1f1205000000000000000000000000000000000000000000000000000000000916222f3c4854606b768290969ea5a8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a8a7a6aba39f9c98928e8680796f6a60594f473d342a1f160c00000000000000000000000000000000000000000000000000071724313d4a5764707d8a97aab4bfcad6dbcec1b5a89b8e827568586774808d9aa9b3becad6cec4bab0a69f9c9fa6b0bbc7d3d5c9bdb2a9998d807366586975828f9ca8b5c2cfdbd3c7baaea298887b6e6255483b2f221508000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d2013000000000000000000000000000000010407080d11131416171819191817161413110d0806040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6774818d9aa4afbbc8d4dcd1c7baaea2988c7f72675c5145382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323d464f59616b707c838d92999fa4abadb2b5b7b8babfbac0bbb9b8b6b4b2acaba39f99928d837b706b60594f463c31281e110700000000000000000000000000000000000000000000000000000000000000000000000000040a0f1215151a1e1f1f1e1b171614100b050000000000000000000000000000000000030c162029323a434b515b62686e747b8084898c8f91929994949a93918f8d8985817b746e69625a514b423931271e150b00000000000000000d192633404c5966737f8c99a6b2bfd0d9e0e3e7d7d1ccc8c7c6c6c6c6c6c6c6c6c6c7c8cacdd2d3d6d5d2cdc8c2bcb4aea49c928b7e71695f53473d33271c10020000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c5cfded1c4b8ab9e9184796d6053463a3035414c56626f7c8995a0acb8c5cfdbd0c5b8ac9f9285796d6053463a2d20130700121f2b3845525e6b7885919eabb8c4d1ded3c6baaea298887b6f6255483c2f221517222d3a4653606d7985929fabb8c2d0d9e0d4c8bcb1a7998c807366574d42362a1e111d2935414b556774818e9aa7b4c1cdd9dbd0bfb2a5988c7f7265594c3f3226190c0000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e11101010100f0d0b08080602000000000000000000000000000000000000000000000000010d18242f3a4653606d788290949da0a8a9a19e9691847a6d6153493f33271b0f03000000000000000000000000000000000000000000000000000000000714202c38444f59616e7b848f93999b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9b999899928f8b86817b736d675f584f473d352c22180d04000000000000000000000000000000000000000000000000000815222e3b4855616e7b8898a2aebac6d3ddd0c3b7aa9d908477665f6a7784919eaab7c4cfd5c9bdb2a89f948f949fabb7c4cedacfc4b7aa9d9184776a5f667784919eaab7c4d1ddd2c5b8ac9f9285796c605346392d201306000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d202633404c5966737f8c99a6b2bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3b9ac9f9386796c605346392d20130000000000000000000000000002080d111314191d2021232425252525242221201d191413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55626e7b87939facb9c2cdd8d6cabfb4aa9e9185796d6053493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000020b17202b343e474f59606a6e7980878f93999ea1a8a8aaacaeb4aeb6afacaba9a7a8a09d99928e8680796e6960594f473d342a1f160c00000000000000000000000000000000000000000000000000000000000000000000000000000000030608090e111213110e0a0907040000000000000000000000000000000000000000040e1720293139404551565e61696e73787c7f82848687878787868583807d79746e6a615e575045403930271f150c0300000000000000000d1a2633404d596673808c99a6b3bfccd9e6dfd5cdc5c0bcbbb9b9b9b9b9b9b9b9bababbbdc1c5c6cacfd7d9d4cec6bfbaaea49f92867b6e62594f44382c1f14090000000000000000000000000000000000000000000000000b1724313e4a5764717e8a99a3aebbc7d7d3c7bbb0a6998d8073665c504438292f3a4754606a7783909da9b3becad6d3c6baaea298897c6f6256493c2f23160900121f2b3845525e6b7884919eabb8c4d1d7d2c5b8ab9f9285796c605346392d2013121f2c3844515c6674818d9aa6b0bec7d2d6cec6b8aba095887b6e6255483b31261a0e18242f3e4b5864717e8b97a7b1bcc8d4d6cdbfb2a5988c7f7265594c3f3226190c0000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e1105030403020100000000000000000000000000000000000000000000000000000000000007131f2c3844505c666d7a828b9196959697928d847c6f685e5241382d22170b000000000000000000000000000000000000000000000000000000000004101c27333d46525e696e7a82888c8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c8b8886827f7a746e69605c554e463d352c231a100600000000000000000000000000000000000000000000000000000613202d394653606c7985929facb8c5d2dfd2c5b9ac9f9286796d626f7b8896a0acb9c5d2d2c5b9aca0968f828f9ca8b2bdc9d5d1c5b8aca096887b6e626d7986929facb9c5d2ddd0c3b6aa9d908377665b5044382b1f1206000000000713202d3a4653606d798693a0acb9c6d3d3c6baada093877a6d6054473a2d212633404d596673808c99a6b3bfccd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000111d2a3744505d6a7783909daab6c3baaea39886796c605346392d20130000000000000000000000040a0f13191d202124292c2d303132323232312f2e2d292521201d19130e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3947535f6a75828f9ca6b0bbc7d3dbd0c5b9ada1978b7e71655b5044372b1f160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000050e19222c353e474f585f676d737b82878d9196989b9d9fa2aaa1a1a49f9e9d9a9896918c87817b736d675f574f473d352b22180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f353f444d52575e61666c6f737577797a7b7b7a79787673706d66625f57524d453e342e271e150d030000000000000000000d1a2633404d596673808c99a6b3bfccd9e6d7cdc3bbb4b0aeadadadadadadadadadadafb1b4b8babec5cdd2dad8d0cabfbaaea2988f82766b6054483b30251a0e0200000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aabb5bfcbd7d0c4b7ab9f94887b6e61544a3f34282b37434e5865717e8b97a2adbac5cfd6cabfb4aa978a7d7064574a3d3124170a00101d2a3743505d6a7683909daab4bfc7cbc7bdb2a99c8f8275665b5044382b1f12101c2834404a54626f7c89949facb6c0c8cac5bcb1a79d9083776a5f53473a2e1f140915212e3b4854616e7b8795a0abb8c2c9cac5bbafa5978a7e7164574b3e3124180b0000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5d1c4b7aa9e9184776b5e5144382b1e1105000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545e686d787f848789898885807a6f6a5f564c412f261b11060000000000000000000000000000000000000000000000000000000000000b16212a36424d565e686d757c7f81828383838383838383838383838383838382828281807e7c7976726d68615f57514b433c342c231a110800000000000000000000000000000000000000000000000000000005121f2b3744505b657683909da9b6c3d0dcd3c7baaea398887b6e66737f8c99a8b2bdc9d5d1c4b7aa9e91847c8996a1acb9c5d2d4c8bdb2a8998c7f72666e7b8899a3afbbc7d3dacec1b4a79b8e817468544a3f33281c0f03000000000713202d3a4653606d798693a0acb9c6d3d4c7bbaea194887b6e6155483b2e2328343f4a546774808d9aa7b3c0cdd9ccc0b3a6998d8073665a4d4033271a0d00000000000000000000101d2a3643505d697682909ca9b6c3b9ac9f9286796c5f5346392c201300000000000000000003090f161b1e24292c2d3035393a3c3d3e3f3f3e3e3c3a3935302d2c29241e1a140c07000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37424e57636f7c89949fabb7c3cdd9d5c9beb3a99d9184786c6053463d32271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a232c353d464e555c606a6e757b8084898c8e9092989494949a9391908e8b8884807b756e69605c554d453d352b231910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d2429323b41464d53545b60636669666d6d6e6e6d6d67696663605c54534e46423b3328231d150c03000000000000000000000d1a2633404d596673808c99a6b3bfccd9dcd1c5bbb1a9a3a1a0a0a0a0a0a0a0a0a0a1a2a4a7abadb3bbc0c8d0d9dbd6cabfb4aa9f94897d7063574d42362a1e120500000000000000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1ced1c9bdb2a99c908376695f5342382e2327323d4753606d7985929fa9b3becad0c9bdb2a996897d7063564a3d3023170a000d1a2733404d5a6673808d98a3aeb9bbbfbbb5ada1968b7e7164544a3f33281c0f0c18232e394754606a7683909aa4afb9bbbfbab4aaa0958a7e7164584e43372b1f0e0714212d3a46535e697783909da7b1b9bdbeb9b3a99e93877b6e6154473b2e2114080000000000000000000000000916222f3c4955626f7c8895a2afbbd0dbd1c4b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424c565e666d72777b7c7c7b78736d685f584e443a301d140a00000000000000000000000000000000000000000000000000000000000000050e1925303b444d565e616a6f737576767676767676767676767676767676767675757473716f6d6765615d56534d454039312a221a110800000000000000000000000000000000000000000000000000000000030f1b27333f49536874818e9ba7b4c1cedad7cbbfb4aa968a7d70697783909daab6c3ced5c9beb3a99a8d807884919eabb7c4cfd9cec3b6aa9d90837769707d8a97abb5c0cbd7d8cbbfb2a5988c7f7265594c3f2d22170b00000000000713202d3a4653606d798693a0acb9c6d3d6c9bcb0a396897d7063554b40342e2f3844505c6676828f9ca9b5c2cfd9ccc0b3a6998d8073665a4d4033271a0d000000000000000000000f1b2835424e5b6875818e9ba8b2b9b5ab9e9184776b5e5144382b1e110000000000000000060e151a21272c3035393a3e414547494a4b4c4c4b4a494746413e3a39352f2a261f18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4854606b7683909ca7b1bcc8d4dacfc4b8aca0968a7d7064584e43382c1f150900000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232b333c434b51575f62696e74787c7f8284858687878787868583817e7b77736e69615f57514b433c332b2319110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c1218202930363b42464a50535659545c6060616161605c555a5653514a47423c3630292118120b0300000000000000000000000d1a2633404d596673808c99a6b3bfccd9d8ccc0b4a99f98949393939393939393939495979a9fa2a9aeb6bfc7d0dcdbd0c6bcb0a69c8f8276695e52463a2d20140700000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa8b2bcc3c4c0b9ada1968b7e7164574d4230261c1f2c3945515d6773808c97a1adb9c0c4c1b9ada196887b6e6255483b2f221508000815212e3b4854616e7b86929fa4acafb5aeaba49e9184796d6053473a2d22170b07121c2b37434e58636f7c87939fa5acafb4aeaaa2989083786d6053463c31261a0f05121e2a36424d5764717e8b959fa7acb2b3ada9a1978f8275695e52463a2d2014070000000000000000000000000916222f3c4955626f7c8895aab4bfcad6d1c4b7aa9e9184776b5e5144382b1e110500000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444c545c6065696e6f6f6e6c65615e564e463c32291e0b02000000000000000000000000000000000000000000000000000000000000000009141f29323b444c52585f626668696969696969696969696969696969696969696868666562605c5554524c46423b342f271f1810080000000000000000000000000000000000000000000000000000000000000b17222d3f4c5965727f8c98a5b2bfcfdadcd1bfb2a5988c7f726e7b87939facb9c6d2d2c6b9ada197897c73808d9aa8b2bdc9d5d1c4b8ab9f95877b6e727f8c98a5b2bfd1dcd6cabeb3a996897d7063564a3d3023170600000000000713202d3a4653606d798693a0acb9c6d3d9ccc0b3a6998d8073675c51453f3c3d424b55606d7985929fabb8c5d2d9ccc0b3a6998d8073665a4d4033271a0d000000000000000000000b1825313e4b5864717e8b96a0a9acaca3998e8174675b4e4134281b0e00000000000000090f1820262b32383a4145474b4c5254565758585858575554524c4b4745413a363128231d150c050000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f5963707d8a95a0acb8c4ced9d4c8bdb2a89c9083766a6054483c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000081119212a313940454e53575f61656c6f727577797a7a7b7b7a79787674716e6966615e57534d454039302a2119110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070e171f252a3136383f4446494c4a50535454545453514b4d4a4644403937312a251f170f07000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d5c8bcb0a3988d8886868686868686868787888a8e92979da4adb5bfcad3ded7cec2b9ac9f93877b6e6154483b2e21150700000000000000000000000000000000000000000000000a1724313d4a5764707d8a96a1aab2b7b7b5afa59e9184796d6053463c3120141d2935404b55606d7a85929ea5aeb6b7b6afa69e9184786a5f53473a2e211408000714202d3a46525e69727f8c929c9fa3aba39f99938a7e70675d5145382c1c1106000f1b27323d4854606b74808d939d9fa4aaa29f9892867c6f665c5044382a20150a020e1a25313b4653606c788390959ea0a8a9a29e9792857b6e61574d42362a1e11050000000000000000000000000815222e3b4855616e7b8898a2aebac7d2cec3b6a99d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000000000000000000000000000000000a151e28323a424a5153575e61626361605b53524c443c342a20170c000000000000000000000000000000000000000000000000000000000000000000020d172029323a41464e5355595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b59585553514b4746413a363129231d150d0600000000000000000000000000000000000000000000000000000000000000061723303d4a5663707d8996a9b3becad6dacdc1b4a79a8e8174727e8b9aa4afbbc8d4d1c4b8ab9e9185796f7c8996a1adb9c5d2d4c8bcb1a7988b7f7274818e9aa7b4c1cddad3c6baada297877b6e6154473b2e21140800000000000713202d3a4653606d798693a0acb9c6d3ded1c4b8ab9e9185796d6059504a494a4d545d67717e8a97a2adbac6d3d9ccbfb3a6998c807366594d4033261a0d000000000000000000000713202d3a4653606d798491979e9f9e9a92877c6f6255483c2f2215090000000000010a121b212a31373d43484c525458565d606364656565656462615e565854514c46423b342e271e170f050000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4855616b7783909da8b2bdc9d5d9cec3b7ab9f94897c6f62574d42372b1e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f181f272f343c42474d53535b606265686a676d6e6e6e6d6d666a6765625f5754534d46423c342e271e180f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191f252a2d3338393c403f444647484847464540403d3a38342e2b26201a140d0500000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7bbaea194887b7a7a7a7a7a7a7a7a7a7a7c7e81858d929ba3adb8c1ccd7e0d4c8bbafa49a8b7f7265584c3f2f23180c00000000000000000000000000000000000000000000000713202d3a4653606d79849198a1a8aaaaaba39f938a7e71665c5145382c1f1318242f3945525d68717e8b939da4aaaaa9a59e948c7f7265584e43372b1f12060005121e2a36424d57626d7380898f92999699928f877f726c61554b4035291d0a00000a15202c38434f59606d78818a90939a9698928e867d706a60544a3f3428180e030009141f2b3844505b666e7b838c9196959697928d857c6f695f53453b30251a0e020000000000000000000000000713202d3a4653606d7985929facb8c0c5c4bcb1a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000000000000000000030c16202830394044464d525456565553504946413a322a22180e0500000000000000000000000000000000000000000000000000000000000000000000050e17202930363c4347484c4e4f505050505050505050505050505050504f4f4f4e4d4b494645403a3935302a261f18120b0300000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8797a1adb9c6d2dcd0c3b6a99d90837676828f9cacb6c0ccd6cabeb3a99a8d81746c7884919eabb7c4cfd8cdc2b6a99c8f82767683909ca9b6c3cfdcd2c5b8ab9f928578695e52463a2d20140700000000000713202d3a4653606d798693a0acb9c6d3dfd2c6b9ada1978c7f736b605c545656565e666d7984919da9b3becad6d9ccbfb2a6998c7f7366594c403326190d0000000000000000000006131f2c3845515c676f7c858d9192928f887f726a5f53473a2e21150800000000000a131c242d333c43474f54565d606568686d6f7071727271716f6d686865605d55534d454039302921170f0500000000000000000000000000000000000000000000000000000000000000000000000000000a16212c38444f5964717e8a96a0acb9c4cfdad3c7bcb0a69b8f8275695f53473b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151d232931373c424749505356595b555d6061616161605c545b5855534d4846423b373128231d150c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e141a1c22282b2d302e34383a3a3b3b3a3a38342e302d2c28231c1a150e09020000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6d6d6d6d6d6d6d6d6e6f71747a808b919ba6b0bbc7d3dfd8ccc0b6ac9b8e827568554b4034291c10040000000000000000000000000000000000000000000006131f2c3845515c676f7d8691969b9d9d9c99928d81746c61544b4034281c10121d2935414c56626c74818d929b9d9d9c9a938e82786d6053463c31261a0f0200020e1a25303b45515b636e737d828688898886827d726d625a5043392f24180c0000040f1b27323d44505c666d757e838688898885817b706b61584e42382e2317060000030f1c28333f4a545e696e797f848789898885817a6f6a60574d4233291f14090000000000000000000000000006131f2c3845515c6675828f9ca4aeb7b8b8b3aaa0958a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e272e34383b42464749494846443f3836302820181007000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a31373a3c4042434343434343434343434343434343434343424241403e3c3a38342e2d29241e1a140c07010000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687885929eabb8c5d1ded2c5b8ab9f9285787a86929facb9c5d2d3c6baada297897d706574808d9aa9b2bec9d5d2c5b9ac9f92867a7885919eabb8c4d1dccfc3b6a99c90837669574d42362a1e110500000000000713202d3a4653606d798693a0acb9c6d3e1d5c9beb3a99f92877d726d6664636364686e78818e95a0acbcc5d0dbd8cbbeb1a5988b7e7265584b3f3225180c0000000000000000000004101c2834404b555f6a6f7b81848685827d726d62584e43372b1f12060000000008121c252e363f464e53596063686d7175787a7c7d7e7f7f7e7d7c7a7875716d67615f57514b423b332921170d030000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e4653606d7884919ea9b2bec9d5d8cdc2b9ac9f93877b6e62564c41362a1d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b3137383f4446494c4f4b51535454545453514a4e4b4847423c3a36312b261f18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e11171c1f202323282b2d2d2e2e2e2d2c282323201f1c18120e090300000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6160606060606060616264676d747f8b949eaab7c3d0dcddd2c4b7ab9e918478675c5145382c1f13060000000000000000000000000000000000000000000004101c2834404b55606b6f7d848b8f90918f8d8780786c605a5042392e23180c0d1924303a44505a606d7880898e9091908d8881796d665c5044382a20150900000009141f29333f49525c636b70767a7c7c7b7a766f6b625b51483e31271d12070000000a162128343f4a545c606c71777a7c7c7b79746e6961594f463c30261c11060000000b17222d38424d565e676d72777b7c7c7b79746e6860584e453b3120170d020000000000000000000000000004101c2834404b5463707d89929da4abacaba9a1989083786c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000050c151c23282c30363a3b3c3c3b3937332d2a251e160e070000000000000000000000000000000000000000000000000000000000000000000000000000050c131920262b2e2f333536363636363636363636363636363636363636353533322f2d2c2823201d19130e0903000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d566976838f9ca9b6c2cfdcd3c6baada297877a7e8a99a3aebac7d3d2c5b8ab9f9285796d636f7c8997a1adb9c6d2d3c7bbafa3998b7e7a8797a1adb9c6d2dacdc0b4a79a8d8174675a4e4130251a0e0200000000000713202d3a4653606d798693a0acb9c6d3e6dacfc4bbafa39992877f7973706f7071757b818e939da8b1bdced7e1d5c9bdb2a9968a7d7063574a3d3024170a00000000000000000000000c18232e39434e585f696e74787978756f6b625b51463c31261b0f03000000030c1a242e37404850585f626b6f757a7e828487898a8b8b8b8b8a888784817e7a746e69605c544d453b33291f150b01000000000000000000000000000000000000000000000000000000000000000000000000000b161f2b3844505c66727e8b97a1adb9c5d0dbd4c7bbafa4998e8174685e52463a2f24180d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c151a1f262b2d3337393c3f4240454747484847464440413e3b3a37312d2a251f1a140c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121316171c1f2021212121201f1c18171312100c0700000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61545353535353545455555d606d75828f9ca8b5c2cfdadfd2c6b9ac9f9386796d6053473a2d20140700000000000000000000000000000000000000000000000c18232e39434f59606b6f797e82848483807b736c665b50483e30271d120708131e28323f44505c666d747c81838483807c746d675d544a3f3428180e03000000030d17212d37404952596063676d6f6f6f6d6763605951493f362c1f150b01000000040b17232e38424a505a6164686d6f6f6f6d66615f574f473e342b1e140a0000000006111c262f3b444d555d6066696e6f6f6e6c66615e564e463d33291f0e050000000000000000000000000000000c18232e394854606b74808d929b9e9f9f9d9791867c6f665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f252a2d2e2f302e2d2b27221b19130c050000000000000000000000000000000000000000000000000000000000000000000000000000000002080d151b1f21222628292929292929292929292929292929292929292928262522201f1c1813110d080200000000000000000000000000000000000000000000000000000000000000000000000000020e192530414e5a6774818d9aa7b4c0cddad6cabeb3a996897d818e9babb4bfcbd6cabfb4aa9b8e817466606c7984919eabb8c4cfd7cbc0b5ab9b8f827c8995a9b3bec9d5d8cbbeb1a5988b7e7265584b3f322518090000000000000713202d3a4653606d798693a0acb9c6d3dfe1d7cbc0b5aba399928b84807d7c7d7e81868f939da5afbac3cee0dfd2c5b9ada196877b6e6154483b2e211508000000000000000000000007121d27303c464e575e61676b6c6b6963605951493f342a20150a000000000b151e2c364049515a626a6e757c82868b8f9196969798989898979596918e8b86817b736d665e574d453b31271d12070000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7984919ea9b3becad6d7ccc0b5ab9f92867a6e61554b4035291c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151a1b22272b2d2f322f35393a3b3b3b3a3a38342e322f2e2b26211e1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606060b101213141515141313100c07070604000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615447474747474747494c515b63707d8996a9b3becad6e0d4c8bbafa49a887b6e6155483b2e221508000000000000000000000000000000000000000000000007121d27303d474f5960676d7175777776736e69605b544a3f362c1e150b00020c162028343f4a545c606b6f74777776736f6a605d554b42382e2317060000000000050f1b252e3740474f54555d60626362605d55544f473f372d241a0d03000000000006111c2630383f445055565e61626362605c54534d453e352c22190c0200000000000a141d29323b434b5153575e61626362605b54524d443d342b21170d0000000000000000000000000000000007121d2c38444f59606c7880898e919292908c857c6f6a5f544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10141a1e2021232322201f1b17110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f121515191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1c1b1a18161313100c07050100000000000000000000000000000000000000000000000000000000000000000000000000000000081825323f4b5865727e8b98a5b1becfdadbcfbeb2a5988b7f85929fabb8c5d1d3c6baaea2988a7d70645b6674818d9aa9b3bec9d5d1c5b8ac9f92867e8b98a4b1becfdad5c9bdb2a896897c6f6356493c302316090000000000000713202d3a4653606d798693a0acb9c6d3dfe8dcd1c7bdb5aba39f96918d8a89898b8e92989ea5afb7c1ccd5dfd9d0c4b8ab9e918478695e53463a2d2114070000000000000000000000000b151e2a343c454d52545a5e5f5f5c56544f473f372d22180e0300000007121c27303e48515b636c717c82898f92999b9ea1a8a3a4a5a5a4a4a8a19e9b98928e8780786e695e574d43392f24180c04000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3845515c67727f8c97a2adbac6d0dbd2c7baaea3988c8073675d5145382e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e11171b1f20232624292c2d2e2e2e2e2d2c28232522211e1a15120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607070808070706040000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b3a3a3a3a3b3c414753606d798697a1adb9c6d2dfd8ccc0b6ac95887c6f6255493c2f2216090000000000000000000000000000000000000000000000000b151e2b353d474f555c6064686a6a6966615f57504a42382d241a0c030000040e17232e38424a50596063686a6a6967625f58514b433930261c110600000000000009131c252e353d44484c515455565553514b48443d352d251b1208000000000000000a141e262e343e45494c525455565553504a46423b332c231a1007000000000000020b17202931394045474d525456565553504a46413b322b22190f060000000000000000000000000000000000101b27323d44505b666c747c81848585837f7a6f6a60584e42382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e11141416161513120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090d0f1010101010101010101010101010101010100f0f0e0d0b090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a8b2bdc9d5ddd0c3b7aa9d90849097a2adbac6d3d2c5b8ac9f9285796d605463707c8997a1adb9c6d2d3c7baaea2989084909daab7c3d0ddd2c5b9ada196877a6d6054473a2d2114070000000000000713202d3a4653606d798693a0acb9d0dbe7dfd6cfc9c6bdb5aea8a09e99979696979b9fa2aaafb7c1c9d2deddd2c7beb1a79a8d817467574d42362a1e1205000000000000000000000000030c18222a333b4246484e5153524f4948443d352d241b1006000000000c18232e3942505a636d737e868f949c9fa3ababacb2b0b1b2b2b1b0b2adabaaa39f99928d837b6e695e554b40352921160a0000000000000000000000000000000000000000000000000000000000000000000000000006111c2834404b55606d7a85929faab4bfcad6d7cbbfb4aa9f92857a6d60544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131619181d202021212121201f1c18181514120e09050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b2e2d2d2d2e2f3845515c677885929eabb8c5d1deddd2bcafa295897c6f6256493c2f231609000000000000000000000000000000000000000000000000030c19232b353d434b5153585c5d5e5c5a55534d443f382f261c12090000000006111c2630383f444f54565b5d5e5d5a55544e45403931281e150a00000000000000010a131c232b32383a4145474949484745403938322b231b13090000000000000000020c141c232834393a41464749494846443f38363129211a11080000000000000000050e171f272f35393b42464749494846443f38363029201910070000000000000000000000000000000000000b162128333f4a545b606a6f7478797876736d6760584e463c2f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708090908060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8796a1adb9c5d2ded1c5b8aca0959095a0a9b3becad6cbbfb4ab9b8e8275675d53606d7985929eabb8c5cfd6cabfb4aaa0959095a0acb8c5d1ded1c4b8ab9e918478685d5245392c2013070000000000000713202d3a4653606d798693aab4becad6e1d6cdc5beb9b8b7b8b2acaaa6a3a2a3a4a8acaeb4bcc1c9d2dbdcd7ccc0b6ac9f95897c6f6356493c31251a0e0200000000000000000000000000061018212930363a3b41454645423c3b38322b231b12090000000004101c2834404a54616c737f8b92989ea6acaeb5b7b9bdbdbebebebebdbdb9b7b4aeaba39f9590847b6e675d51453d32271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515d6773808d98a2aebac7d1dcd1c6baada2978b7f72665c5044382c1f160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003050609070d111314141515141312100c070808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607080a0b0c0c0c0b0a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0b0c0a070704010000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b3535352f35393e46535f697986929facb9c5d2dfd7cbbfb4aa95887b6e6255483b2f22150800000000000000000000000000000000000000000000000000071119232b30394045464b4f5151504d4847423c332d261d140a0000000000000a141e262e343d4348494e5051504d4947433c352f281f160c030000000000000000010a111921272c2f35393a3c3c3c3a38352f2c272119110901000000000000000000020a111722282d3036393a3c3c3c3a38342e2a261f180f0800000000000000000000050d151d24292c30363a3b3c3c3b3938332d2a251f170e0700000000000000000000000000000000000000040b17222d38424a50586062686b6c6c6a66605d554e463d342a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607090a0b0b0c0c0b0b0a080706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d687884919eabb7c4d1ded4c8bcb1a7a09da0a7b1bbc5cfd3c7baaea3998a7e716455505c6674818e9aa9b3becad6d0c6bcb1a7a09da0a7b1bcc8d4dccfc2b5a99c8f827669564c4135291d11040000000000000613202d394653606c798698a2aebac6d3dacfc5bbb3adabaaacb1b9b7b3b0afb0b1b4b8babfc5ced3dbd8d1cbc1bbafa49a9083766b6054483b2f1f1409000000000000000000000000000000060f171f252a2d2e3438393836302f2c2721191109000000000006121f2c3844515c66717e8a919fa3aab0b9bbbfc4c5c9cecbcbcbcbcfc9c5c4bfbab5afa7a0969083796d60584e43382c20150a0000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414b55616d7a86929fabb5c0cbd7d6cabeb3a99e9184796d6053463d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060c10121315171818191818161414110e080705020000000000000000000000000000000000000000000000000000000000000000000000000000070c101313171818171413110d0802000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544741414141424045475058616e7b8898a3aebac7d3e0d3c7baaea398877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000710191e272e34383a3e42444443403b3a373128221c140b02000000000000020c141c232832383b3c41444443403c3b373229241d160d040000000000000000000000070f161b1e24292c2d2f302f2d2c29241d1b160f0700000000000000000000000000060b171d1e252a2d2e2f302f2d2c28231c1a140d06000000000000000000000000030b12181d1f252a2d2e2f302f2d2b28221c19140d0500000000000000000000000000000000000000000006111c262f383f444e54565b5e5f5f5d5954514c433d342b22180b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080d111314161718181919181717151312100c060605030000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566976828f9ca9b5c2cfdcd9cec3b9b1acaaacb1b9c3cdd7d2c5b9ac9f92867a6d60544a5463707d8997a1adb9c6d2d8cec3b9b1acaaacb1b9c3ced9d9cdc0b3a69a8d8073675a4d403024190d0100000000000006121f2b3844505b667885929fabb8c5cfd0c9beb3a9a19e9da0a7b1bcc0bdbcbcbec1c5c6cad0d7d5d2cfc6bfbab0a69f93887c6f62594f43382c1f0d0300000000000000000000000000000000050d141a1e2021272b2c2c292322201b160f070000000000000713202d3a4653606d7984919ea3aeb4bcc1c7cbd1d2d5dad7d8d8d7dad5d2d0cbc7c0bbb1a8a0958e81746a6054483c31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a46525e6874808d99a3afbbc7d2dbcfc5b9aca1968a7e7164594f44382c20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315171c1f20222325252625242321201e191514120e090400000000000000000000000000000000000000000000000000000000000000000001080d12181c1f202325252421201d19130e090300000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544e4e4e4e4e4e4b51535a616a73808c99aab4bfcbd7dfd2c5b9ac9f9286796d6053463a2d201307000000000000000000000000000000000000000000000000000000070c151d23282c2d3135373736332e2d2b261f17110a020000000000000000020a111721272c2f3035373736342f2e2b262018120c0400000000000000000000000000040b1013191d2021222322201f1d18120f0a04000000000000000000000000000000060c1113191d2021222322201f1c17110e0903000000000000000000000000000001070c10141a1e2021232322201f1c17110e080200000000000000000000000000000000000000000000000a141d262d333d4347494e515252504c4745413a312b221910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070c10131416191d202122242425252525242322201f1c171513120f0b060000000000000000000000000000000000000000000000000000000000000000000000010d19242f404d5a6773808d9aa6b3c0d1dcdfd5cbc3bcb8b7b8bcc3cbd5d7ccc0b5ab9c8f8276685d524653606d7985929eabb8c5d0dbd5cbc3bcb8b7b8bcc3cbd5dfd7ccc0b5ab978b7e7164584b3e3125180800000000000000030f1c28333f4a546a7683909da9b3bdc3c4bfb9ada197929195a0aab3bbc2c7cbd1cecfcfcfcecfc9c6c2bcb4aea69e948d80736a6054473d32271b0f00000000000000000000000000000000000002090e1214151b1e201f1c1615130f0b04000000000000000a1623303d495663707c8996a1adbabfc6ced3d7dbd6d3d2cfcfd1d2d5d9dfdcd6d1cbc3bab1a79f93877c6f62584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000007131d2a36414c56616e7b86929facb6c0ccd8d5c9bdb2a89d9083776b6054483c32261b0f03000000000000000000000000000000000000000000000000030506090c0d0c0a0706040100000000000000000000000000000000010407070a0c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10151b1f2123282c2d2e303132323231302e2d2a2522211e1a14100c07000000000000000000000000000000000000000000000000000000000000040c13191d23282c2d303232312d2c29241e1a140d05000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615b5b5b5b5b5b5b555d60646c707c86929facb9c5d1dcdccfc3b6a99c908376665c5044382b1f120600000000000000000000000000000000000000000000000000000000030b12181c1f2025292a2b292722211e1a150b06000000000000000000000000060b161b1f2223282a2b2a2722221f1b150d07010000000000000000000000000000000001080d1113141616151413100c07010000000000000000000000000000000000000002080d1113141616151312100c06000000000000000000000000000000000000000004090e11141416161513120f0b060000000000000000000000000000000000000000000000000000020b141c222832383b3c4145464543403a39352f281f191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12181c1f202324292c2d2f31313232323131302e2d2c282322201f1b17110f0903000000000000000000000000000000000000000000000000000000000000000000081825313e4b5864717e8b97abb5c0cbd7e3ddd5cec8c5c3c5c8ced5ddd4c7bbafa4998b7e7165564c44505c6674818e9aa9b3becad6ddd5cec8c5c3c5c8ced5dde0d4c7bbafa499887c6f6255493c2f22160900000000000000000b17222d3f4c5966727f8c97a2abb3b7b7b4aea49e9285849198a2a9b0b9bbc0c1c2c3c3c2c1c0beb9b8b0aaa39f948f82786d60584e43342b21160a0000000000000000000000000000000000000000020507080e1213120f090907030000000000000000000c1926323f4c5965727f8c98a8b2bdcbd0d8d9d5d0cac6c5c3c2c4c5c9ced4d9dfdcd7ccc3bbafa49a8f82766a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a46535e6975818e9aa4afbbc8d4dacec4b8aca095897d7063584e43372b1f140900000000000000000000000000000000000000000000060b0f121316191a19171413110d070100000000000000000000000001080d11131417191a19171413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f262b2e2e34383a3b3d3e3f3f3f3e3d3b3936302e2d2a261f1c18120b06000000000000000000000000000000000000000000000000000000060d161e24292e34383a3d3e3f3d3a3935302a251f170f070000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e686868686868686869676d71767e869298a3aebac7d3dfd4c8bcb1a7998d807366544a3f34281c1003000000000000000000000000000000000000000000000000000000000000070c101313181c1e1e1d1a1514120e09030000000000000000000000000000040a0f1315161b1d1e1d1a1615130f0a0400000000000000000000000000000000000000000104060709090907060400000000000000000000000000000000000000000000000001050707090909070603000000000000000000000000000000000000000000000000020507080909080606030000000000000000000000000000000000000000000000000000000000020a111720272b2e2f3538393937332d2c29241e160d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11171c1f23292c2d302f35393a3c3d3e3e3f3f3e3e3d3b3a38342e2f2d2b27221b1a15100b05000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3afbbc7d4e0e7dfd9d4d1d0d1d4d9dfdfd2c6b9ac9f93867a6d6154473f4a5463707d8a97a2adbac6d3dfdfd9d4d1d0d1d4d9dfe7dfd2c6b9ac9f93867a6d6053473a2d20140700000000000000000614212d3a4754606d7a859299a2a9aaaaaaa29f928a7e7c8692979fa6acafb5b4b5b6b6b5b4b3b3adaba69f98928c82796d665c50463d3222190f040000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cfdbd6cec9c5bebab8b6b6b7b9bdc4c8ced5ddded8ccc0b6ac9f94887b6f6255483c3025190e020000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36424d57626f7c87939facb9c2cdd8d4c8bcb1a79c8f82766a5f53473b31251a0e0200000000000000000000000000000000000000020a11171b1f20222526262420201d18130b0600000000000000000000060b13191d20212426262624201f1c18120b06000000000000000000000000000000000000000000000000000000000000000000000000000000000002090c151d23282c32373b3c3f4446484a4b4b4c4b4b494746413f3b3a36312c28231d17110a02000000000000000000000000000000000000000000000000060f181f282f35394045464a4b4b4a4745413a3630292119110700000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a74747474747474747575777a7e838a9298a2aab4bfcbd7d7cdc5b8ab9f95897c6f6256493c2e23170b0000000000000000000000000000000000000000000000000000000000000000000406070b0f1111100d08080602000000000000000000000000000000000000030709090e1111100d090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b161b1f2223282b2c2c2a2621201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c22282b2f34383a3d40414547494a4b4b4c4c4b4a4a4846443f3f3c3937332d2b26201c160e090200000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986929facb9c5d2dfeceae4e0dedddee0e4e9dccfc3b6a99c908376685e52463a4653606d7985929fabb8c5d0dbe6e4e0dedddee0e4eaeaddd0c4b7aa9d918477675d5145382c1f130600000000000000000713202c3945525d68707d8792979c9d9d9c98928b80736f7d8590949c9fa3aba8a9a9a9a8a7a7a9a19e9a948f867f776d675c544a3f342b201007000000000000000000000000000000000000000406070a0b0c0a07070501000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cfd0cac4bdb9b4aeaba9a9aaacb2b8bcc3cbd5dfddd2c7beb0a6998d807366564d41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a75828f9ca6b0bbc7d3d9cdc3b7ab9f94887c6f62574d42362a1e1308000000000000000000000000000000000000070b141b22272b2d2f323333312d2c29241d17110a02000000000000020a11171e24292c2d31333332302d2c29231d17110a020000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e272e34383c4347494a5053555658585958575654524c4c4846423b38342e27221b140b0500000000000000000000000000000000000000000000040e182129313a41454b51535658585754524c46423b332b23191006000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dbcec1b5a89b8e818181818181818181818284868a90949fa2aab3bcc6d1d8cec5bbb0a69d9083766a6054473b2e1c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0d0c090706030000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0c0a0706040100000000000000000000000000000000000000000000040a0f1315161b1e1f1f1d191413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c151c23282d333839404547494c4c51545557575858585857565553504a4b4846443f3837312c27211a140d050000000000000000000000000000000000000000000000000000000006131f2c3845515c677784919daab7c4d0ddeaf5f0edeaeaeaedece0d4c8bcb1a7988b7f7265564c413844515c6674818e9baab3becad6e2eeedeaeaeaedf0f5e8dbcec2b5a89b8f827568554b4035291d1004000000000000000004111d2935414c56616b707d858c8f90918f8c867f736e6b6f7b828a8f9299999b9c9c9c9c9b9a9797928d88827c726c655c554b42382e22190f000000000000000000000000000000000000070c101313161818171413110d080200000000000000000000000c1926333f4c5966727f8c99a9b2bdc8c5bebab2acaaa29f9c9c9ea0a8acb1b9c3cdd7e1d9d0c2b7aa9d918477685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37434e58626f7c89949fabb7c3cdd9d3c7bbb0a69b8e8175695e53463a3024190d01000000000000000000000000000000000810191d262d3337393c3f403f3d3a39352f27221b140b0200000000030c141c23282f35393a3d3f403f3d3a38342f27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000070e171f252a30394045464e5355545c606163646565656463615e565855534d46454039332d261d170e050000000000000000000000000000000000000000020c162029333b434c51555c6063656564605d56524d453d352b22180c030000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dccfc3b6aa9e938e8e8e8e8e8e8e8e8e8e8f9092999c9fa6aeb3bcc5cfd6cec6bcb3a99e948a7e7164584e43382b1f0a00000000000000000000000000000000000000000000000000000001040607090a0b0c0c0c0b0b09080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12141518191a19161312100b060000000000000000000000000000000000000000000000000000000001070c10131417191a19171413110d080100000000000000000000000000000000000000000000030608090e121312100d0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e262e34383f44464b51535659555d6062646465656564646361605c54585553504947433c38332a251f170e0700000000000000000000000000000000000000000000000000000004101c2934404b556875828f9ba8b5c2cedbe8f8fcf9f7f6f7f7eaddd1c4b8ab9f95877b6e6154483b34404a5463707d8a98a2aebac6d3dfecf8f7f6f7f9fcf2e6d9ccbfb3a6998c807366594d402f24180c000000000000000000010d19242f3a444f59616b707a7f828484827f7a726d6460696e767d82868a8c8e8f90908f8e8d8b8885817b766f6a605b534b433930261c100700000000000000000000000000000001070d12181c1f202325252421201d19130e09030000000000000000000a1723303d4a5663707d8996a1adb9bbb9b3aea8a09e9892908f91969da0a7b1bbc5cfdaded1c5b8aca095877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c4854606a7683909ca7b1bcc8d4d8ccc2b9ac9f92867b6e61564c4135291d120700000000000000000000000000000008121a222b2f383f4446494c4d4c4a4745403a332d261d140b020000030c151e262e343a4145474a4c4d4c4a47454039332d261d140b0200000000000000000000000000000000000000000000000000000000000000000000081019202930363e424b5153585f6266666d6e707172727271706e686865615f5753514b443f382f2920170f050000000000000000000000000000000000000008131e28323b454d555d60676d707172706d68615e574f473d342a1e150a0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9ded2c6baafa59e9b9b9b9b9b9b9b9b9b9b9c9d9fa3ababb0babec5ced0cac3bcb4aaa2978f82756c6155463d32271b0f0000000000000000000000000000000000000000000000010406070d1013141517181819191817161414110e080806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e141a1e21222526262523201f1c17110a0200000000000000000000000000000000000000000000000000060b12181c1f20232626262421201d19130c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171e252a30383f444a5053555c60636669676d6f70717172727171706e6d66686562605b53534e48443d363029201910070000000000000000000000000000000000000000000000000000000c18232f404d596673808c99a6b3bfd0dce7f3fffffffffff6e9ddd0c3b6aa9d908377695e53463a2e3a4653606d7985929fabb8c5d0dbe7f2fefffffffbefe3d7cbbfb4aa978a7d7164574a3e312417070000000000000000000008131e28323e474f5961686d7276777776726e68625b575e616b70767a7d80818283838281807e7b78746e6a625f585049413931271e140a000000000000000000000000000000040c13181d23282c2d303232312e2d29251e1a140d0500000000000000000713202d3a4653606d7884919ea4acafadaaa29f96918b85838384889195a0a9b3bec9d5e0d4c8bcb1a7978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c38434e5863707d8995a0acb8c3ced9d3c7bbafa3998d8074685d5245392f23180c0000000000000000000000000000060f1a242c343d41495053555859595753514b443f382f261d140a00000b151e2730383f444c5254575959595753514b443f382f261d140a00000000000000000000000000000000000000000000000000000000000000000008111a222b323b424650545c60656a6f7376797b7d7e7e7f7e7e7c7a7875726e6964605c545049413b322921170c030000000000000000000000000000000000010d1924303a444d575f676d73797d7e7e7d7a756e6960594f463c30261c110600000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e3d7ccc1b7afaaa8a7a7a7a7a7a7a7a7a8a8aaacafb5b7bbc2cacec8c6bfbab1aaa29892857b6e615a5045342b20160a00000000000000000000000000000000000000000001080d111314181d202022242525262525242321201e191515120f0a0401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1f262b2d2e313333322f2d2b28231c140c0800000000000000000000000000000000000000000000020a11171d23292c2d30323333312d2c29241e18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001091119202930363e424a50545b6063676d707376787a7c7d7e7e7f7f7e7d7d7b797775726f6c65625f58544f46423b332b231910070000000000000000000000000000000000000000000000000000071724313e4a5764717d8a97aab4bfcbd6e3effbfffffff9ede1d4c8bdb1a8998c7f7266574d42362c3845515c6775818e9baab4bfcad6e2effbfffffff9ece0d3c7baaea398887b6e6255483b2f22150800000000000000000000010c16202c353e474f565d6065696a6a6966615e56514d53596163686d707375767676757474716e6967625f58534e443f382f271f150c020000000000000000000000000000050d161d24292e34383a3d3e3f3d3a3935302a251f170f080000000000000006121f2c3844515c66717e8b929d9fa4a19e98928c847e797676777c839197a1adb9c6d2dfd9cebfb2a6998c7f7366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4855616b7783909da8b2bdc8d4d7cbc0b5ab9f92867a6d60554b4034291c1106000000000000000000000000030e18212c363e464e535b606265666664605d55504941382f261b110607121c273039424a50565d606466666563605c55504941382f261b11060000000000000000000000000000000000000000000000000000000000000008111a232c343d444d525a61666d72777c80838688898b8b8c8b8a898785827f7b76716d66605b534c443b33291e150b000000000000000000000000000000000005111d2935414c565f696e7a8085898b8b8a86817b706b60584e42382e23170c00000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6ddd3c9c1bab6b5b4b4b4b4b4b4b4b4b4b5b7b9bbc0c7c7cdc8c3bdb9b4aea7a09892867d6f695e52483e3322190f0400000000000000000000000000000000000000050b1013191d202124292c2d2f303132323232312f2e2d2a2522211f1a15110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262b31373a3b3e40403f3c3a38342e261e1a11090000000000000000000000000000000000000000020b141c22282f34383a3d3f403f3d3a39352f29231d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131b232b323b414650545c60666c7074797c7f828587888a8a8b8b8b8b8a89888684817e7b78736e6a636059524d453d352b22190d03000000000000000000000000000000000000000000000000000815222f3b4855626e7b8898a3aebac7d3e0ecf9fffffff7ebded1c5b8aca095887b6e6255483b312834404b5564707d8a98a2aebac6d3dfecf8fffffff8ecdfd2c5b9ac9f9286796d6053463a2d2013070000000000000000000000040d1a232c353e444c5254595c5d5e5c5954524c4442464f55565e6164666869696969686764615f5755534e47433c332d261d150d030000000000000000000000000000050f171f282f3539404546494b4b4a4746413a3631292119110800000000000004101c2834404a54626c74808a90939a96918c857f79716d67696a6f7a85929eabb8c5d0dbdacec1b4a79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c38444f5964717e8a96a0acb9c4cfdad1c7baaea2988c7f73675c5145382d22170b0000000000000000000000000915202a333e48505860656c6f727372706d67605b534941382d22170b1118232e39424a545c60686d70727372706d67605b534941382d22170b01000000000000000000000000000000000000000000000000000000000006101a232c353e464e565e616c71797e83888c9092999697989898979697928f8b87837e79716c655e564d453b30271d1207000000000000000000000000000000000713202d3946525d686e7b838d9298989899928e857d706a5f544a3f34281c1003000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6e5dbd3ccc6c3c1c1c1c1c1c1c1c1c1c1c2c3c5c7cbd1cbc3bcb8b2acaaa29f9591867d706b60564d42362c221007000000000000000000000000000000000000040a0f161c1e24292c2d2f35393a3c3d3e3f3f3f3e3e3c3b3936302f2e2b26201d19130c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18212a31373c4246484b4c4d4c4946443f38302c231b1209000000000000000000000000000000000000020b141d262d33394045474a4c4d4c4a4745413a342f271f160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a141c252d353d444c525a61666d71787d8185898c8f92979597979898989797969992918e8b8884807b76706b615e574f473d342b1f150b010000000000000000000000000000000000000000000000000713202d3a4653606d7986929facb8c5d2dfebf8fffffff7eaddd0c4b7aa9d9184776a5f53473a2e232e3a4753606d7985929facb8c5d0dbe7f2fefffff6e9ddd0c3b6aa9d908377665c5044382b1f120600000000000000000000000008111a232c323a4145474c4f51514f4c4746413b363e44484c525457595b5c5d5d5c5b5a5855534d4847433c373127221b140b030000000000000000000000000000040d172129313a40454b51535658585754524c46423b332b231910070000000000000c18232e3942505a646e747e83868888847f7a726d67605c58606873808c99aab4bfcad6dccfc2b6a99c8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d4653606c7884919ea9b2bdc9d5d6cabfb4aa9e9185796d60544a3f33281c0f0300000000000000000000020e1a26313c45505a616a6f787c7f807f7d7a726c655b53493f33271e1319232834404a545c666d737a7d7f807f7d79726c655b53493f33271d120700000000000000000000000000000000000000000000000000000000040e18222c353e474f5860696e767e848b9095999c9fa3aba4a5a5a5a4a9a29f9b9a938f8a847e776e685e574d43392e23180c00000000000000000000000000000005121e2a36424d57616d7a8491959fa2aaaba39f9792867c6f665c5044382c1f1206000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6ede5ddd7d2cfcececececececececececfd0d2d3d7cdc3b9b1aca8a09e98928d837c706b60594f443b30241a10000000000000000000000000000000000001070d161b21272c2f35393a3e404547484a4b4b4c4c4b4a494746413f3c3a37312c29241e18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a333c42474d5355585959585653504a423e352d241b0f0500000000000000000000000000000000000a141d262f383f444b5153565959595754514c45403931281f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c262e373f474f565e616c71787e84898e9298999c9ea1a9a3a4a4a5a5a4a4aba39f9e9b9896918d88837d756e6960594f463c31271d120700000000000000000000000000000000000000000000000006121f2b3844505c667783909daab6c3d0dde9f6fffffaede1d5c9bdb2a8998d807366574e42372b1f2c3845515d6775828e9baab4bfcad6e2effbfffff4e7dacec1b4a79b8e817468544a3f34281c10030000000000000000000000000008111a20282f35393a3f434444433f3b3936302a33383a4146474a4d4e4f50504f4e4d4b4847423c3a37312b262017110a020000000000000000000000000000010c161f29333b434b51555c6063656564615e56534d453d352b22190c03000000000007121c27303f48525c646c71777a7b7b79736d68605c55514e56626f7c8898a2aebac7d3ddd0c3b7aa9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2b3844505b66717e8b96a1adb9c5cfdbd0c6b9ada1978b7e71665b5044382b1f160a0000000000000000000006121e2b37424d57616c707c83888b8c8c8a857f776c655b50443a302419202b353d44515c666d7880868a8c8c8c8a857f776c655b5044392f24180c000000000000000000000000000000000000000000000000000000020c16202a343d474f59616a6f7b828a91969da0a7a9acaeb4b1b1b2b1b1b3adabaca49f9c96918b827a6e695e554b4034281c100400000000000000000000000000000714212d3a46535f6974818e96a0a8aeb4b5afa9a2989184786d6053463a2d201307000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6ebe3dbd5d0cdcccbcbcbcbcbcbcccdcfd2d4d8ddd4c8bcb1a7a09d96918c8680796f6a60594f473d32291f120800000000000000000000000000000000040c131821272c32383a4145474b4b515355575858595858575654524d4c4847433c39352f29231d150d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c454d53575f616466666562605c544f473e362d21170d0300000000000000000000000000000006111c262f38424a50555c606365666664605d55514b433a31281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e384049515960686e757e848b91969b9fa2aaa9abadb3b0b1b1b2b2b1b0b5afacaaa8a8a19e99948f89827b6f6b60584e43392f24180c00000000000000000000000000000000000000000000000003101c28343f4a546875818e9ba8b4c1cedbe7f7fffff8ebded2c5b9aca096887c6f6255493c31261d2935404b5564717d8a98a2aebac6d3dfecf7fffff2e5d8ccbfb2a5998c7f7266594c3f2e23170b000000000000000000000000000000080d161e24292c2d3236373736332e2d2a2521282c3035393a3d40424343434241413e3b3a37312e2b26201b150b060000000000000000000000000000000008131e28313b454d555d60676d707172706d68615e574f473d342b1e150b0000000000000b151e2d36414a525a6164686d6f6e6c66605d56514b454653606d7985929facb8c5d2ded1c4b8ab9e9185786b5e5245382b1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54606d7984919ea9b3becad6d5c9beb3a99d9184786c6053463d32271b0f030000000000000000000814212e3a47535f69707e87909598999998928c81776c60564c4135291e29323d47515b606d78818c929899999897928b81776c60554b4035291d1004000000000000000000000000000000000000000000000000000008131e28323c464f59616b707c858f949ea1a8acb1b6b9babfbebebfbebdbebab8b6afaca8a19e948f847b6e675c5145382c1f130700000000000000000000000000000815222e3b4855616e7b87939fa8b1babfc0bbb3aaa0968b7e7164584b3e3125180b000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6e3d9d1cac4c0bfbebebebebebebfc0c3c6c8ccd2d1c4b8aca095908884807a736d675f584f473d352b20170d00000000000000000000000000000000060d161d242932383d44484c525457555d60626364656565656462615e565955534e4745413a342f271f19100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1a26313c464e575f62696e717373726f6d66615950483e33291f14090000000000000000000000000000000b17222d38424a545b60676d70727372706d67605c554c433a2f24190d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b252e37404a525b626b707a818a91969ea0a8abaeb4b6b8b9bebdbdbebebebebdc0bbb9b7b5b2acaba69f9c948f857d6f6a60554b4035291d10040000000000000000000000000000000000000000000000000b17232e3f4c5966727f8c99a5b2bfcfdae6f2fefff7eaddd1c4b7aa9e9184776a5f54473b2e2018242f3a4753606d7985929facb8c5cfdae6f2fffbeee2d6cabeb3a9968a7d7063574a3d3024170600000000000000000000000000000000040c13191d202126292a2b292621201e19161c1e25292d2e313335363636363534312e2d2b26211f1a150f0a0400000000000000000000000000000000010d19242f3a434d575e676d73797d7e7e7d7a756e6960594f463d30271d12070000000000030c1b242f3841485055565d606262605b54524c45403944505c667784919daab7c4d0ddd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3845515c67727f8c97a2adbac6d0dacfc4b8aca0968a7d7064594f43382c201509000000000000000004101d2935404b55626e7b869299a0a7a6aaa29f938c7f72685d5245392c26303b444f59636d74818e939fa2aaa6a9a29f938b7f72675d5145392c1f130600000000000000000000000000000000000000000000000000030c1925303a444e58616b707d8691979ea6adb2b8bcc3c5c7cbd1cbcbcbcfcac6c5c0bbb9b2ada69f969083796d6053463a2e23180c00000000000000000000000000000c1925323f4c5865727f8b99a4afbac3cacbc5bcb2a89b8f8275685c4f4235291c0f020000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e6dbd1c7bfb8b4b2b2b2b2b2b2b2b2b3b6b9bbc0c7d0c3b6aa9d90837b77736d68605d554e463d352b23190e05000000000000000000000000000000070f181f282f353d43484f54565d606468676d6f707172727271716f6e686966625f5854514c454039312b2217110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f696e767b7e7f807f7c78706b625a50453b31251a0e0200000000000000000000000000030f1c28333f4a545b666c72797d7f807f7d7a736d675d554c41352920150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19232d374049525c636d727d858f939ea0a8acb2b8babec2c5c6c9cfcacbcbcbcad1cbc7c5c4c1bdb9b7b0aba69e9792867c6f675d5145382c1f1306000000000000000000000000000000000000000000000000061724303d4a5763707d8a96a9b3bec9d5e1eefaf9ece0d4c8bcb1a7998c807366584e43372b1f131f2c3945515d6775818e9ba9b3bec9d5e4eef9f9ecdfd3c6baada297877b6e6154483b2e211508000000000000000000000000000000000001080d111314191c1e1e1c191414110e0b1013191d2021242628292a2a2928272522211e1a15120f0a0300000000000000000000000000000000000004111d2935414c565e696e798085898b8b8a86817b706b60584e42392e23180c00000000000009121d262f363e45494c5254555553504a45413a34343f4a546976838f9ca9b6c2cfdcd2c5b8ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2834404b55606d7a85929faab4bfcad6d4c8bdb2a89d9083766b6054483c31261a0e020000000000000006131f2c3845515d6775818e98a2abb1b3b4aea59f92857a6d6054473a2d2e38424d56606b727f8c939ea5aeb4b3b3ada59e9285796d6053473a2d201407000000000000000000000000000000000000000000000000000b151e2935414c565f6a707d869298a1a9b0b9bdc4c8ced2d3d7dcd5d4d5dbd6d3d2ccc8c4bdb9b0a8a0958b7f7265544b4034281c1004000000000000000000000000010e1b2834414e5b6774818e9aabb5c0ccd6d7cec3b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9e0d5cabfb5ada8a5a5a5a5a5a5a5a5a6a9acafb6bec2c4b8aca09590837b6f6b6059514b433c342b23191107000000000000000000000000000000071119212a313a40454f54596063686d7174777a7b7d7e7e7f7f7e7d7c7a7876726f6a65605d55514b433d3428221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a6e7b82888b8c8c8b89847d716c62574d42362a1e12050000000000000000000000000006121f2b3844505b666c787f85898c8c8c8a8680796d675d51453d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212b353f49515b636e737f8792979ea5acb2b9bdc3c6cad0d1d2d5dad7d7d8d8d7dcd7d3d2d1cec9c5c2bbb7b0a9a1989184796d6053473a2d2014060000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a1adb9c6d2dfecf8f8eaddd1c4b8ab9f95887b6e6255483c32261b101d2935404b5563707d8a97a1adb9c7d2dde8f4f8ebded2c5b8ab9f928578695e52463a2d20140700000000000000000000000000000000000000010407070c101111100c080705020002080d111314171a1b1c1d1d1c1b1a181514120e09060200000000000000000000000000000000000000000613202c3945525d686e7b838d9298989899928e857d706a60544b4034281c10040000000000000b141d242c33393a414547484846443f383530282e424f5c6875828f9ba8b5c2cedbd2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3945515d6773808c98a2aebac7d1d9cec3b7ab9f95897c6f63574e42372b1e1408000000000000000714202d3a4753606d7986929faab4bdbfbebaaea2988b7e7164584b3e31343f4a545e69707d87939fa5afbabfbfbeb9ada1978a7d7063574a3d3024170a00000000000000000000000000000000000000000000000007121d27303946525e686f7c869298a3aab2bbc2c9cfd4d6d3d2cecac8c7c8c9cacdd0d2d4cfc9c2bab1a79d908377665c5145382c1f1306000000000000000000000000020f1c2835424f5b6875828e9ba8b5c1d0dcded1c5b8ab9e9285786b5f5245382c1f12050000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dcd0c4b8ada39c99989898989898999a9c9fa4acb0b8c2bcb1a79f9590857d706b60584e42382d22171107000000000000000000000000000000071119232b333c434b515960636b70757a7e818486888a8b8b8c8b8b8a898785827f7b77726d67605c554e463f332d261d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59626e7c858f94979999989691877e71695e53463a2d21140700000000000000000000000004111d2935404b55606c78818c929798999998928d83796d60584e43372b1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333d47515b636d73808b9299a2a9afb9bdc4c8ced3d6dbdededbd8d7d6d5d6d6d7d9dbdddddad5d2cdc7c1bbb3aaa0968b7e7265584b3f2e23170b0000000000000000000000000000000000000000000000000714202d3a46525e697885929eabb8c5d0dce7f2ede2d6cabeb3a99d9083766a5f53473a2a20150c18242f3a4653606d7985929eacb6c0ccd8e2edefe7dccfc2b6a99c8f827669574d42362a1e1205000000000000000000000000000000000000000000000000030404030000000000000000010507070a0d0f1010100f0e0e0b080806020000000000000000000000000000000000000000000005111e2a36424d57606d7a8390959fa2aaaba39f9792867c6f665c5145382c1f1306000000000000020b121a22282d3035393a3c3b3938332d29242835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414b55616d7a86929fabb5c0cbd7d3c7bcb1a79b8f82756a5f53473b3025190e01000000000000091623303c4956636f7c8998a3aebcc6cfcabeb4aa9a8e8174675b4e41333b44505c666e7b859299a4afb7c1cacfcabeb3a9988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000c18232e3942505a616d7a849198a2aab4bcc4cdd5d8d0cac6c5c1bdbcbbbbbcbdc0c3c5c7cbd1ccc3b9ac9f9386796d6053463a2d201307000000000000000000000000010e1b2734414e5a6774818d9aaab4bfcbd5d6cdc4b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d9cdc0b4a89c918c8b8b8b8b8b8b8c8d90939a9fa6b0b8c2b9b1a79f9792867d706a5f544a3f33281c11060000000000000000000000000000060f19232b353d454e555d606b6f767d82868a8e919399969798989898979597928f8c88847f7a726d67605851443f382f261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b778390979fa6a6a6a8a09992867b6e6154483b2f24180c0000000000000000000000000613202c3945515d67737f8c939ea1a9a6aaa29f958e81756a6054473b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a25313b454f59626d737f8c929fa3abb3bbc1c9ced4d9dfdbd6d3d2cecccac9c9c9cacbccced1d2d4d9dfd8d3cdc5bcb2a89c90837669544a3f34281c1003000000000000000000000000000000000000000000000005121e2a36424d576875828f9baab4bfcbd6e0e5e2dcd3c6baada2978b7e7265584e43372b190e07121f2c3844505c6673808d9aa4afbbc6d1dce2e3ded4c8bcb1a7998c7f7366594c4030251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e6974818e95a0a7aeb4b5afa9a2989184796d6053463a2d20130700000000000000000810171d1e24292c2d2f2f2d2b28221c192835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000000000000020405050505000d18242f3a46525e6874808d99a3afbbc7d2d8cdc2b9ac9f93877b6e62564c41362a1d13070000000000000a1724313d4a5764707d8a97aab4bfced8d0c2b5a89b8f8275685c4f423b454f59606d78829097a1abb5c0c9d6d1c7bdb1a7988c7f7265594c3f3226190c000000000000000000000000000000000000000000000004101c2834404b54616c75818e96a1aab4bcc6cfd6d2ccc5bebab8b4b0afaeafafb1b3b6b9bbc0c5c7c6baaea298877a6d6054473a2d211407000000000000000000000000000b1825323e4b5865717e8b98a3aebac2c9cbc4bbb1a79b8e8275685b4f4235281c0f020000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d8ccbfb2a5998c7f7f7f7f7f7f7f7f8083878f949fa6b0bbc2b9b1a9a29892857c6e665b5044382d22170b00000000000000000000000000040d18212b353d474f575f676d747c83898e92999b9d9fa4aba4a5a5a5a4a4a9a19e9c9995918b857f796f6a635b504a42382f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c89959fa9b0b2b3b2aba2988d807366554b4035291d100400000000000000000000000714202d3a4753606d7985929fa5adb3b3b4aea79e93897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202a36424d57606b727f8b919ca4afb5bdc5cdd5d9dfd8d4cfcac6c5c1bfbdbcbcbcbdbebfc1c4c5c8ced2d3d7d6cec4b8ab9f928578665c5044382b1f12060000000000000000000000000000000000000000000000020e1a25303f4b5865727f8b98a3aebac5ced4d9d5d1cabfb4aa9f9285796d6053473c31261a0703101c28343f4a54626e7b87939faab4bfcbd1d5d7d3ccc4b8aca095897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000001040607090b0b0c0c0b0b090707050100000000000000000000000000000000000000000000000000000814212e3b4754616e7b86929fa8b1babfc0bbb3aaa0968b7e7165584b3e3225180b000000000000000000050c1113191d20212222201f1c17111b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000000004080a0a0f11121212121207131d2a36414c56616e7b86929facb6c0ccd8d4c8bbafa49a8e8174685e52463a2f24180d0000000000000b1824313e4b5764717e8a97a4b1bdd1d7cfc2b5a99c8f8276695c4f43424d57616b73808d949fa9b3bdc7d2d7cbc0b5ab9f95897c6f6256493c2f231609000000000000000000000000000000000000000000000006131f2c3845515c66707d8a939ea8b2bcc6cfd8d0c7c0bbb3adaba7a4a2a1a2a3a4a7aaacafb5b9bbc0b5ab9f9285796c605346392d201306000000000000000000000000000814212e3b4754616e7a86929fa7b0b9bebfbab2a9a0958a7d7164574a3e3124170b000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a7272727272727273767b828f949fabb7c3c2bbb3aaa2979083786c60544a3f33281c0f030000000000000000000000010c161f2a333d474f59606a6e79818990949b9fa3abaaacafb5b1b1b2b2b1b0b3adaba9a7a09d97928c847c726d605b544a41382d22170e0500000000000000000000000000000000000000000000000000000000000000000000000000040607090a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0d1a2734404d5a6773808d9aa7b1bbbfbfbdb4aa9d908477675d5145382c1f130600000000000000000000000a1724313d4a5764707e8a97a2adb9bebfbfbaafa59a8d8073675a4d4034271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a46535e69707d87929fa3adbbc0c7cfd7dfdbd6cdc8c5bebab8b5b2b0b0afb0b0b1b3b5b7b8bdc2c5c7cbd1d3c6baaea29886796d6053463a2d2013070000000000000000000000000000000000000000000000000914212d3a4754606d7a86929fa9b3bcc4c8cec9c6bfbaaea2988d8073675d5145392a201509000c17232e3847535f6975828f98a3aebabfc6c9cbc7c2bab0a69d9184776b6054483b2f22150900000000000000000000000000000000000000000000000000000000000000000406080d11131416171819191817161413110d08060401000000000000000000000000000000000000000000000c1825323f4b5865727e8b99a3afbac3cacbc5bcb2a89c8f8276695c4f4336291c10000000000000000000000002080d111314151513120f0b061b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000000000050b101416171b1d1e1f1f1f1f1f1f1925303a46535e6974818e9aa4afbbc8d4d8ccc0b6ac9f92867a6e61554b4035291c110600000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b6a99c8f8376695c503f4a545e69707d88939fa6b0bbc5d0d6cdc5bbafa3999083766a6054473b2e22150800000000000000000000000000000000000000000000030f1c28333f4a54606d7984919ea5afbac4ced7d0c7beb6afa9a29f9b9795949596979a9d9fa3abacafb5afa4998f8275655b5044372b1f1205000000000000000000000000000714202d3946525e6873808d959fa6adb3b4aea9a1979083786c605346392d201306000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e65656565656667696e78828f9ca7b1bcc8c5bcb3a99f958b7f72665b5044382b1f1206000000000000000000000007131d28313c464f59606b707c848e929c9fa6acaeb5b7b9bbc0bebebfbebebdbeb9b8b5b1aca9a29e9691877f746c665b53493f332720170d0200000000000000000000000000000000000000000000000000000000000000000001070c1013141617171717171717171717171717171717171d293643505c6976838f9ca9b6c2cdd0c5b9ac9f92867a6d6053473a2d20140904000000000000000000000d1a2633404d596673808c99a9b3becacfcac1b6a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a44505a616e7b859299a3afb6bfcbd1d9e0d7d0cac2bcb8b3adaba8a5a4a3a2a3a3a4a6a8aaacb2b5b9babfc5c6c5b8ac9f928579665c5044382b1f12060000000000000000000000000000000000000000000000000713202c3945525d6874818e97a1aab2b8bdbcbdb9b4aea49f92867a6e61554b403529180e030006111c2b37424d57616e7b86929fa4aeb4b9bec0bbb9b1a89f948b7e7165594f43382c1f1307000000000000000000000000000000000000000000000000000000000000070c101313191d2021222425252525242321201d191413110d080100000000000000000000000000000000000000000e1a2734414d5a6774808d9aabb5c0ccd6d7cec4b8ab9e9184786b5e5245382b1f1200000000000000000000000000010407070908060603000e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000001080d171c202324282a2b2b2b2b2b2b2b2b2b2a36424d57626e7c87939facb9c2cdd8d2c7baaea3988d8073675d5145382e23170c00000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b6a99c8f8376695c5044505c666e7b85929aa4afb8c2cdd6cfc5bbb0a69f92877c6f62584e43382b1f13060000000000000000000000000000000000000000000006121f2b3844505b66727f8b96a0acb7c1ccd6d2c7beb6aca49f97928e8a898888898a8d9092999c9fa3aba39f93877c6f6253493f33271b0f030000000000000000000000000005111e2a36414c56606d798390949ea1a9aaa39f9791857b6e655b5044372b1f1205000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615858585859575f666f7c8895a0acb8c5cec5bcb1a79e9184786c605346392d20130600000000000000000000010d18242f3a434e58606b707d8591969da5abb0b9bbbfc4c6c7ccd2cbcbcbcbcfc9c6c5c2bcb8b3ada8a099938c81786c655b50443e32291e140800000000000000000000000000000000000000000000000000000000000000040a0f12181c1f20232424242424242424242424242424242424242a3744515d6a7784909daab7c3d0d4c7bbafa399877b6e6154483b2e211a14100c0701000000000000000e1b2834414e5b6774808e9aa7b4c1d0dad1c4b7ab9e9184786b5e5145382b1e12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56626c76828f97a1abb5c0c8d7dcded6cec6bfbab1aba9a29f9b99979696969798999b9ea0a8a9acaeb4b8babbb2a99d9083766a544a3f34281c100300000000000000000000000000000000000000000000000004111d2935414c56616d7a859298a1a9acb1afb2acaba39f928c7f72685e5243392f2418060000000e1a26313c46535f69727f8b929fa3aaadb3b5afaca79f969082776c6053463d32271b0f0300000000000000000000000000000000000000000000000000000003090e12181c1f2024292c2d2f3132323232312f2e2d2a2521201d19130f0a040000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1d0dbdfd2c5b8ac9f9285796c5f5246392c1f1300000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000040c131921282d3031353738383838383838383838313b47535f6a75828f9ba6b0bbc7d3d7cbbfb4aa9f92857a6d60544a3f34281c1003000000000b1824313e4b5764717e8a97a4b1bdcad7cfc3b6a99c908376695d504f59606d78829097a1acb6c0cad4d1c7bdb3a99f948d80736a6054463d32271b0f03000000000000000000000000000000000000000000000613202d394653606c7884919ea8b2bdc9d3d8ccc0b6aca49a938d85817d7c7b7c7c7e8083868b8f92999b99928c7f736a605441382d22170b0000000000000000000000000000010d1925303b45515c676d7a828c9297979898928e857c6f695f53493f33271b0f03000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544c4c4c4c4d545f6a7784919daab7c4d0cec3b9aca1968a7d7063574a3d3024170a0000000000000000000004111d2935414b555f6a6f7d869297a0a8afb7bcc2c7cbd1d2d4d7ddd8d8d8d7dad5d2d1cec8c5beb9b2aba49f938e81776c605a50443b3025190e030000000000000000000000000000000000000000000000000000000000070e151b1d23292c2d2f303131313131313131313131313131313131313844515e6b7784919eaab7c4d1d7cbc0b5ab95887b6f6255483c2f2a251f1d18120b030000000000000f1b2835424e5b6875818e9ba8b4c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e68717e8b949fa9b3bdc7d1dadfd6ccc4bcb4aea79f9d97928e8c8a8989898a8b8c8e9196989c9fa3ababaeaeaaa1968c7f7265594c3f2e23170b00000000000000000000000000000000000000000000000000010d1924303a46525e68707d8691979da0a8a3a8a19e99928c80746d62564c4131281d120700000009151f2a36424d57626d74808c92989ea1a9aba39f9c9590847b6e655b5044372b21160a000000000000000000000000000000000000000000000000000001080d141a1d23282c2d2f35393a3c3e3e3f3f3e3e3c3a3936302d2c29241e1b150e0903000000000000000000000000000000000e1a2734414d5a6774808d9aaab4bfcad5d7cec4b7ab9e9184786b5e5145382b1e1200000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000040d161e242933393c3d4244454545454545454545454545434e58626f7c89949fabb7c3cdd9d1c6baada2978c7f72665c5044382c1f160b000000000b1824313e4b5764717e8a97a4b1bdcad7cfc3b6a99c908376695d4d57616b73808d949fa9b3bec7d2d7cbc0b5aba1979082786d60584e43342b20160a0000000000000000000000000000000000000000000004101c2834404b5563707d8a96a1acbac4cedbd4c8bbafa49a9388817a74716f6e6f707174777a7e82868b8e8c877f736d63584e432f261b110600000000000000000000000000000008141e2834404b555e686d797f85898a8b8986817a6f6a60574d41382d22170b00000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473f3f3f424e586875828e9ba8b5c1ced5c9bdb2a89a8d8074675a4d4134271a0e010000000000000000040e18222c3945515d676e7c869298a2a9b2bac0c7cdd3d7dcdcd6d3d2d0cfcfd1d2d5daded9d4cfcac3bdb5afa59d938d80736c61564c41362a20150a0000000000000000000000000000000000000000000000000000000009101920262b2f34383a3c3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e45515e6b7884919eabb7c4d1dcd1bbafa295887c6f6255493c3a36302c29241d150d0500000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56616d7a85929fa6b0bbc5cfd9e1d6cdc4bab2aaa29f95908a85827f7d7d7c7d7d7e808284878b8f92999b9fa2a39f989184796d6054473a2d211406000000000000000000000000000000000000000000000000000008131e2935414c56606b707d848c919595969596918d867f776c605b51443b301f160c01000000030e1a26313b45515b646e747f868d919795969992908b837b6e695e53493f3327190f0400000000000000000000000000000000000000000000000000040c13191f252a2e34383a3e414547494a4b4c4c4b4a494746413e3a39352f2b26201a140d050000000000000000000000000000000b1825313e4b5864717e8b98a2aebac2c9cbc5bcb1a79c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000020c161f282f353e44494a4e50515252525252525252525252525254606a76828f9ca7b1bcc8d4d6cabeb3a99e9184796d6053463d33271c10030000000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6a99d9083766a5d545e69707d88939fa6b0bbc5d0d5ccc3bbafa39992857b6e665c50463d3222190f040000000000000000000000000000000000000000000006131f2c3845515c6775828e9ba8b2bdccd6d4c8bcb1a79f93887e746d6764626162636467686d71767a7e81807b736d635b52463d321d140a00000000000000000000000000000000020c18232e39434c565e666d72797c7e7e7d7a746d6860584e453c2f261b110600000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473b3230414e5b6774818e9aa7b4c1cddacec3b6aa9d9083776a5d5044372a1d110400000000000000000a15202b37434e58606d79849198a2aab3bbc3ccd3d8e0d9d4d0cbc7c5c3c2c3c4c5c9cfd3d7dcdbd6d0c7c0bbafa59c928a7e71685e52463c31261b0f01000000000000000000000000000000000000000000000000000009121b222a323739404547494a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a515e6b7884919eabb7c4d1d5c8bbafa295887c6f6255494846423b38352f271f170e05000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e6873808d97a2adb8c2cdd7e1d9cfc4bbb2a8a198928b837d79757271706f7070717375777b7e82868a8e929899928f867d6f675d5145392c2013060000000000000000000000000000000000000000000000000000020d1925303a444f59606b707a7f84878889888784807b736c655b50493f32291e0d04000000000009141f2a333f49525c646d727b80858789898886837e786e695e574d41382d22170700000000000000000000000000000000000000000000000000060d161e24293136394045464a4c5154555758585858575654524c4b4745413a37322a251f170f0700000000000000000000000000000714212e3a4754616d7a86929fa6b0b9bebfbab3aaa0958b7e7164584b3e3125180b00000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000a141e28313a41454f55575b5d5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5863707d8995a0abb8c4d1dbd0c5b9ada1968a7e7164594f44382c20150a0000000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6a99d9083766a5d5c666e7b85929aa4afb9c2cdd7cec3baafa59f92877d70695e544a3f342b20100700000000000000000000000000000000000000000000000713202d3a4653606d7985929facb8c4cedfd1c4b8ab9f958c7f726c605d555655555657565e6165686d7174736e6a635b524940342b200b02000000000000000000000000000000000007121d27303a444c545c60666d6f7171706d67615e564e463c332a1d140a0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e6154473d3d3e424e586875828e9ba8b5c1cedbd1c4b8ab9e9185786b5e5245382b1f120500000000000000030f1b26323b4754606a74808d96a0aab3bcc5cdd5deded5cec8c6bfbab8b7b5b6b8b9bdc4c7cbd1d9e1d9d2ccc0b7aea49f92857a6e61584e43372b1d13070000000000000000000000000000000000000000000000000008111b242d343c43474b515356575757575757575757575757575757575757575757575e6b7884919eabb7c4d1d5c8bbafa295887c6f62575654524d47454039312920170d020000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54616e7a86929fa9b3becad4dfdcd1c7bdb3a9a19691867e78716d66666463636364656668696e72767a7e8185898886827b6f6a60554b4135291d110400000000000000000000000000000000000000000000000000000008131e28323d474f5960686d72777a7c7c7b7a78746e69605b53493f372d20170d000000000000030e18212d37404a525b62696e74787b7c7c7b7a76716c665e574d453b2f261b11060000000000000000000000000000000000000000000000020a11171f282f353b42464b515357555d606264656565656462615e565854524c47433c3631292118120b030000000000000000000000000713202d3946525d6873808c949fa6adb3b4aea9a1989183786d6053463a2d20130700000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000006111c26303a434c52596164686a6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b7783909daab6c3d0ddd5c9bdb2a89d9083776b6055483c31261b0f0100000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6aa9d9083776a5a606d78839097a2acb6c0cbd4d0c5bcb1a89e938c7f726b60574d42382e22190f0000000000000000000000000000000000000000000000000a1723303d4a5663707d8998a2aebac6d3d4c8bcb1a79d9083786c605a514c494849494b4c5254565e61656866625f58524940372e22190f000000000000000000000000000000000000000b151e2a333c454d535960636768686764605d5650483f372d22180b020000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e61544a4a4a4b4d545f6a7784919daab7c4d0ddd2c5b9ac9f9286796c5f5346392c2013060000000000000006131f2b37434e58626f7c87939fa8b2bcc5ced7dfdad2ccc3bdb8b4aeacaaa9a9abadb2b9bbc0c7cfd6deddd7c9c0baada2978e81756a5f53473a2f24180d010000000000000000000000000000000000000000000000050f1a232d363f464e54555c606263646464646464646464646464646464646464646464646b7884919eabb7c4d1d5c8bbafa295887c6f646463615e5753514b433b32291e14080000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6673808d98a2aebbc5cfdce3d7cbc0b5aba19791847c716c65605c5457565656575859575e6165676d7175797c7c7a756e6960584e433a2f24180d01000000000000000000000000000000000000000000000000000000020c16202b353d474f565d6066686d6f706f6d6867625f57504941382d251b0e0500000000000000060f1b252f38404951575e6167696e6f6f6f6d6764605b544d453b33291d140a0000000000000000000000000000000000000000000000020b141b2227313a41454d53555c606467676d6f7171727271716f6d686865605d56534e46423b3328231d150c04000000000000000000000005111d2935414c56606d788290949ea1a9aaa39f9792867c6f665c5044382b1f120600000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000b17232e38424c565d606c707577787878787878787878787878787878787878787e8a97a4b0bdcad7dacfc4b8aca095897d7063584e43372b1d130700000b1824313e4b5764717e8a97a4b1bdcad7d0c3b6aa9d9083776a616c74808d959fa9b3bec7d2d6cabfb4aaa0958e81756d62594f453b30261c10070000000000000000000000000000000000000000000000000d192633404c5966737f8c99aab4bfcad6d1c5b8aca095897c6f665b5045413c3b3c3d3e4146474c5254585b5955534e4640372e251c100700000000000000000000000000000000000006111c262f3c454d575f616b7073757574716d68625a51493f342a20150a0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e615757575758575e666f7c8896a0acb8c5d1dfd2c5b8ac9f9285796c5f5246392c1f1306000000000000000815212e3b47535f6a76828f9aa4afbac3ced7e0dad1c8c0bab1acaaa39f9d9c9c9ea1a9acafb5bdc4ccd6dfdbd6cabeb3a99f93877c6f62554b4135291d110400000000000000000000000000000000000000000000000b16212b353f4850585f62676d6f7071717171717171717171717171717171717171717171717884919eabb7c4d1d5c8bbafa295887c717170706e6966605d554c443b3025190d0400000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985919eaab4bfcdd7e1dfd3c7bbafa39991857b6e6a605b53504a4a4a494a4a4b4d4d5254555d6064666d6f6f6d68625f574e463d31281d13070000000000000000000000000000000000000000000000000000000000040e19232b353d434c5254565d61626362615e5655534d443f382f261b130900000000000000000009131d262f373f454d5354575e61626362605d5553504a423b332921170b0200000000000000000000000000000000000000000000020b141d262d333e434c52575e61676d7174777a7c7d7e7f7f7e7d7c7a7875716d68625f58534d453f342e271e160d0400000000000000000000010d1924303a44515c666d7a828c9297979898928e857d6f6a5f544a3f34281c100300000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000003101c28343f4a545d686d767d81838485858585858585858585858585858585858484919eabb8c4d1dee0d4c8bcb1a79c8f82766a5f53473a2f24180d01000b1824313e4b5764717e8a97a4b1bdcad7d0c3b7aa9d9084776a69707e8a929da7b1bbc5d0d4cac2baaea2989183796d605b51473d33291e150a000000000000000000000000000000000000000000000000030f1b27333f49536975828f9ca8b5c2d0dbd0c3b7aa9d9084776b60544a3f352f2e2f303036393a4146474b4e4d4847433c332e251c130a000000000000000000000000000000000000000b17222d38424d575f696e767d808282817e7a716c635b51463c32261b0f0000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a6e64646464646466696e78828f9ca8b2bdc8d4ded1c5b8ab9e9285786b5f5245382c1f1205000000000000000916222f3c4955626f7c88949facb6c0ccd5e0dcd1c8c0b6aea8a09d9892908f9091969a9fa3abb2bac4cdd6e1dbd0c5bbafa49a8e8174675d5145392c2013060000000000000000000000000000000000000000000004101c27333d47505a626a6f75797c7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e85929eabb8c5d1d8cbbfb2a5988c7f7d7d7d7c7b78736d675e564c41362a20150a00000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b5464707d8a97a1adbcc6d0dfe1d5c9beb3a99f92877d6f695f585049443f3e3d3c3d3d3e404246484c5154545c606362605d56534d453d342b1f160c01000000000000000000000000000000000000000000000000000000000000081119232b313a4145474c525455565554524c4847423c332d261d140a01000000000000000000010b141d252d333b4246484d525456565553514b46443f382f2920170f0500000000000000000000000000000000000000000000020b141d262f383f444f565d60696e74797d818487888a8b8b8b8b8a898785817e7a756f6a615e575145403930281f160d030000000000000000000008131e2834404a545d686d787f85898a8b8986817a6f6a60584e42382e23170b0000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000006121f2b3844505c666d7a828a8e90919191919191919191919191919191919191919197a1adb9c6d2dfe4d9cec3b7ab9f94887c6f62554b4135291d1104000b1824313e4b5764717e8a97a4b1bdcad7d0c3b7aa9d908477666e7b85929fa4aeb9c2cdd6ccc2b8aea49f92867c6e675d51493f352b20170c0300000000000000000000000000000000000000000000000005121f2b3744505b657784919eaab7c4d1d8ccc0b6ac998c7f7266594f42382d24222223252a2d3035393a3e41403b3a37312a211c130a01000000000000000000000000000000000000030f1c28333f4a545f696e7b83898d8e8f8e8b857e726d63584e43372b1c110600000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d4c7baada194877a7070707070707172757b828f949fabbac3ced9ddd0c3b6aa9d9083776a5d5044372a1d110400000000000006121f2b37434e586774808d9aa6b0bec7d2dee2d4cac0b6aea49d95918a8683828385888d9299a1a8b2bbc4cfdae1d8ccc0b6ac9f92867a6d6054473a2d211406000000000000000000000000000000000000000000000714202c38444f59626c717c8286898a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9297a1adb9c6d2d9ccc0b4a79b918c8a8a8a8987847f796e685e52463c32261b0f03000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6675828f9ba9b3beced8e2dbcfc6b9ada1978d80746b60574e443f38342e303030313230363a3b4145474b5153565554524c47423c332b22190d0400000000000000000000000000000000000000000000000000000000000000000811191f282f35393a4146474949484746413b3a373127221b140b020000000000000000000000020b131b212931363a3b4246484949484745403938332d261d170e0500000000000000000000000000000000000000000000000a141d262f384149505961686d747b80858a8e9196959798989898979596918e8b86817c756e69625b514b433931281f150b01000000000000000000020c18232e39424c565d666d72787c7e7e7d7a746e6860584e463c30261c11060000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000713202d3a4653606d78828f949b9d9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9ea1a9b2bec9d5e1eadfd3c7bbb0a69a8e8174675d5145392c201306000b1824313e4b5764717e8a97a4b1bdcad7d0c4b7aa9d9184776d78839097a2adb6c0cbd4cfc4bab0a69d928a7e716a5f554b40372d23190e05000000000000000000000000000000000000000000000000000613202d394653606c7986929facb9c5d2d4c8bbafa49a897c6f6356493d2f261c151616191d2025292d2e3235332f2e2b2620180f0a010000000000000000000000000000000000000006121f2b3844505b666e7b8590959a9b9b9a97928b7f726a5f5347382d22170e09030000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d7cabeb1a4978b7e7d7d7d7d7d7d7e7f82868f949ea6b0bbccd5e0dbcec1b5a89b8e8275685b4f4235281c0f020000000000000815212e3a47535f6a7885919eabb8c2d0d9e4d9d0c2b8aea49c928d847e7a777676787b81879196a1a9b3bec9d5deddd2c7baaea2988a7e7164574b3e2d22170b000000000000000000000000000000000000000000000916222f3c4854606b717f878f9298969797979797979797979797979797979797979797979797979ea1a9b3bec9d5dcd0c4b8ada39b989797979696918c837a6e61584e43372b1f1306000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929facb8c4cfdfe2d6cabeb3a99e91857a6d60594f453c332d28232323232425252a2d2f35393a40454649494745413a37312a2119100700000000000000000000000000000000000000000000000000000000000000000000070d161e24292c3035393a3c3d3c3a3936302e2b262017110a020000000000000000000000000001090f171f252a2d30363a3b3c3c3c3a38352f2b28221c140b05000000000000000000000000000000000000000000000006111b262f38424a535b606b707a81868d92979a9ea0a8a4a4a5a5a4a4a9a19e9b98928e87827b726d605c554b433931271d12070000000000000000000007121c27303a444c545c60666c6f7171706d67615e564e463d342a1e140a000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000005111e2a36414c5665727e8b949fa6aaababababababababababababababababababababadb2bbc4cfdae6efe3d8ccc2b8ac9f92867a6d6054473a2d211407000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7aa9e91847774808d959fa9b3bec8d2d1c6bdb2a89f948d80736c61584e433a2f251b110700000000000000000000000000000000000000000000000000000714212e3a4754616d7a8799a3aebac7d3d2c6b9ac9f93867a6d6053473a2d20140a09080d1113191d202125282622211f1a150e060000000000000000000000000000000000000000000613202d394653606c788390979fa7a8a8a9a29f92877c6f62544a3f33281c1a140e0902000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9d8ccbfb3a69b908b8a8a8a8a8a8a8b8c8f92999ea6b0b8c2cddee2d4c8bcb1a7988b7f7265584c3f3225190c000000000000000915222f3c4855626f7b8897a1adb9c6d4e2ddd2c7beb0a69c928d8078716d6769696a6f747c849197a1adb9c1ccd7e4d6cabfb4aa9a8e81746753493f33271b0f03000000000000000000000000000000000000000005111e2a36414d5663707d8792999fa3aaa4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4abadb3bbc5cfdae0d5c9bfb5ada7a5a4a4a3a8a19e958f82766a5f53473b2e211508000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8998a2aebac6d3dfdfd2c6b9ada2978b7e71675d51473d3327221b1717161717181a1e2024292c2e34383a3c3c3a39352f2b261f180f07000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2024292d2e2f302f2e2d2a25211e1a150b060000000000000000000000000000000000050d141a1e21252a2d2e2f302f2d2c29241f1c17110a020000000000000000000000000000000000000000000000050e17222d38414a545b656c737d848d92999fa2a9aaacb2b0b1b2b2b1b0b2adabaaa39f9a938f867f746d675d554b43392f24181007000000000000000000000b151e28323a424a51545b6062646563605d55524d443d342b22180c02000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000714202d3946525e687784919da6b0b6b7b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9bec4cdd6e0ebf4e9e0d3c7baaea2988a7d7063574a3d3024170a000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7aa9e9184777e8a929da7b1bbc5d0d7cbbfb5aba1968f82786d605a50463c31281d130a0000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894abb4bfcbd7d2c5b8ab9f928578675d5145392c20130200000105080d111314181b1a1514120f0903000000000000000000000000000000000000000000000a1724313d4a5764707d8a95a0a9b1b5b5b3ada3998e8175665b5044382d2a251f1a140b060000000000000000000000000d1a2633404d596673808c99a6b3bfccd9dbcfc3b7aca29b9797979797979797999b9fa3abb0b8c1cad4ded9d0c7b8aca095887b6e6255483b2f221508000000000000000b1825323e4b5865717e8b98a9b3bec9d5e4d8ccc0b6ac9f948d80746d66605d55585f626a6f7b85919ea6b0bbc6d2dfdbd0c3b7aa9d908477655b5044372b1f120500000000000000000000000000000000000000000714202d3946525e6877839099a3abaeb4b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b8b9bec5cdd6e1e6dbd1c7bfb8b4b2b0b0b0b2aca79f94887c6f6255493c2f221609000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99aab4bfcad6e2ded1c5b8ab9e9285796d60554c41342b2117110c06090a0a090e1214191d2023282c2d302f2d2c29241e1a150e06000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113191d202122232221201e1914120e09030000000000000000000000000000000000000003090e12141a1e2021232322201f1d18120f0b06000000000000000000000000000000000000000000000000020d172027333f49535b666c777f8891969fa3abadb3b7b9bdbdbebebebebdbdb9b8b4aeaca49f98928b81796d675d554b40352922190c03000000000000000000030c162028303940444a50535657585653514b46413b322b2219100600000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000814212e3b4754616e7a8795a0acb8c2c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c6c9cfd6dfe8e9e9e9e2d6cabfb4aa998c7f7266594c3f3326190c000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7ab9e91847b85929fa4aeb9c3cdd5cbc3bbaea39991847a6d665c50483e332a1f160c010000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2aebbd1dcd1c4b7ab9e9184786b554b4035291d10040000000000010507070b0e0d080806020000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b1bbc1c2beb5ab9f9285796c6053463f3836302a251f17110a02000000000000000000000d1a2633404d596673808c99a6b3bfccd9dfd4c8beb4aca6a4a3a3a3a3a3a3a4a5a8acaeb5bdc1cad3dcddd2c7beb2a89d9083776a5f53473a2e211408000000000000000d1a2734404d5a6773808d9aa6b3c0cfdae0d4c8bbafa49a8f82786c605c54514b4e53586069707d89939eaab6c3cfdcdfd2c5b8ac9f9285786c605346392d20130600000000000000000000000000000000000000000814212e3b4754616e7b8795a0abb5babfbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc5c6c9cfd6dfe8ede3d9d1c9c4c0bfbdbdbdbdb9b0a6988c7f7265594c3f3226190c000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976828f9ca9b6c2d0dbe1d5c9beb3a99a8d8074675c51433a2f22190f060000000000000205080d1113181c1f20232221201d19130e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000104080d1113141616151413110d08060200000000000000000000000000000000000000000000000205090e1214151616151413100c0703000000000000000000000000000000000000000000000000000008141e29323b44505b656c78818c939aa1a9aeb5babec4c5c8cecbcbcbcbcfc9c5c4bfbab6afaaa29f938e82796d675d514540342b1e150b00000000000000000000040e161e272e34383f4446494b4b4a4745403a363029201910070000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000916222f3c4955626f7c8895a7b1bccbd1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d2d5dadcdcdcdcdcdcdcdad0c0b3a69a8d8073675a4d4034271a0d000b1824313e4b5764717e8a97a4b1bdcad7d1c4b8ab9e9185839098a2aeb6c0cbd4cdc3b9afa59f92877c6f685e544a3f362c21180d04000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbd2ddd0c4b7aa9d9184776a544a3f33281c0f0300000000000001050707080706040000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9b6c3cdd0c7baada297877a6e6154504a46423b363028221c140b030000000000000000000d1a2633404d596673808c99a6b3bfccd9e6dad0c6beb7b3b1b0b0b0b0b0b0b1b2b5b9bbbfc6cfd3dcdbd6ccc0b6aca0968b7e7165584e43372b1f1206000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdfd2c6b9ac9f93877c6f665b504a454043474e57606b75828f9ba8b5c2d0dbe0d3c7baaea398877b6e6154473b2e21140800000000000000000000000000000000000000000915222f3c4855626f7b8895a7b1bdc6cbd1cacacacacacacacacacacacacacacacacacacacacacacad1d2d5dae1e8f1f5ebe3dbd5d0cccbcacacec9c0b3a69a8d8073675a4d4034271a0d000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697885929eabb8c5d1dedfd2c6b9ada197887c6f62554b4031281e1007000000000000000000000104070c10131316161413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050707090a090707050100000000000000000000000000000000000000000000000000000000000205070809090907060400000000000000000000000000000000000000000000000000000000010d1925303b44505a606c77818e939fa4acb2bbbfc6cad0d2d4d9d6d5d4d6dad5d2d0cbc7c0bbb4aea59d948f82796d605b51463d30271d120700000000000000000000040c151c23282d3338393c3e3e3d3a39352f2a251f170e07000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3afbbc7d1cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc9bdb2a8998c7f7366594c403326190d000b1824313e4b5764717e8a97a4b1bdcad7d2c6b9ada197919095a0aab3bec8d2d0c5bbb1a79e938b7f726a60564c42382e241a0f0600000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895acb6c0ccd8d1c5b8ab9e928578665b5044382b1f12060000000306080d111314151413100c07010000000000000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0d6cabeb3a995887b6e62605b54524d46423b332d261d150d0400000000000000000d1a2633404d596673808c99a6b3bfccd9e6e2d8d0c8c3bfbebdbdbdbdbdbdbebfc2c5c7cbd1d8dcd7d0cac0bbafa49a9184796d6053463c31261a0f0200000000000000101c2936434f5c6976828f9ca9b5c2cfdcdcd0c3b6a99d9083766a5f544a3f3835373c454f5964717d8a97aab4bfcad6e2d6cbbfb4aa95887b6e6255483b2f22150800000000000000000000000000000000000000000714212d3a4754606d7a8796a1adb9c5d2dcd7d7d7d7d7d7dad5d2d1cfcfcfcfcfcfcfcfcfcfcfcfcfd2d3d6dce2eaf2f8efe6ded8d3d0cfcfcfcfcfc0b4a79a8d8174675a4e4134271b0e000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a2adb9c6d2dfded1c5b8ab9e9285786a5f5343392e1f160c00000000000000000000000000000004060709090706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56616c737f8c939da5afb6bec4cbd1d6d4d1d0ccc9c8c8c9cbd0d1d4d6d2ccc5bebaafa69f948e81756d63584e42392e23180c0100000000000000000000030b12181c22282b2d2f3132302d2c29241d19140d0500000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb9c0c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2beb9ada1968a7d7063574a3d3024170a000b1824313e4b5764717e8a97a4b1bdcad7d5c9beb3a9a19e9da0a7b1bcc5d0d6cabeb3a9a0958e81746d62584e443a30261c12080000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b879aa4afbbc8d4d2c5b9ac9f9286796c605346392d20130904060a0f1215191d202122201f1d18120f0a03000000000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0dbd0bbaea295887c736f6c66615e57524d443f382f271f160d04000000000000000d192633404c5966737f8c99a6b2bfcfdadcdcdcdcd4cfcccacacacacacacacaccced2d3d7d9d4d1cbc5bebaaea59f93887d70665c5144382a2015090000000000000000101d2a3643505d697683909ca9b6c3cfdcd9ccbfb3a6998c807366584e42382e292b333d4754606d7a8798a2aebac7d3e0dcd0bbafa295887c6f6255493c2f22160900000000000000000000000000000000000000000713202c3945525d687884919eabb7c2cfd8e2e3e3e9dfd7cfc9c6c5c2c2c2c2c2c2c2c2c2c2c2c2c2c5c7cbd0d8e0eaf0e6ddd4cdc7c4c3c2c2c2c1bdb2a8998c807366594d4033261a0d000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a9b3becad6e2dbcfc2b5a89c8f827569584e4330271d0d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090a0b0b0c0c0b0a0806060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232d3946525e68707e88939fa5afbbc0c7d0d7d5cec8c5c4bfbcbbbbbcbfc3c4c8cdd5d8d0cac1b8b0a69e938c7f726a60544b4034281d1307000000000000000000000000070c11171c1f202324252320201d18130e08020000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000613202c3945525d687683909ca5afb5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b3ada49e9184796d6053463a2d201307000b1824313e4b5764717e8a97a4b1bdcad7dacfc4bbb3adabaaacb1b9c3ced7d3c6baada2979083796d605b51463d32291e140a000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86939facb9c6d2d3c7bbafa399887b6f6255483c31261a121013131b1f2124292d2e2e2d2c29241d1a150e060000000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0dcd0c3b6a99d90837f7c78736e69615e57504a4239312820160c030000000000000c1825323f4b5865727e8b98a9b3bec9d0cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcecdcec8c7c0bbb4aea49d938c80736b60544a403428180e030000000000000000101c2936434f5c6976828f9ca9b5c2cfdcd7cbbeb1a4988b7e7165584b3e2f261c212c3945525d687985929facb8c5d2dfd6cabfb4aa95887b6e6255483b2f221508000000000000000000000000000000000000000004111d2935414c566773808d9aa6b0bcc6d1dce7ece1d7cdc5beb9b8b5b5b5b5b5b5b5b5b5b5b5b5b5b8babfc6ced8e2e9ded4cbc2bcb7b6b5b5b5b4b2aba1968a7d7063574a3d3024170a000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcfdbe6d9ccbfb2a6998c7f7366594c403226150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608070c10131415171818191918171513120f0b0605010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c38444f59616e7a85929aa4afb7c0ccd2d7cfc9c3bcb8b7b2b0aeaeb0b2b6b8bcc2c9ced6d6cac2b8afa59f92877c6f665c51453a2f24180d0100000000000000000000000000060b0f1213161818171413110d070100000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000004111d2935414c5663707d8a939fa3aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a9a19e928a7e71675c5145382c1f1306000b1824313e4b5764717e8a97a4b1bdcad7e1d6cdc4beb9b8b6b8bcc3cbd5ded2c5b8ab9f92857b6e675d51493f342b20170c020000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677885919eabb8c4d1d7cbc0b5ab988b7e7265574e42372b231f1c1f20262b2e3035393a3b3a38352f2b262018100700000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0ddd1c4b8ab9f95908c8985807b756e69605b544b433a32281e150a000000000000091623303c4956636f7c8997a1adb9bec2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1bfbcb8b5afaaa29f928d81776c60594f42392e2318060000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd7cabeb1a4978b7e7164584b3e2f24191f2c3845515c677885929fabb8c5d2ded3c6baaea298877a6e6154473b2e2114080000000000000000000000000000000000000000010d19242f3c4955626f7c88949eaab4bfcbd7e1e6dacfc5bbb3adaba9a9a9a9a9a9a9a9a9a9a9a9a9acaeb4bcc6d0dce4d8cdc2b9b0aba9a9a9a8a8a8a0999184796d6053473a2d201407000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2bfccd8e3d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050a0f121515181d1f20222424252525252422201f1c1713110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323b4854606b75818e97a1acb6c0c9d8d6cdc5beb9b1acaaa6a3a2a1a3a5a9abb1b9bdc4ccd4d4cac1bbafa3999083796d60554b4035291d1104000000000000000000000000000000030606090b0b0a07060401000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000010d19242f3a4855616b74818d92999b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a97928b80736c61554b4034281c1004000b1824313e4b5764717e8a97a4b1bdcad7e8ded6cfc9c5c4c3c4c8cdd5dddbcec1b4a89b8e81756e635c524a40372e251c130a0100000000000000000000000000000000000000000000000000000000000004101c2934404b55697683909ca9b6c3d2dcd1c2b6a99c8f82766a5f53473e342e2b282c2d31373a3c414647484745403937312a22191107000000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0ddd4c7bcb1a79f9d9997928d87817b726c665c554c443a30261c110600000000000713202d3a4653606d7985919ea5aeb3b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b5b4b2b1acaba39f98928b80786d655b50473d30271c12070000000000000000000d1a2733404d5a6673808d99a6b3c0ced9d8ccbfb2a5998c7f7266554c4135292428303a4753606d7a8697a2adbac6d3dfd2c5b8ac9f9285786c605346392d2013060000000000000000000000000000000000000000000815212e3b47535f6a76828f98a3aebac3cfd9e3d5c9beb3a9a19e9c9c9c9c9c9c9c9c9c9c9c9c9c9fa3aab4bfcbd6e0d3c7bcb0a69f9c9c9c9c9b999691877d70675c5145382c1f1306000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9e2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11151a1f212224292c2d2f303132323232302f2d2b2822201d19130e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f5963707d89939ea9b3bec7d2d6ccc4bbb3ada7a09d9996959596989d9fa7acb2bac3cbd4d7cbc0b5aba0958b7f72675d5145392c20160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000008131e2c38444f59606d7880878c8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8d8a857e736e635a5043392e23180c00000b1824313e4b5764717e8a97a4b1bdcad7e0d6ccc4bdb9b7b9babfc6cfd8dbcfc2b6aa9e938c80736e635c524a40372e251c130a010000000000000000000000000000000000000000000000000000000000000c18232f414d5a6774808d9aacb6c0ccd8d0c3b7ab9f94887b6e625a504440393734383a3c4347484c52545553514b47433c342b23190e050000000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0ddd8cdc2b9b1aba9a9a19e99928e867f786d675d564c42382e23170c040000000006121f2c3844505c66727f8b939fa2aaa8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a8a7a6a7a09d99928e867e746d665c53493f352b1e150b000000000000000000000b1824313e4b5764717e8a97a7b1bcc8d4dbcec2b5a89b8f8275675d51453d352f3139424d5763707c8996a9b3becad6dcd0c3b6a99d908376665b5044382b1f120600000000000000000000000000000000000000000006131f2b37434e58626e7c86929fa7b1bdc7d1dcd2c6b9ada197928f8f8f8f8f8f8f8f8f8f8f8f8f9298a3aebac7d3ddd0c4b7ab9f94908f8f8f8e8c89847d706b61554b4034291c1004000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cddae1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e13191d20262b2e2f2f35393a3c3d3e3e3f3f3e3d3b3938332d2d2a251e1a150c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b7683909da5afbbc5d0d7cec4bab2a9a19e95918c898888898c90959ea0a8b1b9c3ccd6d1c7bdb1a79e9285796d6053473d32271b0f030000000000000000000000000000020608080b0c0b09080603000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000001101c28333e44505c666d747b7f8182838383838383838383838383838383838383838383838383838383838382817e7a716c635c52483e30271d120700000b1824313e4b5764717e8a97a4b1bdcad7dacfc4bab2adabacaeb4bcc6cfd8d2c6baafa59c928c80736e635c524a40372e251c140a020000000000000000000000000000000000000000000000000000000000071824313e4b5764717e8a9aa4afbbc8d4d3c7bbb0a69b8f82756c6159514a4644404546494e5355565d6161605d55534e463d352b20170d0200000000000000000000000000000004111e2b3744515e6a7784919daab7c4d0dcded4cbc2bcb8b6b3adaba39f98928b81796d685d544a3f342820150a0000000003101c28343f4a54626d74818c92989a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a999795918c87817b716c605c544a41382d23190c03000000000000000000000815212e3b4854616e7b8795a0acb8c6d0dbd2c5b8ab9f92857a6d60594f45413f3f434b545e6974808d9aa7b4c0d0dbd5c9bdb2a99a8d807467544a3f33281c0f03000000000000000000000000000000000000000000030f1b26323c47535f6a727f8c95a0abb5c0cbd7d1c5b8ab9e92858282828282828282828282828286929facb8c5d2dccfc3b6a99c9083828282817f7c78706b61594f43392f23180c00000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1cddae0d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e252a2d31373a3c3f404547484a4b4b4c4c4b4a4846443f3a3936302b261f18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55636f7c89959fabb7c1cdd7d0c5bcb2a8a197928a847f7d7b7b7d7f838991969fa7b1bac4ced9cfc3b9ada1978b7f7265594f43382c1f130700000000000000000000000003090e1214151819181615130f0a0400000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000b162128343f4a545c60696e72757676767676767676767676767676767676767676767676767676767676767574716d67625a524a40362c1e150b0000000b1824313e4b5764717e8a97a4b1bdcad7d5c9bdb2a8a19e9fa3aab4bcc6cfd8cbc1b7aea49c928c80736e635c524a40372e261c140a01000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87939facb9c6d0d8ccc2b6aa9e938a7e716b605c5453504b515355585f6267686d6e6d67625f584f473d32291e140800000000000000000000000000000004111e2b3744515e6a7784919daab7c4cbd1d1d2d5cdc7c4c3beb9b5afaaa29f938f827a6d665c50443c32261b0f03000000000c17232e3842515b606c777f858b8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8c8a8784807b746e69625a504a42382f261b110700000000000000000000000714212d3a46535e697783909daab4bfcad6d3c6baaea2988c80736b6059514b4b4c4f555d666e7b86929facb9c5d2dfd2c5b9ada196897c706356493d2d22170b00000000000000000000000000000000000000000000000a15202b37434e58606d78839099a3afbbc4ced2c5b8ac9f92857b76767676767676767676767884919eabb7c4d1d5c8bbafa295887c7676757573706c6560594f473e31271d120700000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2835414e5b6874818e9ba7b4c1cedae0d3c6baada093877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171f252a3036393c4347484c4b515355575758585858575553504a4746413a373129241d150d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6775818e9ba7b1bcc9d3d6cabfb4aaa19691857e7773706f6e7072767d8490959fa8b2bdc9d5d5c9beb3a99d9184776b6054483b2f22150800000000000000000000050b10151a1e212224252522211f1b15110c060000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000050b17232e38424a50575f626668696969696969696969696969696969696969696969696969696969696969686764605d55504840382e241a0c030000000b1824313e4b5764717e8a97a4b1bdcad7d2c5b9ada196919298a3aab4bdc6cfd3c9bfb6aea49c928c80736e635c524a40382e261c130a000000000000000000000000000000000000000000000000000000000714202d3946525e687683909daab4bfcad6d2c6bbb0a69f92867d726d6662605b545c6062666a6f73777a7b7a756f6a60594f443b3025190e02000000000000000000000000000003101d2a3643505d697683909cacb6babfc2c5c6c9cfd4d1cfc9c7c0bbb4aea59e948f82786d60584e43372b20150a0000000006111c26303f44505b656c727a7e818283838383838383838383838383838383828282817f7d7b77736e69615e5750443f3830261d140a00000000000000000000000005121e2a36424d5766727f8c98a2aebac4d0d6cabeb4aa9f92877d6f6b605d5558595960676d78839098a3aebac7d3d6cabeb3a99e9184796d6053463a2d2013060000000000000000000000000000000000000000000000040f1a26313c44505c666f7c87929fa8b2bdc9d3c7baaea3988f82756b69696969696969696b7884919eabb7c4d1d5c8bbafa295887c6f6969686663605b534f473e352c1f150b0100000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1cddae1d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1117202930363a4146474e535558555d60626364656565656362605b5454524c47423c352f271f180f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c2cddfd3c6baaea29891847b716c6663626263656b7079839096a0acb9c1ccd7cfc5b8aca096897c6f6356493c2f24190d010000000000000000080f161c1f262b2e2f3132312f2e2b26201d170c0700000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000006111c2630383f444d5355595b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a5754514c433f362e261c1208000000000b1824313e4b5764717e8a97a4b1bdcad7d1c4b7ab9e9184869298a3abb4bdc6cfd1c8bfb6aea49c928c80736e635c524a40382e251c120800000000000000000000000000000000000000000000000000000005111e2a36414d5665727f8c98a2aebac6d0d7ccc1baaea39892867f79726e6c656a666d6f72777c8084878886827c706b60564c41362a1e11050000000000000000000000010406070e1b2834414e5b6774818e9aa4acaeb4b5b8b9bec5c8ccd2d5d1cbc5bebaafa69f948d80736a5f53473c31261a0f02000000000a151e27333f49535b60686d717475767676767676767676767676767676767675757473706e6966615e57524d453f342e261e140b02000000000000000000000000020e1a25313b4754616d7a86929fa9b3bec7d2d0c5baaea39992857d736d67666565676b7079818f959faab4bfcbd7cbc3b9ada1978c7f72665c5044382b1f12060000000000000000000000000000000000000000000000000a152028343f4a54606a73808d96a1acb9c1cdcbbfb4aa9e93897d70665c5c5c5c5c5c5e6b7884919eabb7c4d1d5c8bbafa295887c6f625c5b5956535049413d352c231a0d030000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7b3c0cddae1d5c8bbaea295887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b2227323b42464c5254585f626568676d6f707171727271706e6c6665615e56534d454039312a211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a98a3aebac7d3d5c9bdb2a89f92867c6e69615a565555565960676d7a84919ea6b0bbc6d2d4c8bdb2a8998d807366564c4135291d1104000000000000010a111a21272c31373a3b3e3f3e3c3b37322d282218120b030000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000a141e262e343c4247484c4e4f50505050505050505050505050505050505050505050505050505050504f4e4b4745413a312d241c130a00000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f827d869299a3abb4bdc6cfd1c8bfb6aea49c928c80736e635c524a40372e241a0e050000000000000000000000000000000000000000000000000000020e1925303b4754606d7a86929faab4bfcbd6d7cbbfb4aaa398928c847f7b79787778797c7f83888d919699928f867d70685e5246392d20140700000000000000000001070d111314181b232f3c4956626f7c87939b9fa3aaa8abadb3b9bbc0c7d0d6d7d0cac1b8b0a69f92877c6f62584e43372b1f120600000000030c17222d38414950565d6065676969696969696969696969696969696969696968676664615e5754534d46423b3328231c140c0200000000000000000000000000000914202d3946525e6874808d97a1acb6c0ccd2cbbfb4aba1979287807a7573727274777d838f939ea7b1bcc6d1ccc3b9b0a69e92857a6d60544a3f34281c1003000000000000000000000000000000000000000000000000030c17232e38424e58606d7984919ea5afbbc5cfc6bcafa59d9083786d60564c4f4f515e6b7884919eabb7c4d1d5c8bbafa295887c6f62554e4c4946443f382f2b231a1108000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9e2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333f444d52565e61656a6f7275787a7b7d7e7e7f7f7e7d7b7976726d68625f57514b433c332b231910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b556874818e9baab4bfcbd7d2c5b9aca0968c7f726a5f57504a48484a4f555e68707d89939eaab6c4cfd9cec3b7aa9d908477685d5245392c2013060000000000010a131c232b33383c4247484b4c4b4947433c393428231c150c0300000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000020c141c232831373a3b3f4243434343434343434343434343434343434343434343434343434343434342413e3a39352f281f1b120a0100000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f82767d879299a3abb5bdc6cfd1c8bfb6aea49c928c80736e635c524940362c20170c0200000000000000000000000000000000000000000000000000000814202c3945525d6874818e98a3aebac3cfd8d1c6bcb4aaa39f96918c888685848586888c90959a9ea0a39f9892857a6e6154473b2e23180c0000000000000000040c13181d20202528292e3b4854606a737f898f9298999b9ea1a9acafb6bec4cdd6dbd6cac2bbafa3998f82756a5f53473a2e211409000000000006111b262f383f444c5254585b5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b595754524d4846423b3630292117110a0200000000000000000000000000000005111d2935414c56606d7a85919aa4afbbc0c7d0c6bdb3a9a199928c85827f7e7f80848990959ea6b0b9c2cfccc2bab1a79e948b7e71685d5242382e23170b000000000000000000000000000000000000000000000000000006111c26303c45515d67707d89939ea9b3bec9cec1b8aca0958b7f72685e524645515e6b7884919eabb7c4d1d5c8bbafa295887c6f625549403d3937332d261d19110800000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfcbd8e3d7cabdb0a4978a7d7164574a3e3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f4450565e61686d72777b7f828486888a8a8b8b8b8b8a8885827f7a756e69605d554e463d352b22190e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677784919daab7c4d1dcd1c4b7aa9e9184786d60574e453e3c3b3d434c56606b75828f9ba9b2bdc9d5d2c6b9ac9f93867a6d6054473a2d21140700000000000a131c252e353d44484d535557585855534e49453e342e271e150b00000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c201300000000000000000000000000000000000000000000000000000000020a11171f262b2e2f33353636363636363636363636363636363636363636363636363636363636363534312d2c29241e160d09000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276707d879299a3abb5bdc7cfd1c8bfb6aea49c928c80736e635b52483e32291e1308000000000000000000000000000000000000000000000000000004111d2935414c56616e7b86929fa8b2bdc6d1d8cfc6bcb4aea8a09d9999929191919299999da0a7aaacafaaa1978d807366544a4034281c1004000000000000080d161d24292c2d3235363438434e58636d737d8286898c8f92979b9fa4acb2bbc4ced7dcd7cbc0b5ab9e94887b6e6255483b31251a0e0200000000000a141d262d333a4145474b4e4f505050505050505050505050505050504f4f4f4e4c4a4846423b3a36312a251f170f060000000000000000000000000000000000010d1925303a45525d68707d88939fa4afb6bec4ccc5bbb3aba39f98928f8c8b8c8d91969da0a7b0b8c1cbc7c0bbb1a8a0958f82756c62564c4130261c11060000000000000000000000000000000000000000000000000000000a151e2935404b55606b75818e97a1adb9c2cec8bcb1a79f92857a6d61584e43515e6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c302d2b27221b140b070000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0bdcfdae5d9ccc0b3a6998d8073665a4d4032271b0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384149505a62696e747a7f84888b8f91939a9697989898989698928f8b86817b736d675f584f473d342b20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86939facb9c6d2d5c9bdb2a8998c7f72665c50453c332f2f313a444f5963707d8996a1adb9c5d2d4c8bbafa49a897d706356493d3023160a0000000006101c252e3740474f54575f62646564625f58555044403930271c1207000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000060b151a1e2122262829292929292929292929292929292929292929292929292929292929292929272421201d19130c0400000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f82766b707e879299a3abb5bdc7cfd1c8bfb6aea49c928d80736d635a50443a3025190d0100000000000000000000000000000000000000000000000000010d1924303a46525e6973808d96a0abb5bfcbd7d8cfc6bfbab2acaaaba39f9e9d9e9fa3abaaacb1b7b9bbb3a99d918477665c5144382c1f1206000000000008111a1f282f35393a3e4142413e3d46515b636b7075797c7f8285898e939aa1a9b2bcc6d0dbdcd1c7bdb0a69a8d807367574d42362a1e12050000000000020b141b22273035393a3e41424343434343434343434343434343434343424241403d3b3a36302d2a251f1a140d050000000000000000000000000000000000000008131e2935414c56616c737f8c929fa4acb2bac4cdc5bdb4aeaaa29f9b9998989a9da0a8acb1b9c1cac7bdb5afa79f959083796d605a50433a2f1e140a00000000000000000000000000000000000000000000000000000000030c18242f39434f59616d7a85929ea6b0bcc6cec3baada2978d81746a5f5347515e6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f221f1b17110a02000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a8b2bdc9d5e1dccfc2b5a99c8f827669594f43382c1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b606d717b81868c9196989b9e9fa4aca4a4a5a5a4aaa29f9c99928e8780796e6a60594f463c32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c899aa4afbbc8d4d2c5b9ada196877b6e61544a3f332a222228323d4653606c7884919eabb8c4d1d8ccc0b6ac988b7f7265584c3f3225190c000000030e18222e37404952596063696e7172716f6a64615a514a42392e23180c050000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000003090e121415191b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b181413110d08010000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276696c707e879299a3abb5bdc7cfd1c8bfb6aea49c928c7f736c61564c41362a1d1105000000000000000000000000000000000000000000000000000008131e2a36424d57606d79849199a3aebbc0c9d6d8d1cbc3bdb8b7b5afacabaaabacafb5b6b8bcc3c5c5b8aca09686796d6053463a2d2013070000000008111a232c313a4045474b4e4f4e4b46454951596063676d707275787c81889196a1aab4bfcad6e3d9cfc1b7aa9e918477695e53463a2d211407000000000000020a11171e24292c2d323436363636363636363636363636363636363636353433312e2d2a25211e1a140e09020000000000000000000000000000000000000000020d19242f3a43505a636d74808c939aa1a8b2bdc9cfc6bfbab4aeaca8a6a5a5a7aaacb2b8bcc3cbccc0b5aba49f9590837b6e675d51483e31281e0c02000000000000000000000000000000000000000000000000000000000007121d28313d46525e68717e8b949faab4bfcacabeb3a99f92877c6f625a50515e6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160f0b060000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8796a1adb9c5d2dfded1c5b8ab9e9285786b605448392f24180c02000000000000000000000000000004060707060603000000000000000000000000000000000000000000000000000000000005121f2b3744505b656c747e868d92999da0a8a8abacafb6b1b1b2b2b1b4aeacaba39f99928d837c6f6b60584e443a3025190d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97acb6c0ccd8d1c4b7ab9e918478695e5242382e211816202b3744505b6575828e9ba8b5c1ceddd2c0b3a69a8d8073675a4d4034271a0d0000000a15202a343f49525c636b70777b7e7f7e7c77716c605c544a40342822170c0000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c2013000000000000000000000000000000000000000000000000000000000000000000020608080c0f1010101010101010101010101010101010101010101010101010101010100f0e0b0706040100000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f827669616c707e879299a3abb5bdc7cfd1c8bfb6aea49c928a7e71685e5246392d2013070000000000000000000000000000000000000000000000000000020e1a25303b45515d676f7c87929fa4aeb7c0cad0d7d7cec8c5c4c0bbb9b8b7b8b9bbc0c3c4c8cdd2c7bbafa399877a6d6154473a2e211407000000040e1a232c353d434b5153585b5c5b5753514b474f54555d606366656c6f757c849198a2aebac6d3dfded2c5b9aca096877b6e6154483b2e2115080000000000000000060b13191d20212528292929292929292929292929292929292929292928262421201e1a14120e0903000000000000000000000000000000000000000000000008131e28313e47515b646e747f889196a1adb9c5d2d1cbc5bfbab8b5b2b1b2b3b7b8bdc3c8ced4c7bbafa499938d837a6e695e554c41362d1f160c000000000000000000000000000000000000000000000000000000000000010c161f2a36414c56616c76828f98a2aebac3cfc5bbafa3998f82766c61554b5e6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687884919eabb7c4d1dedfd2c6b9ada197897c6f63554b4035291e1308000000000000000000000206070c1013141413120f0b06000000000000000000000000000000000000000000000000000006131f2b37434e58606c77818b92989fa3abacb2b5b8b9bbc0bdbebebebebfbab8b4aeaba39f9591857d6f6a60564c41362a20160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bed2ddcec2b5a89b8f827568574d4230261c0f0f1b27333f495365727f8c98a5b2bfcbd8cec1b5a89b8e8275685b4f4235281c0f0000030f1b26313c46515b636e737d83888a8b8b88847e746d665c51443e33281c110300000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695a616c717e879299a3abb5bdc7cfd1c8bfb6ada49f92857a6d6154473a2e21140700000000000000000000000000000000000000000000000000000009141f2935404b55606a727f8b929da5aebabec5ced3d8d4d1d1cbc7c5c4c4c4c5c7cbd1d1d4d4ccc3b9ac9f9286796d6053463a2d2013070000020c16202c353e474f555d606568696764605c554f47484b515356535b60636b6f7c86929facb8c5d2dde1d4c8bdb2a8978a7d7064574a3d3124170a00000000000000000002080d111314181b1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1c1b19171514120e09050200000000000000000000000000000000000000000000000000010c161f2c354049525c646d727d84919eabb7c4d1dcd7d0cac6c5c2bfbebfc0c4c5c8ced4d9d2c6b9ac9f938780786d685e574d433a2f241b0d0400000000000000000000000000000000000000000000000000000000000000040d1925303a44505a616e7b86929fa7b1bdc7cbc0b5ab9f948a7e71675d515e6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c566875828f9ba8b5c2cfdae2d6cabeb3a99a8e8174675d51453a30251910070000000000000306090f1214181c1f2021201f1c17110e090300000000000000000000000000000000000000000000000815212e3b47535f6a73808d939fa2aaaeb4b8bdc2c4c6c8ccd2cbcbcbd0cac6c5bfbab5afa7a09792867c6f685e52463d32271b0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9cdc0b3a79a8d8074675a4d413027140a0b17222d3e4b5764717e8a97a4b1bdcad7cfc2b5a89c8f8275695c4f4236291c0f000006121f2b37434e58636d738089909597989796918a81786d605a5045392d20150900000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedad2c5b9ac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000040607090b0b0c0c0b090707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c5a616c717e879299a3abb5bdc7cfd1c8bfbaaea2988c807366594d4033261a0d000000000000000000000000000000000000000000000000000000020c18242f39434e58626d74808d929ca4aeb3bcc1c7cdd1d4d9d7d3d2d1d0d1d2d4d7d4d2cdc8c1bab1a79d908376665c5044382b1f1206000008131e28323e474f5961676d71747574716d67615951494045474949505359606a73808d99abb5c0ccd7e3d9cebfb2a5998c7f7266594c3f3326190c0000000000000000000000010407070b0e0f10101010101010101010101010101010100f0f0e0d0a080705020000000000000000000000000000000000000000000000000000000000040d1a232e37404a525b636d73808d99a6b3c0ccd9dcd7cfc9c6c5c1c0c0c4c5c8ced5daddd0c4b7aa9d91847a6d685e564d453b31281e120900000000000000000000000000000000000000000000000000000000000000000008131e28323e46535e69727f8c959fabb5c0cbc7bdb0a69e9184796d60575e6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303f4c5966727f8c99a8b2bdc9d5e1dacfc5b8ab9f9285796d60564c41362a2218120c070706070a0f12151a1f2123292c2d2e2d2b28221c1a140e06000000000000000000000000000000000000000000000916222f3c4955626f7c87939fa5aeb4babfc6c8ced1d2d2cfcbc9c7c7c8cbd1d1cbc7c0bbb1a9a29891857a6d61584e43382b1e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9ccbfb3a6998c807366594d4033261a0d061723303d4a5663707d8996a3b0bcc9d6cfc2b6a99c8f8376695c504336291d1000000815212e3a47535f6a727f8c929da0a7a5a8a09e938e81746c6155493c31261a0e02000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4c1cddad2c5b8ac9f9285796c5f5246392c1f13000000000000000000000000000000000000000000000205070c101314151718191818161413110d0805020000000306070a0c0d0c090806030000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c505a616c717e879299a3abb5bdc6cfd6cabeb3aa9d9083776a5d5044372a1d110400000000000000000000000000000000000000000000000000000007121d27313d46515b606c77808d929fa2aab0b7bbc2c5c8cececfcfd0cfcfced2ccc8c6c2bcb8afa89f958b7e7265544a3f34281c100300010d1925303a444f59616b70797e8182817e79706b625b51493f3a3d3f44464f58626f7c8899a4afbbc7d4e0dacdc0b4a79a8d8174675a4e4134271b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121e2a36424d57616c737f8c929ca8b4c1cdd8d1cbc5beb9b8b4b3b4b7b8bcc3c9ced6d1c5b8aca09691847a6d665c50443b31261a0e03000000000000000000000000000000000000000000000000000000000000000000020c16202a36424d57606d78839099a3afbbc3cfc2b9aca1968c7f73695e5e6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000816222f3c4955626f7c8896a1adb9c5d2dfdfd3c6baada2978b7f72685e52463e3428231c1814131313151b1f21262b2e2f34383a3a3938332d2a261f180f070000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa4afbabec5cbd1d4d1cbc7c5c2bfbcbababbbec4c6c9cfcbc3bbb3aaa1978e81756a6054473a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3c0ccd9ccbfb2a6998c7f7366594c40332619070a1623303d495663707c8996a3afbcc9d6cfc3b6a99c908376695d5043362a1d100004101c2834404a54626f7c87939fa4acb1b2b2aca59d938a7e7164574e42372b1e1206000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0ced6d1c4b8ab9e9185786b5e5245382b1f12000000000000000000000000000000000000000002090e1114181c1f202224252525252321201d1914120e09060b10121317191a191615130f0a04000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f505a616c717e879299a3abb5bdc5ced0c4b7ab9e9184786b5e5145382b1e1205000000000000000000000000000000000000000000000000000000010b151f2b343f44505b656c77808a92989ea6abb0b7b8bdbfc1c2c2c3c3c2c1c0c0bbb9b7b1aba59e969083786d6053463a2e23170b000005111d2935414c56616b707d858b8e8f8e8a847d726d625b51473e3433373d4653606c7986939facb9c6d2dfdbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000000000000000000000000000000001040607090a0b0c0c0c0b0a090706040100000000000000000000000000000000000000000000000000000000000000030d17212d3a46535e69717e8a919ca4aeb9c5d0cfc6bfbab3adaba8a6a7aaacb1b9bdc4ccd4c8bdb2a8a0969082786d60574d42362a1f140900000000000000000000000000000000000000000000000000000000000000000000050e1a25313b44505c666f7c87929fa8b2bdc8c9bdb2a89f92867b6e61596b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b47535f6a7884919eabb7c3cdd8e2d6cabeb3a99f92857a6d61594f463d342e282321201f2022262b2e31373a3b4045474746443f3836312a211911070000000000000000000000000000000000000000111e2a3744515d6a7784909dacb6c0cad0d4cfc9c7c0bbb9b5b2afaeadaeb1b8b9bec4cdcdc5bcb2a99e93897c6f62564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9cdc0b3a69a8d8073675a4d402f24180c0a1724313d4a5764707d8a97a3b0bdcad6cfc2b5a99c8f8276695c4f4336291c100006121f2c3844515c6675818e99a4afb8bcbebdb9afa59d9184776a5f53473a2e211408000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a6b0bcc5cac8c0b6ac9d9083766a5d5043372a1d1000000000000000000000000000000000000003090f141a1e2023292c2d2f3132323231302d2c2924201e1a1411171c1f202326262522221f1b150f0a0400000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f48505a616c717e879299a3abb4bcc3c4bfb4ab9d9083776a5d5044372a1d110400000000000000000000000000000000000000000000000000000000030d192227333f49535b656c737e858f949c9fa6aaacb2b2b4b5b6b6b6b5b5b3b6afacaaa79f9d938f847b6e665c5044382c1c110600000713202d3946525e68707d8791979b9c9a9691887f726d62594f463e372f3845515d677885929fabb8c5d2dedbcfc2b5a89c8f8275695c4f4236291c0f000000000000000000000000000000000000000000010407070d1113141517181819191817161413110d0806040100000000000000000000000000000000000000000000000000000009141f2c38444f59616e7b86929fa3adb6c0cacfc6bdb4aea9a19e9b9a9a9da0a7acb2bac3cccec3bab2a89f948c7f73695f53463b30251a0e020000000000000000000000000000000000000000000000000000000000000000000009141f28343f4a545f6a73808d96a0acb9c0cdc4baaea2988e81756b606b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e586774808d9aa7b1bcc8d4e0dbd0c5baada2978e81746b61584f444039342e2e2d2c2d2f32373b3c4347484b51535453504a46423b332b23190f0500000000000000000000000000000000000000121e2b3845515e6b7884919eabb7c4d2ccc8c4bdb9b5afaca9a5a3a1a1a1a5abadb2bbc4cfcec4bbafa59b8e8275685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfcbd8cec1b4a79b8e817468554b4035291d100b1425323e4b5865717e8b98a4b1becbd7cec2b5a89b8f8275685c4f4235291c0f000713202d3a4653606d7985929fabb5c0c8cdc9c0b8aca095887b6e6255483b2f221508000000000000000000000000000000000000000000000915222f3c4855626f7c88949faab4babebbb9afa49a8d8073675a4d4034271a0d0000000000000000000000000000000001070d151a1f252a2d2f34383a3c3e3e3f3f3e3c3a3935302d2a251f1c23282b2d303333322f2e2b26201b150f07000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4348505a616c717e879299a2aab1b7b7b4aea3998d8073675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000071017222d384149535b606c717b82898f94999da0a8a6a7a8a9a9a9a9a8a7aca49f9d9995908a827a6e695e544a3f34281c0a0000000714212e3a4754616d7a859299a1a9a8a8a19a938b7f726b615850474241424a54606d7a86939facb9c6d2dfdbcfc2b5a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000001080d111314181d202022242525262525242221201d191413110d0701000000000000000000000000000000000000000000000000020e1a25313b4854606b75828f98a2aeb6bfc8d1c6bdb4aba39f97928e8d8d91959ea1a8b1bac3ceccc3bab0a69f92867b6e61574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000030b17232e38424e58606d7984919ea5afbbc4cabfb4aa9e93897d70666b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323c4955626f7c88959fabb8c4ced9e1d6cabeb3a99f93887d706a6059514a45403c3a3a383a3b3e4347484e5355555c6061605b54534d453d352b21170d03000000000000000000000000000000000000111e2a3744515d6a7784909daab7c1c7c0bbb9b2adaba39f9c9896949495989ea1a9b2bdc6d1cdc1b9ac9f92867a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1becfdad0c3b6aa9d908377675d5145382c1f15141d2a36424d576774808d9aa7b3c0cddacdc1b4a79a8e8174675b4e4134281b0e000815222e3b4855616e7b8898a2aebdc7d2d9d4c8bcb1a7978a7d7164574a3e3124170b000000000000000000000000000000000000000000000815212e3a47535f6a76839098a2aaaeb3afaca59f93877c6e6255483b2f221508000000000000000000000000000000040c121820262b30363a3b404547484a4b4c4b4b494745413b3a363029262e34383a3d3f403f3c3b37322b27201910080000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f433e48505a616c717e8792989fa7aaaaaaa29f92867b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000006111b262f384149505a61696e757d82888d919697999b9c9c9d9c9c9b9a989a93918d88837d756d685e564d42382e23170c0000000d192633404c5966737f8c97a2abb3b5b2aca49f93877d706a615a534d4d4e545c66707d8a9aa4afbbc8d4e0dbcec1b4a89b8e8175685b4e4235281b0f0000000000000000000000000000000000040b1013191d202124292c2d2f303132323232312f2d2c292421201d18130f0a040000000000000000000000000000000000000000000005121e2a36424d5763707d89949eaab4bec8d7cbbfb5aba399928c8581808184899196a0a8b1bcc6d0ccc2baaea3988e8174695e52463a2d201408000000000000000000000000000000000000000000000000000000000000000000000006111c26303c45515d67707d89939da9b3bec9c6bcafa59d9083786d6b7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15222e3b4754606a7783909da8b2bdc9d5e1dbcfc5bbafa49a92867c6f6b605c54514b4947464546484a4e5355585f6266676d6d6c66615f574f473d33291f14090000000000000000000000000000000000000e1b2834414e5b6774818e9aa6b0bab8b6afaca8a19e99928f8c898787888b9197a1abb5bfcbd3c7bbaea3998a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a9b3bec9d5d2c5b9ac9f9286796d6053473d31271f1f262f3846525e697683909da9b6c3d0d9ccbfb2a6998c7f7366594c403326190d000916222f3c4955626f7c8895a9b3bec9d5e2d9cebeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000006121f2b37434e58626f7c8692989fa2aaa49f9d938d80746a5f53473a2e2114080000000000000000000000000000060d161d242931373b4246474b51535557585858585654524c4846423b3530383f44464a4c4d4c4947433c37322b221a110800000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f43363e48505a616c717d8690959b9d9d9c98928b7f72695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000a141d262f383f4450575e616b70767b8084878a8c8e8f8f90908f8e8d8b8a8684807c76706b615d564d443b30261c1106000000111d2a3744505d6a7783909da9b3bdc2beb6afa49992867d706c625f575a585f666d7883909dacb6c0ccd8e4dacdc0b4a79a8d8074675a4e4134271b0e000000000000000000000000000000040a0f161b1e24292c2d2f35393a3c3d3e3f3f3f3e3d3c3a39352f2d2c29241d1b150e090300000000000000000000000000000000000000000714212d3a46535e6976828f9ca6b0bcc5d0d3c7bbaea39992877f79757374777d849195a0aab4bfcad6cbbfb4aa9f92867b6e6154483b3024190d0100000000000000000000000000000000000000000000000000000000000000000000000a141e2935404b55606b74818e97a1adb9c1cec1b8aca0958b7e72687884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5864717e8b96a0acb9c2cfd8e1d8ccc0b6aca29892857d726d66605c5556545351535557585f62666a6e72767a7a79756e6960594f453b31251a0e0200000000000000000000000000000000000a1623303d495663707d89949ea7aeacaca49f9c96918c86827f7c7b7a7b7e859199a3aebbc7d3cbbfb5ab998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a1adb9c6d2d3c7bbafa3998a7d7164594f4339302b2b2f38414d56616e7b86929facb9c5d2d6cabeb3a9978a7e7164574b3e3124180b000815212e3b4854616e7b8797a1adb9c6d0d8d4c8bcb1a7978a7d7064574a3d3124170a00000000000000000000000000000000000000000000030f1b26313c47545f6a707d868e9298969a93908a81786d60584e43372b1f1206000000000000000000000000000810181f282f353c43474d5254555c6062646565656463605d5654524d46413e424a50535659595855544e47433d342c231a0f05000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336363e48505a616b707c838a8e90918f8c867f726d62574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000020b141d262d333e454d525960636a6e73777a7d7f81828383838282807f7d7a77736f6a636159524c443b32291e150a00000000121f2c3945525f6c7885929fabb8c5cfc7c0b5aba29892867e756e696867686a6e78808e95a0abbec7d2dde3d7cbc0b5ab988c7f7265594c3f3226190c0000000000000000000000000001070c161b21272c2f35393a3e404547484a4b4b4c4c4b4a494745413e3a39352f2b27201a150b06000000000000000000000000000000000000000815212e3b4854616e7b87939facb9c1ced6cabeb3a99f92877d726d6667676b707a839198a2aebac7d3d1c6bbaea3998c7f7266564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000020c18242f39434f59606d7a85919ea6b0bcc5c8bcb1a79e92857a6d7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323c4653606d7984919ea7b1bcc6d1dcddd2c7beb3aaa29792877f79716d67656261605c606264676a6f73777b7f83868785817b706b60574d42362a1e130800000000000000000000000000000000000916222f3b4854606b75828f959fa2a09d9a938f8a847f7a7672706e6e6e727c86929facb9c5d2d1c1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697885929eabb8c5d1d7cbc0b5ab9c8f82766b60554b423b38373a4149535e68737f8c99a3afbbc7d4d3c6baada297887b6e6255483b2f221508000613202d394653606c7985929eaab4bfc7ccc8c0b8aba095887b6e6155483b2e22150800000000000000000000000000000000000000000000000a15202b37434e58616b707b818588898886837e756d665c51463c31261a0f0200000000000000000000000008111a222a313940454e53575e6166676d6f71717272716f6d6866615e57524c4750545c6063666665625f58544e463e352c21170d030000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f43362c363e485059606a6f787d818484827f7b726d625b51453b31261a0e02000000000000000000000000000000000000000000000000000000000000000000020b141b2227333b42464f54585f6266686e7173747576767676757472706d6866625f58554f46413a322920170c0300000000131f2c3946525f6c7985929facb8c5d2d2c7bdb4aaa298928a817b77747474777b828e939da7b1bcd0d9e4e0d3c7bbafa399897d7063564a3d3023170a000000000000000000000000030b121820272b32383a4145474b4b515355575858595858575554524c4b4745413a37322b261f17110a0200000000000000000000000000000000000c1926323f4c5965727f8c9aa4afbbc8d3d2c6b9ada1978c7f726b605c545960686e7b86929facb8c5d2d7cbbfb5ab9d908377685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000007121d27313d45525d68717e8a949eaab4becac3b9ada1978d80747884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3844515c66717e8a959faab4bfcbd7ded9d0c5bcb3a9a299928c847e7975716f6d6d676d6e7174777c8084888c909298928e867d70695e53463a3025190d01000000000000000000000000000000000713202c38444f59616d7a838d929896918c87827d79726e6865636161626a7783909daab6c3d0cfc2b6a99c8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576975828f9ca8b5c2cdd8d1c7b7ab9f94897d70675c544d464444464c525b656e7b85929fabb5c0cbd7d2c5b8ab9f9285786c605346392d2013060006121f2b3844505b6674818d98a2aeb5bbc0bcb8aea49d908377695f53463a2d2114070000000000000000000000000000000000000000000000040f1b26323c464f5961696e74797b7c7c7a77716c605c544b40342a20150a00000000000000000000000008121a232c343c434b51585f62696e7276797c7d7e7f7e7e7c7a77736e69615e56515a61666d707273726f6a6260584f473e33291f14090000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336292c363e474f585f666c7075777776736e68625b51493f33291f14090000000000000000000000000000000000000000000000000000000000000000000000020a1117212930363d44484e5355565e6164666869696a696968676563615d5655534e48443e35302820170e050000000000121f2b3845525e6b7885919eabb8c4d1d9d0c5bcb4aaa29f938e888381808183878f949da5afb9c3cde2eadfd2c5b9ac9f92867a6d6053473a2d2014070000000000000000000000060d151d242932383d44484c525457555d60626364656565656462605d565754514b47433c373128221c140b04000000000000000000000000000000030f1c28333f4a546875828f9bacb6c0ccd8d1c5b8ab9e9285796d6059514a4f565f6973808d9aa6b3c0cddcd1c6b8aca095877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000010b151f2935414c56616c75828f98a2aebac2cabeb3a99f92877c7884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54606c78839098a3aebac2ccd5dfd7cec5bcb3aba39f96918a85817e7c7a7979797b7d8184888c9195999c9fa29f9892857b6e61564c41362a1d11050000000000000000000000000000000004101b27323d46525e686d798085888784807b76716d66615e5656565d606a7683909da9b6c3d0d0c3b6a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303f4c5865727f8b98a7b1bcc8d4d3c7bbb0a69d9183796d665e5753505053565d606c77818f97a2adbdc7d1d6cbbfb4aa9b8f8275655b5044372b1f120500030f1c28333f4a54616e7b86929fa3abafb6b1aca49d92897d7063574d42362a1e12050000000000000000000000000000000000000000000000000a15202a343e474f575e61666d6e6f6f6d6864615a514b42392e22180e03000000000000000000000008111a242c353e464e555d606a6e757b7f8386888a8b8b8b8b8986837f7b746d68605b626c70787d7f807f7c776f6a61594f453b31251a0e0000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f433629242c353d464e545b6064686a6a6966615e5651483f372d21170d0300000000000000000000000000000000000000000000000000000000000000000000000000060f171f252a32383c4347484d525457595b5c5c5d5d5c5b5a585754524c4847433c383329241e160e05000000000000101d2a3643505d697683909ca9b6c3ced9d7cec5bcb4aea59e9b95908e8d8e90939a9fa6afb7c0cbd5dfe1d6cabeb3a99c908376675d5145392c20130600000000000000000000070f171f272f353d43474f54565d606468676d6f707172727271706f6d686864605d55544e47423c332d261d160e05000000000000000000000000000006121f2b3844505b667884919eabb7c4d2ddcec1b4a89b8e8175675c514440444d57636f7c8996a2afbcc9d5d4c8bcb1a796897d706356493d3023160a00000000000000000000000000000000000000000000000000000000000000000000000000030d1924303a44505a616e7b86929fa7b1bdc6c5bbafa3998f827884919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3944505b656f7c86929fa6b0bac3cdd6dfd7cec5bdb5afa8a09d97928e8b8987868686888a8d9196999da0a8a9acaeaaa2988e8175685e5246392d20130700000000000000000000000000000000000b16212935414c565e676d74797b7b77736e6964605c5453585f62686d727c87939facb9c6d2cfc2b6a99c8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222e3b4855616e7b88959fabb8c4cfd8ccc2b8aca0958f82786e6962605b5b6062686d74808d939ea9b3becfd9d3c7baaea3988b7e716453493f33271b0f0300000b17222d3846525e69717e8a92999fa4aca7a09d928d80736b6155453b31261a0e02000000000000000000000000000000000000000000000000040e19222c353e454d53545c60626362615e56555045403930271d0f060000000000000000000000060f1a232c363e474f585f676d747b82868c90929997989898979a93908c86817a706b626d727d84898c8c8b88837c706b61574d42362a1c120700000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291a232c343c424a5053575b5d5e5c5954524d443f362d251b0f06000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a21272c31373a3b4146474a4c4e4f5050504f4f4d4c4a4746413c3a37312c282119130c04000000000000000e1a2734414d5a6774808d9aa8b2bdc8d4ded7cec5bfbaafaaa7a09d9b9a9b9d9fa4acb0b8c0c9d2dde3d8cfc6b9ada1978b7e7165554b4035291d11040000000000000000000710192129313940454e54596063686d7174777a7b7d7e7e7f7f7e7d7c7a7774716d67626058534d443f382f2820170f05000000000000000000000000000613202d394653606c7986939facb9c6d2d9ccc0b3a6998d807366554b40343b4754616e7a8794a1adbac7d4d9cdbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323e46525e69727f8b959fabb4bfcbc0b5ab9f948a7d84919eabb7c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27333f49535f6a727f8c949fa8b2bbc5cdd6dfd7cfc7c0bbb2aca9a19e9b98959499929995979a9ea0a8aaacb1b6b9bab3aa9f92867a6d6154473a2e2114070000000000000000000000000000000000040d1925303a444c555d60676d6e6e6966615f5753545c60646a6f747a7f859299a4afbbc7d4cec1b4a89b8e8175685b4e4235281b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697683909da9b3bec9d5d4c8bdb1a89e948f827b736f6c66656c6e737a818d929da5afbcc5d0d8cfc5b8ac9f92867a6d6154473a2d22170b00000006111c2a36424d57616c717f878f939a989795908a80786c60594f4433291f1409000000000000000000000000000000000000000000000000000007101a232c333b42464a505355565554524c49453e342e271e150b0000000000000000000000030d18212b353e485059616a6f7980878e92999c9fa3aba4a5a5aca49f9d99928d857d716c727f8891969999989590867d70695e5346392e23180c00000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c1a222a2f383f44464a4f5151504c4746413b322d241b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e161b20262b2e3036393b3e4041424343434342413f3d3a3935302e2b26201c160d080200000000000000000a1623303d495663707c8996a0acb8c2ccd6dfd7d0cac1bab6b1acaaa7a7a7aaacafb6bec2cad2dbe4dcd1c6bdb1a79e92857a6d6053473a2f24180d010000000000000000060f19222a333b434b515860626b70757a7e818486888a8b8b8c8b8b8a888784817e7a756f6a615f57504a423a322921170e050000000000000000000000000714212d3a4754606d7a879aa4afbbc8d4dacdc0b3a79a8d807467574d42393d4855616e7b8894a1aebbc7d4d8cbbfb2a5988c7f7265594c3f3226190c0000000000000000000000000000000000000000000000000000000000000000000000000000020c16202a36424d57606c78839099a3aebac3c7bdb0a69e918485919eabb8c4d1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414e58606d78828f96a0a9b3bbc4cdd4ddd9d1cbc3bdb8b3adaba8a4a2a0a39fa3aba4a7aaacb2b7b8bdc3c5c5bbafa3998a7d7064574a3d3124170a00000000000000000000000000000000000008131e28323a434c51555c6062615e575554575e61666d71767c81868b9297a2abb5c0ccd4c8bcb1a7988c7f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5764717e8b97a1adb9c3d0d9cec3bab0a69e948f86807c797878797b80848e939da4aeb7c1ced7d1c6bdafa59b8e8174685d5246392d1b1106000000000e1a25303b45505a626d717c82878a8b8a88837d746c665b50473d3321180d0300000000000000000000000000000000000000000000000000000008111a21293136383f44464849494746413a393428231d150c0300000000000000000000010b151f2a333d47505a616b707c848d92999fa3abacafb5b1b2b1b6afacaba39f9791877e727e8a939aa1a8a6a79f9892857b6e61544a4034281c1004000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10181d262d3338393d42444443403b39363029201b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10151a1f21252a2d2e3133353636373636353432302e2d2924211f1b15100b05000000000000000000000613202d394653606c7884919da6b0bac4cdd6dedbd6cbc6c3bcb8b7b4b3b4b7b9bbc0c7d0d3dce2d9d2cbbfb5aba0958c7f72675d5145392c1d13070000000000000000050e18222a343c454d555d606a6f767d82868a8e91939a969798989898979596918e8a86817c756e69605b544c443b332920170d0400000000000000000000000714212e3a4754616d7a8794a9b3becad6dccfc2b6a99c8f8376695f544b4546505a64707d8a97a3b0bdcad6d8cbbfb2a5988c7f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a25303b44505b666f7c86929fa8b1bec7c2b9aca196919197a1adb9c6d2d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3c44505c666d7a849197a1a9b2bbc2cbd4d9dcd7cec8c5beb9b8b4b1afb5afacafb5b0b4b7b9bdc4c5c8ced2cbc0b5ab988b7e7265584b3f3225180c000000000000000000000000000000000000020c162028313a41454b515355545255596063696e73797e83888e92989fa2a9b3bdc7d2cdc4b8aca095887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b4753606d7985919ea8b2bdc7d2d5ccc1b8b0a69f98928d8886858486888c91979ea5aeb6c0c9d3d7cbbfb5ab9e93887c6f62564c4135291d0a000000000009141f29333e48505a626a6f767b7d7e7d7b77706b605b544a3f352c210f060000000000000000000000000000000000000000000000000000000000080f171f252a2e34383a3b3c3c3a3935302d282218120b03000000000000000000000007121d27313c454f59616c717d8691969fa3abafb5b9bbc0bebebec0bbb9b5aea9a19992877e85929ea4acb2b3b1aaa2978e8174665c5144382c1f1206000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100b141c22282b2d3135373736332e2d2a251f170e090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f1214191e202124262829292a2a292827252421201d1915120f0a0400000000000000000000000006121f2b3844505b66717e8a949fa8b2bbc4ccd5daddd7d2cec8c5c3c1c0c1c3c6c8ccd2d9e2dfd7d0c7c0bbaea3999183796d60554b4035291d0c0100000000000000020b16202a343c464e575f676d747c83898e92999b9d9fa4aca4a5a5a5a4a3a8a09e9b98928e88827b726c665d564d453b32291f160c01000000000000000000000713202d3a4653606d798697a2adbac6d3dfd2c5b9ac9f92877b6e665c54515359616c75828f9ba8b5c2cedbd8cbbeb1a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28333f4a545f6a73808c95a0acb6c0c9bdb2a8a19e9ea1a9b3bec9d5d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28343f4a545d686e7b859297a1a9b1b9c0c8ced6dad9d4cfcac6c5c1bebcc0bbb9bbc0bdc0c4c5c9ced1d4d9d6cabfb4aa988b7e7265584b3f3225180c00000000000000000000000000000000000000040e161f282f35394045474e545a61646b6f757b80858a90949a9fa2aaadb3bbc5d0cdc4bbb0a69d9083776a5f53473b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3845515c67727f8b96a0abb5c0ccd7d3cac1b8b0aaa29f9a999291919299999ea1a9afb7c0c8d2d6cdc4bbaea3998e82756a5f54443a3024190d0000000000020d17212c363f4850586062696e7071716e6a636159504a42382d231a1000000000000000000000000000000000000000000000000000000000000000050d141a1c23282c2d2f302f2e2d29251e1d170c07000000000000000000000000000c18242f39434d57606b717e879298a0a8afb5bbc0c5c7cbd1cbd2ccc8c6bfbbb3aba399938b9297a1adb6bebfbcb3a99f9285796d6053463a2d201307000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10020a11171c1f2024282a2b292621201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206080e11141417191b1c1d1d1d1c1c1a19171413110d0806030000000000000000000000000000030f1c28333f4a54616c76828f96a1a9b2bac1c9cfd6dbdfd9d4d1d0cecdced0d2d4d8dddfd8d3cdc5beb6afa39f92877c6f675c51433a2f24180d00000000000000000a141d28323c464e585f696e79808790949b9fa3abaaacafb6b1b1b2b2b1b0b2acaaaaa39f9b948f867f786d685e574d443b31281e13080000000000000000000006131f2c3845515c667885929fabb8c5d2ded3c7bbafa3998f82786d66605d60626b707d8a939eaab6c3cfdcd6cabfb4aa978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000030b17222d38424e58606d7984919aa4afbbc4c4bab2acababadb3bbc4cfdad5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17232e38424c565f696f7c8591979fa7aeb8bdc3cacfd5dadad6d2d1cecbd1cbc7c5c7cbd1cdd1d2d5d9ded8d4ccc4baaea298897d7063564a3d3023170a0000000000000000000000000000000000000000040d162029323b434b515860626c70767c82878d92979c9fa6acaeb4babec5cdccc3bbb3a99f948a7e7164584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55606d78849199a4afbbc2ccd5d3cac2bcb4aeababa39f9e9e9fa3ababadb2bbc1c9d2d7cec4bbb1a79f92877b6e62584e4332281e1308000000000000050f1a242d363f464e54575e61646564625f57554f443f382f261c1108000000000000000000000000000000000000000000000000000000000000000003090e11171c1f2022232221201d1913110c060000000000000000000000000004101d2935404b555f69707d879299a2aab2bbc0c7cbd1d3d7dcd7ddd8d4d1cbc4bdb5aba49f989ea1a9b3bec7cec5baaea298887c6f6255493c2f221609000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100300060b0f1213171c1e1e1d191414110e0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0e0f101010100f0e0c0a070705010000000000000000000000000000000000000b17222d3842505a616e7a849197a1a8b0b9bec5cad0d4d9dddfdddadadadddfdddbd6d3cdc7c1bbb3aca49f918b7e716a60554b4031281d13070000000000000006111b262f3a444e585f6a6f7b838d939a9fa6acaeb5b7b9bbc0bebebfbebebdbdb9b7b4aeaca69e99928c827a6e695e564d433a2f24190e0500000000000000000004101c2834404b546a7683909da9b6c3d0dbd7cbc0b5ab9f948e8179716d676c6f747d86929fa6b0bbc6d2e0d3c7baaea298887b6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3c45515c676f7d88939fa9b2bdc9c4bdb9b7b8b9bec4cdd6e1d5c8bbafa295887c6f6255493c2f22160900000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444d575f6a6f7c8590959da4acb2b9bec5c9ced2d5dadbdbd7dcd7d3d2d3d7dcdadddbdad5d2cdc8c1bab2a89f92857a6d6053473a2d201407000000000000000000000000000000000000000008131e28323b444d555d606a6f767d83898f93999ea1a9abb0b8babfc6cad0c7c0bbb1a9a1978f82776c6053463c32261b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3944515c666f7d87939fa6b0bac3ccd4d4cec5bebab8b5afacababacaeb4b8b9bec4cdd2d6cec6bcb3a99f958c7f73695f53463c3220160c020000000000000008121b242d343c43474d525457585755534e48443e332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000060c1012131516161413110d08020000000000000000000000000000050f19232c3945515d676e7b869299a3abb4bcc3cbd1d7d7d3d2cecac9c8c8cacdcfc7bdb5afaca5abadb3bbc5cfd6cabfb4aa96897d7063564a3d3023170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10030000000306060a0f1111100d080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3e46525e686f7c8591969ea6adb3babfc5c8cdd0d2d3d6dbd6d3d2d1d0cac6c2bcb7afa9a19a938c7f736c62584e43392f1f160c01000000000000000b17222d38414c565f6a6f7c8591959fa4acb0b9bbbfc4c6c8ccd2cbcbcbcbcec8c5c4bfbab9b0aba39f948f837b6e695e564c41352920170d020000000000000000000c18232e414e5a6774818d9aaab4bfcad6dcd1c7bdb0a69e938e837e7a78797c81879298a2aeb8c1ccd7dfd2c5b8ac9f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2834404b55606b74818d96a1adb9c1cec9c5c4c4c6c9cfd6dfe3d7cbbfb5ab95887b6e6255483b2f22150800000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323c454e585f6a6e7b838d929ea0a8adb3b9bdc4c5c9cfcfd0d2d3d6dcd4dbd6d3d2d0cfcec9c5c2bcb8b0a8a0968d8074675d5145392c20130600000000000000000000000000000000000000010d1924303a444d565e676d747c838a90959b9fa4abadb3b7bcc2c6cacbc7c2beb6afa8a09791857b6e655b5044372a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2834404a54606b73808d949fa8b2bac2cbd5d7d0cac6c5c0bbb9b8b7b9babfc4c6c9cfd6d6cdc4bcb4aaa1979083786d60574d42342a200e0400000000000000000009121b222b32373b4246474a4b4a4847423c383328221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000003060708090907070501000000000000000000000000000000000b16212b37434e58606d79839098a2abb4bdc6ced7d8d1cbc7c5c2bebcbbbcbdc0c5c6c7c0bbb9b1b8b9bec5cdd7dbd0bdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c10030000000000000002040403000000000000000000000000000000000000000000000000000000000407090a0f12131313131313131313131313131313131313131313131212100f0c0907060400000000000000000000000000000000000000000000000000000000000000000000000a141d2a36414d565f6a6f7b848f939ea1a9aeb4b8bcc1c3c5c6cad0cbc7c5c4c2bebab8b1aba59e9792887f736d635a50463d31271d0d0400000000000000030f1b27333f49535e686e7c859297a0a7afb6bec2c7cbd1d2d4d8ddd8d8d8d7d9d4d2d1cbc7c1bdb4aea69f9591847b6e685d52453f32291e1308000000000000000000071724313e4a5764717d8a98a2aebac6d1dcd9cfc2b8afa59e95918a878586888e9399a2aab4bfcad3ded6cbbfb4aa9c8f8276675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b18232e39434f59606d7a84919ea5afbcc5d0d2d1d1d2d5dae1e8e0d3c7bbaea399877a6d6154473a2e21140700000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202a333c464e585f696e78808991969ea1a9acb2b7b9bdc0c2c4c5c7cbd0c7cfcac6c5c3c2c0bdb9b7b1aba69e9691847a6d60554b4035291d11040000000000000000000000000000000000000004111d2935414c565e686e79808790949d9fa7acafb5b9bec5c7cdc9c7c0bbb9b0aca49f9591857c6f695e53493f3327180e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e39424f59606d78828f96a0a8b1b9c0c9ced5d6d3d1cbc7c5c4c4c5c7cbd1d2d5d6d0cac2bbb3aaa29891857b6e665c50453c3122190e000000000000000000000009101920272b30363a3b3d3e3e3b3a37312c282117110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333b4754606a74808d95a0aab3bdc6cfd7d3cfc6bfbab9b5b1afaeafb0b4b8b9bec5c7c6bec5c6c9cfd7dfd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000000000000000000000000000000000000000000000000000050b101416171c1f202020202020202020202020202020202020202020201f1e1d1b19161313100c07030000000000000000000000000000000000000000000000000000000000000000020b1925303b444e585f696e7a828b92979fa2aaacb1b4b7b8babfbbbfbab8b7b5b3aeaba79f9d938e857d726d635b51483f342b1f150b000000000000000005121f2b3744505b656d7a849197a1a9b1bbc0c7d0d3d7dcdcd7d3d2d0cfd0d1d2d5dadcd7d3cfc6bfbab0a7a09690837a6d605b51443a3025190d0200000000000000000714202d3a4753606d7a85929fabb4bfcbd7ded4cac1b7afa7a09d97979292999a9fa4abb4bcc5d0dcdad3c7baaea3988b7f7265554b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d45515d67707d8a939ea9b3becad6dededfe1e6ebe8dfd2c5b9ac9f9286796d6053463a2d20130700000000000000000000000f1c2835424f5b6875818e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18212a343c464e575e666d747d848c92979ea1a8abadb2b3b5b7b8babfbabababebab8b7b5b3b2acaba79f9d948f847b6e675d51433a2f24180d01000000000000000000000000000000000000020d17202c3945525d686e7a838d939a9fa6abb1b9bbc0c7c9ccc8c5beb9b5afaca69e9a938e837c6f6a5f574d41382d221706000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303d44505c666d7a8491969fa7afb9bdc4c9cfd3d6d7d3d2d1d1d2d3d7d6d3d0cac6bfbab1a9a19892867d6f695e544a3f332a201007000000000000000000000000070f151b1f252a2d2e3132312f2e2b26201c170b060000000000000000000000000000000000020507080c0e0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0e0c080705020000000000000000000000000000000713202c38444f59626f7c87929fa7b1bcc5cfd8d2cac1bcb4aeaca8a4a2a1a2a3a7abadb3bbc0c7d0d1d2d5dae1e9d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c1003000000000000000000000000000000000000000000000000000000000000000000000001070d161c202223282b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a282623201f1c18120f0b060000000000000000000000000000000000000000000000000000000000000008141f29323c464e575f686d757e858d92989da0a7a7aaacaeb4aeb4aeacaaa8aaa29f9b959089817b706b625b514940362d22190d030000000000000004111d2935414c56606c77828f96a1a9b3bbc3ccd2d9e0d9d5d1cbc7c5c3c2c3c4c6c9cfd2d7e0d8d1cbc2b9b1a8a0958f81756d62564c41362a1e140800000000000000000613202c3945515d6774818e99a3aebac3ccd6dcd3c9c1b9b1acaaa9a29f9fa3abacafb5bdc5ced7dcd5c9beb3a99f92867a6d6054473a2e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2935414c55616c75828f97a2adbac2ccd6dee1e5e5e4ddd7cbbfb4ab9c908376665c5044382b1f120600000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbd1c5b8ab9e9285786b5f5245382c1f120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a333c454d545c606b70797f858c91969a9ea1a8a7a8aaacaeb4aeaeadb3adabaaa8a6a8a19e9995908a827a6e695f554c4131281d13070000000000000000000000000000000000000008131e2c38444f59606d7a8490959fa4acb0b8bcc2c7cccac7c0bbb9b3adaba39f9b948f8781796e6a5f584e453b2f261b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e28343f4a545e686e7a8490959da5acb2b9bdc4c6cacfcecfcfd0cfced0cbc7c5bfbab4aea79f9791867d706a60574d42382e21180e000000000000000000000000070d151d24292c2e34383a3a3a38342e2d29241e160e08000000000000000000000000000002080e111414181b1b1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1b1b181414110e0902000000000000000000000000000916222f3c4854606b76829099a3afb9c3ced7d2c8c0b8b0aaa39f9b97969595979a9ea1a9afb5bdc7cfd9e3e6ece3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1bdcad7cfc2b5a99c8f8276695c4f4336291c100300000000000000000000000000000000000000000000000000000000000000000000040c131821272c2f303538393939393939393939393939393939393939393939393938363532302d2c28231f1b17110b060000000000000000000000000000000000000000000000000000000000020d17202a343c454d565d606c717a80858b9095989b9d9fa2aaa1aaa39f9e9b9998928e89837d756e696159514940372e241b100700000000000000000713202c3945525d68717e8b949fa8b2bbc5cdd8ddded5cec9c6bfbab9b7b5b6b8b9bec4c6ccd6dbdcd7ccc3bab1a79e938b7e72685e52463b3025190e020000000000000004111d2935404b55616e7b86929fa7b1bac4ccd7dcd3cbc3bcb8b7b3adabacaeb5b9bbc0c7d0d7d9d1cbc0b9ada1978d8073685d5245392c1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c19242f3a43505a616e7b85929fa6b0bac4cdd2d4d9d9d5d2ccc3baaea3998c807366544a3f34281c100300000000000000000000000e1b2734414e5a6774808d9aa7b4c0cfd6d1c4b7aa9e9184776b5e5144382b1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018212a333b424b515960676d72797f84898d9196979a9c9d9fa3aaa1a1a0a9a29f9d9c9a9796918d88837d756d685f574d433a2f1f160c01000000000000000000000000000000000000010d1925303c4855616b75828f96a0a7afb6bec2c8cdcac5bebab6afaca9a19e99928e88827c746d675f574e463c33291d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17232e38424c565e686e7a838e939ea1a8adb2b8babec0c1c2c3c3c2c2c0bfbab8b4aeaaa29f9590857d706b60584e453b30261c0f0600000000000000000000000710191f272f35393a3f4446474645403a39353028201a1108000000000000000000000000050d14191e2021252728282828282828282828282828282828282828282828272521201e1a140d05000000000000000000000005121e2a36424d5763707d89949fabb5c0cbd5d3c9c0b6aea69e98928f8b8988898a8d92979fa4abb5bdc7d1dce8f4e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0bdced9cfc2b5a89c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000040d161d242933383c3d424546464646464646464646464646464646464646464646454543423f3c3a38342e2b27221b17110a0200000000000000000000000000000000000000000000000000000000050e18222a333c444c525a62686d737a7f83888b8e9092989494949892918f8c8985817c76706b615e564f473f372e251c1209000000000000000004101c2834404a54606d7a85929ea6b0bac4cdd6dfdbd2ccc4bdb9b4aeacaaa9a9abadb3b6bac1cad0d7ded5ccc3b9afa59f92857a6d61564c41362a1e110500000000000000010d18242f3a46535f6973808d95a0a8b2bac2cbd1d8d5cec8c5c4bebab8b9bbbfc6c7ccd2d9d5cfc7c0bbada49e92857a6d61564c4135291d0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313e46525e68717e8b949fa8b2bbc1c5c8cecec9c7c0bbb1a79f92867b6e6154473b2e23170b0000000000000000000000000c1926323f4c5965727f8c98a7b1bdc6cac7c0b5ab9c8f8276695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f182029303940454f555c60676d72787c8084878a8d8f91929893949494939792908f8d8a8784807c76706b615e564d453b31281e0d040000000000000000000000000000000000000005111e2a36414c5663707d8a949ea8b1bbc0c7d0cec6bfbab3adaca49f9c97928d87827c766f6a605d554e453c342a20170b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444d565e686e79818991969ea1a8abadb3b3b5b5b6b6b5b5b3b4aeacaaa29f98928c837b6f6a60594f463d33291e150a0000000000000000000000071019222b31394045474a50535453514b4746413a322c231a110800000000000000000001090e171e252a2d2e32343535353535353535353535353535353535353535353534322e2d2a251f170e0a010000000000000000000714212d3a46535f6976828f9ca6b0bdc7d1d7cdc1b7aea49d948f86827e7c7b7c7d81858d9399a3abb5c0cbd7dee9e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000a1723303d4a5663707d8996a7b1bcc8d2cdc1b4a89b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000000000030c161f282f353d44484a4f52535353535353535353535353535353535353535353535251504e4c494645403937332d27221b140b0600000000000000000000000000000000000000000000000000000000061018212a323a414550565d60676d72777b7e81838587878887878584827f7c79746f6b636059524d443e352d251c130a00000000000000000006121f2c3844515c66727f8c97a1adb8c2ccd6dfdbd2c9c1bab2acaaa39f9d9c9d9ea1a9aaafbabfc5ced7ded5cbc1baada2978d8174685e5246392d20150a000000000000000007131d2a36424d57606d79839096a1a8b1bbbfc6ccd2d5d4d1d0cac6c5c5c7cbd1d4d7d3cfc9c3bdb5afa49c928a7d70685d52443a3024190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a36414d56606c77828f96a1a9b0b7b8bdbcbcbdb9b6afa7a0958d8074695e52463a2d1c11060000000000000000000000000916232f3c4956626f7c8995a0abb4babfbbb9afa4998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171e272e343d434b51555d60656c6f74787b7e8082848586878787878786858482807e7b78736f6a636159524c443b332a1f160c00000000000000000000000000000000000000000713202d3946525e6876838f9ca6b0bac3ccd2cbc3bcb4aea9a29f9a938f8a85807b756f6a625f58514b433c332a22180e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e28323b444d565e676d747d848b91969b9fa2a9a6a8a9a9a9a9a8a7aaa39f9c98928d867f786e6960584f473d342b21170c0300000000000000000000040d19222b343c434b5153545c6061605c5554524c443d352c231a0f06000000000000000109131b20293036393b3f4142424242424242424242424242424242424242424242413f3b3a363029201c130a0100000000000000000815222e3b4855616e7b87939facb9c2cfd9cfc5bbafa59d928d827b75716f6e6f70747980879299a3afbbc2cdd8e3e3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000815212e3b4854616e7b8795a0acb8c1c5c3bbb0a6998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000b151e28313a41454f54565b5e5f60606060606060606060606060606060606060605f5f5e5d5b595653514b46443f38332d261d18100600000000000000000000000000000000000000000000000000000000060f18202830353e434c52555d6065696e727477797a7a7b7a7a79777573706d66636059544f46423b322c231b130a010000000000000000000713202d3a4653606d7985919ea9b3becad3deddd2c9c0b7afa8a09e9892908f9091979b9ea5aeb4bcc5cfd8ddd6cabeb3a99f92867a6e6154473c31261a0f0200000000000000010e1a26313b45515c666e7b8491969fa7aeb5bbc0c7c9cfd0d2d3d3d2d2d3d2d1cfcdc7c5beb9b2aba39f928c80736c61564c4132281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d1925303b44505b656e7b8491969ea6aaacb2afafb2acaca49f959083796d60574d42362a1e0a000000000000000000000000000815222e3b4754606a77839099a2aaaeb4afaca59f93877b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c151d2328303940454b51535b606367696e7174757779797a7b7b7a7a7978777573716e6966625f58554f46413a322a21180d0400000000000000000000000000000000000000000714212e3a4754616d7a87949fabb8c1ccd8cfc3b9b1aaa29f97928d87827e79736e69626058544e45413a3631292118100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162029323b444c555c606b70797f848a8e929798999b9c9c9d9c9b9a9898928f8b86807a726c665e574e463d352b22190f0500000000000000000000010c161f2b343d464e555d6066666d6d6d6766615d564f473e362c21180e0300000000000009131b252d323b4146474b4e4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4e4e4b4746423b332e251c13090000000000000005111e2a36414c5666737f8c9aa4afbbc8d4d6cabeb3a99e938d80756e696463626264676d737e87929fa6b0bbc7d3dee3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000714212d3a46535e697784919da5afb7b9b8b2a99e94887c6f6255483c2f221509000000000000000000000000000000000000000000000000000000000000000007121d27303a434b51596063686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b69686563605c54535049443f382f2a2217110a02000000000000000000000000000000000000000000000000000000060e161e2429313a41454c5154575f6165686a676d6e6e6e6d686b686663605c54544f48443d363029201a110901000000000000000000000a1724303d4a5763707d8a97a1adbbc5cfdcdfd5cbc0b7afa59e96918a8683828385888e939fa2aab4bdc6d1dcdbd0c5baaea3988c7f7366584e43372b1f1206000000000000000009141f2834404b545e696e7c8490959fa3abafb6b9bec1c4c5c6cad0ccc7c6c4c3c0bcb7b3ada8a099928c80746d63594f443a3020160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f27333f49535e696e7c848f949a9ea0a8a2a2a8a09e9a938e837b6e675d51453b30251a0e0000000000000000000000000006131f2b37434e58636f7d8792989fa2aaa49f9d938d8073695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e272e3439404549505356575e616467696a676d6d6e6e6d6d6d666a696764615e5755534e48443e36302920180f060000000000000000000000000000000000000000000b1724313e4a5764717d8a97a6b0bbcad3d1c6bcb1a7a098928c85807b76716d67615e5753555553514b46423b332a22180c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029323b434b515961676d72797d8285888b8d8e8f90908f8f8d8b8986827e7a736e68605b544d453d342b23191007000000000000000000000008131e28313d464e5860676d7277797a7977736d68605950483e332a1f14090000000000050e1b252d373f444c5254585a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a5854524d4540372e251b0d030000000000000714202d3946525e687783909dacb6c0ccd8d2c6b9ada2978e81776c615e57565556555c606c727f8b949fabb7c2cdd8e4d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000005121e2a36424d5764717e8b939ea5abacaba8a0978f82756a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000000000c18232e39434b555d606b7075787979797979797979797979797979797979797979797978787675726f6d6663605b535049413c3428221c140b02000000000000000000000000000000000000000000000000000000040c13191f282f353a4145474d5355585b555d60616161605d565c595653514a48433d38332a251f170e08000000000000000000000005111e2a36424d576874818e9ba9b3becdd7e1d9cec3b9afa59d938e847e7a777676797c818a9298a2abb4bfcbd7e0d7cbbfb4aa9d9184776a5f53473a2e2114080000000000000000030c18232e39424d575f6a6e7b838d92999fa4acadb3b5b7b8babfbbc0bbb9b8b6b4b0aba9a19e9691877f746e645b52473e32281e0e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17222d38414d565f6a6e7a82898d91969596969596918d8781796e695e554b4033291f140900000000000000000000000000030f1b27323d4854606b717e868e9298969993908a81786d60574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151d23282f35383f4446494d5354575a5c555c606061616160605c545c5a5754534d4947433c38332a251e170e06000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfcdd7cbbfb4aaa09590867f7a736e6964605c55545c606262605d55534d453c342a1e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029303940454f555c60666d7075797c7e80828283838282807f7c7976716d67615e56504a423b332b221911070000000000000000000000010d19242f3a434e58606a6f797f8386878684807a706b615a50453c31261a0e01000000020c17202d373f4951565e616567686868686868686868686868686868686868686868686765615e57514940372d1f150b0100000000000814212e3b4754616e7a87939facb9c6d2d7cbbfb4aa9e92857a6d655b534d4948494b515a626d76828f9ca6b0bbc7d3dfd6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000020e1a25313b4956626c75818e939b9e9f9e9c9691857a6e61584e43372b1f12060000000000000000000000000000000000000000000000000000000000000004101c2834404b555d676d757d828486868686868686868686868686868686868686868686858483817f7c7975706c65605b534e463f332d261d140a0000000000000000000000000000000000000000000000000000000002080d161e24292f35393b4246484b4e4b515454555454524c4f4c494644403938322c272119140d050000000000000000000000000714202d3a46525e697884919eabb7c4cfdee0d4c8bcb1a79d938e8179716d6769656c6f757d869299a3aebac3ced9dcd1c6b8aca096887b6e6255483b2f22150800000000000000000007121d27303b454e575f696e7880878f939a9ea1a9a8aaacaeb4aeb5afacaba9a7a69f9c97928c847c726d645c524940352c20160c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3b444e585f686e757c818486888989888784817c756d675e574d43392f20170d0200000000000000000000000000000a16202c38434f59616c717b818588898886837e756d665c50453b31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d24292d3337393c4246484b4d4f4b5153545454545453504a4f4d4a4846423c3b37322c282119130c0500000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cdd3c7baaea39890837b726d67615f5754586062666d6f6f6d67615e574e463c30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e272e343d434b51545c6063666c6f717375767676767574726f6d6765605d55524c443f382f292119100700000000000000000000000004111d2935414c55606a6f7c848c90939996918c857d706c61574d42372b1e130800000008131e29323f49515b62686e72747575757575757575757575757575757575757575757574726e69635b51493f31271d120700000000000a1724313d4a5764707d8a9aa4afbbc8d4d3c7baaea3988c7f72685e5349423c3b3c4045515b626f7c88949fabb7c4d0ddd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000009141f2d3945505a606d7981898e919292908b847b6e685e52463c31261b0f030000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676d7981898e91929993939393939393939393939393939393939399929291908e8c8985817d78716c655f5851443f382f261c11060000000000000000000000000000000000000000000000000000000000040c13191e24292c31363a3b3f4141454747484747454142403d3a38342e2c27211c160e0902000000000000000000000000000814212e3b4754616e7b8796a1adb9c5d2dfded1c5b8aca0958e81746d66605d555b60626b707d87929fa8b2bdc8d4e2d4c8bdb2a8988b7e7265584b3f3225180c000000000000000000000b151e29333c454e565e666d737b82878d9297999b9d9fa2aaa1a1a49f9e9c9a9794908b857f796f6a625b524a40372e231a0e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323c464e565e616a6f74777a7b7c7c7b7a77746f6a605d554d453b31271d0e05000000000000000000000000000000040f1b27323d47505a61696e75797b7c7c7a76716c605c544a3f332a1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c12181b22272b2d31363a3b3e4142404546474848474746443f42403e3b3a36312e2b26201c160d08020000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8b4c1ced2c5b9ac9f92867b6e69605d55555d60656a6f74797c7c7a756e695f584e42382e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c151d2328303940454a5053545b606265666869696a6968676563605c5554514c46413b332d261d170f07000000000000000000000000000613202c3945515d676f7c8691969d9fa4a09d9792877e70695f53463a2f24190d0100010d1925303a44515b626d727a7e8181828282828282828282828282828282828282828281817e7b736d635b5143392f23180c00000000000d1a2633404d596673808c99acb6c0ccd8d2c5b9ac9f92867a6d61564c4138312f2f343f47535f6a7683909ca9b6c3d0dbd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000003111d29343e45515c676d757d82848685837f796e695f564c41342a20150a0000000000000000000000000000000000000000000000000000000000000004101d2935404b55606d79828e939b9e9fa39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9c9b9898928e89847e786f6a625b504a42382d22171007000000000000000000000000000000000000000000000000000000000001080d13191d20262a2d2e322f35393a3b3b3b3a39352f33302d2c28231c1b16100b050000000000000000000000000000000a1723303d4a5663707d8996a8b2bdc9d5e1d5c9beb3a99d9083796d605c54514b505359616b727f8b96a0acb8c5d1ded9cec1b4a79b8e8174685b4e4135281b0600000000000000000000030c17212a333c444d545c606a6e757b8085898c8e919298949494999391908d8a87837e79726d666058514940382e251c1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17202a343c444d5258606267676d6f6f6f6f6d6867625f58514b433b33291f150b00000000000000000000000000000000000a16212b353e4850575f62666d6f6f6f6d6864615a504a42382e21180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11171b1f20252a2d2e31342e34383a3a3b3b3a3a3a38342e34312e2d2a25211f1b15100b0500000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8b4c1ced1c4b7aa9e918477695f585c6063676d72777c8085888886817b6f6a5f544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e272e34383f44464a505355585a5b5c5d5d5c5c5a585653514b4745413a363028221c140b0500000000000000000000000000000714212d3a4754606d7a849198a1a8acafaca9a29992867b6e61564c4135291d11040005111d2a36414c56626d727f868b8d8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8b867f736d62554b4034291c1004000000020f1c2935424f5c6875828f9ba8b5c2d2ddcec2b5a89b8f8275685d52443a2f2622232b37434e5865717e8b98a9b3becad6d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000c17222934404b555c606b707578797876726d665f574d443b3022180e04000000000000000000000000000000000000000000000000000000000000000613202c3945515d6773808d949ea5abacafb5acacacacacacacacacacacacacacacacb5aeacababa9a8aaa29f9b96918b837c726d605b544a3f332822190c0300000000000000000000000000000000000000000000000000000000000001080d11141a1e21222524292c2d2e2e2e2d2c29242623201f1c18120f0a0400000000000000000000000000000000000c1825323f4b5865727e8b98a5b1becfdadfd2c6b9ada1978a7d70665c514b454044464f59606d7984919daab7c4d0dddccfc3b6a99c908376695d50432e23170b0000000000000000000000050f18212a323b424a51575f626a6e74797c7f8284858787888787868583817e7a76726d67605c544e463f372e261d130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18222a323b41464e5456555d6062636362615e5655534e45413a312921170d030000000000000000000000000000000000040f19232c363e454d53545c60626362605d565550443f3830261c0f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131a1e2121242723282c2d2d2e2e2e2d2d2c2823272421211e1a15130f0a04000000000000000000000000000000000000000000000000000000010e1a2734414d5a6774808d9aa7b3c0cfd2c5b9ac9f92867a6f6a69676d70747a7e83888d929799928e857c6f665c5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151d23282e34383a3f4446494b4d4f4f50504f4f4d4c494645403a39352f2a251e17110a02000000000000000000000000000005111e2a36414c566673808c96a1aab2b9bbb8b3aba2988e8175685d5245392c201306000713202d3946525e68727f8b92989a9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a99928b7f72675c5145382c1f130600000004111d2a3744505d6a7783909daab6c3d0d8cbbfb2a5988c7f7265564c4132281d141a26313c4855626e7b8897a2adbac6d3d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000060c18232f39434b51596063686b6c6b6965605c544d453b32291e100600000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929fa6afb8b9bbc0b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9bfbbb9b8b7b6b4b3aeaba8a09d9590877f746c665b50443f342b1e150a00000000000000000000000000000000000000000000000000000000000000000104090e12141518181d202121222121201d1919161312100c0700000000000000000000000000000000000000000d1a2633404d596673808c99a6b3bfccd9ded1c4b8ab9e9185786c60544b403935373e44505c66737f8c99a6b2bfccd9ded1c4b8ab9e9185786b5e4a3f34281c10030000000000000000000000060f182029303940444e53585f62666d6f727577797a7a7b7b7a79787674716e6865605d55514b423d342d251d140b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18202930363d4347494b51535556565554524c4847433c352f281f170f050000000000000000000000000000000000000007101a242c333c42474a515355565554524c49453e342e261e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305090e121415181a181c1f202121212121201f1c171a171514120e0906030000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a9b3bec9d3c7bbafa39990827c777677797d81858b90959a9ea1a39f979184786d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c23282c2d3338393c3e40424343434342413f3c3a38342e2c29241e19140b06000000000000000000000000000000000714202d3946525e687784919ea9b2bcc4c7c5bdb4aa9f92867a6d6054473a2d211407000714212e3a4754616d7a86929fa3aaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8aba39e9285796d6053473a2d20140700000005121f2b3845525e6b7885919eabb8c4d1d6c9bcafa396897c706356493d3023160b13202d394653606c7985929fabb8c5d2d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000007121d27313940454f54565b5e5f5f5d5853514b423b332a20170d0000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a98a2aeb8c1c5c7cbd1c6c6c6c6c6c6c6c6c6c6c6c6c6c6d1cbc7c5c5c4c3c1bebab8b2aca7a099928c81786c605b51473d30261c11060000000000000000000000000000000000000000000000000000000000000000000002050708070d1113141415141413110d080a070604000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cdd9dbcec1b5a89b8e8275655b5042392e292b343f4a54636f7c8996a2afbcc9d5dfd2c5b8ac9f928579665c5044382b1f1206000000000000000000000000060e171e272e343c42474e53545c606266686a676d6e6e6e6d6d66696764615e5653514b454039302b221b130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171f252a32373b3c404547484949484746413c3a373129241d160d0500000000000000000000000000000000000000000008121a212a3137394044464849494745413a393328231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b070c10131314151514141312100c060b080705020000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8997a1adb9c6d1cbc0b5ab9f94908784838486898e92989da0a7abadaea9a0958a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c11171c1f22282b2d2f32333536363736353432302d2c2823201d19130d080200000000000000000000000000000000000814212e3b4754616e7a8796a0acbbc4ced4cfc6bbafa3998a7d7063574a3d3024170a000b1825323e4b5865717e8b98a2aeb4b4b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4ada197897c706356493d3023160a00000006131f2c3946525f6c7985929facb8c5d2d4c8bbaea195887b6e6255483b2f221508121f2b3744505b657784919daab7c4d0d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000010b151f272f343d44484a4f515352504b46454039302a21180e050000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98aab4bfcad2d3d7dcd2dcd7d3d2d2d2d2d2d2d2d2d2d2d2d2d3d2d2d1cfd0cac6c3bdb8b1aba39f938e81746d63594f42382e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000001040607080808070604010000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cddad9cdc0b3a69a8d80736753493f30271d232e3b4854616e7b8794a1aebac7d4e0d3c7baaea29886796d6053463a2d20130700000000000000000000000000050c151c232831373c43474a505356595b555d6061616161605c545a5754524d47454039342e271e1910090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141920272b2e2f35393a3c3c3c3c3a3936302e2b262018130c040000000000000000000000000000000000000000000000080f1820262b2e34383a3c3c3c3a3935302d282217110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070708080707070603000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eabb5bfcbd1c7bdb0a69f9a9391909092999b9fa2aaacb1b8b9bab1a89a8d8073675a4d4034271a0d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1012171c1f2022252728292a2a2929272523201f1c1813110d0801000000000000000000000000000000000000000916222f3c4955626f7c8895a8b2bdcbd7e0d7cbc0b5ab988b7e7165584b3e3225180b000e1a2734414d5a6774808d9aaab4bfc1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1beb3a9988b7e7165584b3e3225180b00000005121f2b3744505b657986939facb9c6d2d4c7baada194877a6e6154473b2e2114080f1b27333f4953697683909ca9b6c3cfd6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000030d151d232933383c3d42454645433f3a38342e271e180f06000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfd0d9e0e3e1d8d1cbc7c5c5c5c5c5c5c5c5c5c5c5c6c7ccd2d0d1d4d6d3cec8c3bdb5aea59d938c7f726b60544a3f34281c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6b3c0cdd9dacdc0b3a79a8d807467544a3f33281d212e3b4854616e7b8794a1aebac7d4e0d3c7baaea39886796c605346392d2013060000000000000000000000000000030b121820262b3137383f4446494c4f4b51545455545453504a4e4b4746413b39352f28231d150c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e151b1f2224292c2d2f30302f2e2d2a25211f1b150d070100000000000000000000000000000000000000000000000000060e151a1c23282c2d2f302f2d2c29241e1c170c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6674808d99a3aebbc3cecfc2b8b0aca49f9e9c9d9fa3abacaeb4b8bcc3c6c1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f121316181a1c1c1d1d1c1c1a19161313100c0704010000000000000000000000000000000000000000000815222f3b4855626e7b8899a3afbbc7d3dcd6cabeb3a9978a7e7164574b3e3124180b000e1b2835414e5b6874818e9ba7b4c1cfcacacacacacacacacacacacacacacacacacacad1cbbeb2a5988b7f7265584c3f3225190c0000000613202d394653606c798698a3aebac7d3d3c6baada093877a6d6054473a2d2114070b17222d43505c6976838f9ca9b6c2cfd6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000030b121821272c2f303538393836322d2c28231d150c0600000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5e2d8cfc6bfbab9b9b9b9b9b9b9b9b9b9b9b9bbc0bfc3c4c8cdd5d9d4cfc6bfbbafa59f92877d6f665c5044382e23170b0000000000000000000000000000000000000000000000000000000000000000020507080b0c0d0c0907060300000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dbcec1b5a89b8e8275665b5044392f2a2b343f4a54636f7c8996a2afbcc9d5dfd2c5b8ac9f928579665b5044382b1f120600000000000000000000000000000000070c151a20262b2e34383a3c3f424145474748484746443f413e3b3936302c29241d18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315181d20202223232221201d1915120f0a030000000000000000000000000000000000000000000000000000000003090e12181c1f2022232221201d1913110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b86929fa8b2bcc5cecbc2beb6afacaaa9aaacaeb4b8babfc6c8cdcabfb4aa9a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606090b0d0f101010100f0e0c09070604000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c1cbd1ccc3b9ada197897c6f6256493c2f231609000d1a2734404d5a6773808d9aa9b3bdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdc0bbb0a6978a7e7164574b3e3124180b00000005121f2b3744505b657986929facb9c5d2d4c7bbaea194887b6e6155483b2e221506111d2935404b556a7783909daab6c3d0d6cabdb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000001070c161c202223282b2c2c2a25201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e7dcd1c6bcb4aeacacacacacacacacacacacacafb5b2b7b8bcc3c9cfd6d8d1cbc0bbafa3999083786d60544a3f34281c1003000000000000000000000000000000000000000000000000000000000002080e11141418191a19161312100b060000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2bed1dcded1c5b8ab9e9285796c60554b423a36383d44505c66737f8c99a6b2bfccd9ded1c4b7ab9e9184786b544a3f33281c0f03000000000000000000000000000000000003090e151a1c23282b2d2f332f35393a3b3b3b3a3a38342e312e2d2a251f1d18120c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070d101314151616151413110d080603000000000000000000000000000000000000000000000000000000000000000000070c1012131516161413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3846535e6973808d96a0a9b3bcc4cdd0c7c0bbb9b7b6b7b9babfc5c6cad0d0cac1baaea2988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6776828f9ca5afbbbfc2c0bbb1a79e9285786d6053463a2d201307000b1824313e4b5764717e8a97a1abb1b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b5afa89e94877b6e6154483b2e211508000000030f1b27333f495f6c7885929fabb8c5d2d5c8bbafa295887c6f6255493c2e23170b13202c3945515d677784919eaab7c4d1d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000050b101416171c1e201f1d181313100c0700000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e3d7cbbfb4aaa39f9f9f9f9f9f9f9f9f9f9f9fa4aba5aaacb1b9bec5cdd6dcd7cbc0b5aba0958b7e72665c5044382b1f120600000000000000000000000000000000000000000000000000000002080e14191e20212426262523201f1c17110a02000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97abb5c0cbd7dfd2c6b9ada1978a7d70675d544b464144464f58606d7884919daab7c4d0dddccfc2b6a99c8f8376695c50432d22170b0000000000000000000000000000000000000000030a0f11171c1f20232624292c2d2e2e2e2e2d2b28232421201e1914100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060709090909070705010000000000000000000000000000000000000000000000000000000000000000000000000000040607090909070704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36424d57606d79849197a2aab3bbc2c9ceccc8c6c4c3c3c5c7cbd1d3cfcac5bebaafa69f92867a6d6154473a2e21140700000000000000000000000000030608090b0d0d0b08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507080b0d0d0b0807050200000000000000000000000000000000000004101d2935404b5563707d8a939ea6aeb5b6b6afa8a0958c7f73665c5044382b1f1206000714202d3a4753606d798591999fa7a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4aba39f968f8275695e53463a2d211407000000000b17222d44515e6a7784919daab7c4d0d7cabeb1a4978b7e7164544a3f34281c1117202d3a4753606d7a86939facb9c6d2d6cabdb0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000407090a0f121312100c070604000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e0d3c7baaea3989292929292929292929292939995989da0a7adb3bbc4cdd6dcd1c7bdb1a79e9184786d6053463a2d22170b0000000000000000000000000000000000000000000000000000050d14191f252a2d2e313333322f2d2b28231c140c080000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3afbbc7d4e0d5c9beb3a99d9184796d665d55524c505359616a727f8b96a0acb8c5d1ded7cbc0b5ab9a8d8074675a4d4134271a060000000000000000000000000000000000000000000000060b1012131619181d202121222121201f1c17181414110e080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313b45515d676e7c859298a1a9b0b9bdc4c7cbd1cfcfd0cfced0cac6c5beb9b3ada59e948c8073685e5246392d2013070000000000000000000000030a0f121515181919181514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111414181919181514120e090300000000000000000000000000000000010d18242f394855616b75818e949fa3aba9aca49f959083796d60544a3f34281c10030006131f2c3845515d67707d879095969797979797979797979797979797979797979797979799928e847a6e61574d42362a1e120500000000061c2936434f5c6976828f9ca9b5c2cfdacdc0b4a79a8d8174665c5044382e231c212834404b5463707c8999a4afbbc7d4d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dfd2c5b9ac9f9286868686868686868686868687898c90959ea1a9b2bbc4cfdad9cfc3b9aca0968a7d706353493f33271b0f03000000000000000000000000000000000000000000000000060e171f252a3036393b3e3f403f3c3a38342e261e1a120a01000000000000000000000000000000000000000000000000000714202d3a4753606d7986929facb9c5d2dfdacfc5b8aca0958e81786d67615e565b60626b707c86929fa8b2bdc8d4e0d3c7bbafa3998a7e7164574a3e3124170b0000000000000000000000000000000000000000000000000003060709070d111314141515141312100b06080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935404b555f6a6f7d8691979fa6acb2b9babfc1c2c3c3c2c2c0bfbab8b3ada9a29f938f82786d60564c41362a1d1105000000000000000000040a0f151a1f21222526262522211e1a150f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d14191e20212426262522211e1a140e090200000000000000000000000000000007121d2c38444f59606d79828d92999b9c9b9a938e837b6e675d5142382e23170b000004101d2935404b55616b707d8387898a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8986817a6e685e52453b31251a0e02000000010e1b2734414e5a6774818d9aa7b4c0cfdad1c4b8ab9e9184796d60544a3f342d2a2c333b45515c6674808d9aabb5c0ccd7d6cabdb0a3978a7d7064574a3d3124170a000000000000000000000000030506090c0d0c0a070604000000000000000000000000000000000000010507070b0c0d0b0808060200000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b79797979797979797979797a7c7f838a9297a1a9b2bec9d5e1d5c9bdb2a89b8e8175655b5044372b1f12050000000000000000000000000000000000000000000000060f18202930363b4146474b4c4d4c4946443f38302c241c130a0000000000000000000000000000000000000000000000000006131f2c3845515c677784919daab7c4d0dde1d4c8bdb1a89e938e8179726d6869666c6f757d869298a3aebac3ced9dfd2c5b9ac9f92867a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000010406070808080707060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18242f39434e58606b6f7c858f949ea0a8acaeb4b4b5b6b6b6b5b4b4aeaca9a19e97928b81796d665c51443a3025190d010000000000000000070f161b20262b2e2f323333322f2e2b261f1b150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181e252a2d2e313333322e2d2a261f1a140d05000000000000000000000000000001101c28333e45515d676d7880868c8e8f8f8c87817a6e695e554b4030261c11060000000c18242f39434f59616b6f767b7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7a756d685e564c4133291f140900000000000b1825323e4b5865717e8b98a9b3bec9d5d2c5b9ada1968a7d70665c50443f3836383d454e57606d7985929eabb8c5d2ddd6cabdb0a3978a7d7064574a3d3124170a00000000000000000000060b0f121316191a19171413100c07010000000000000000000000000002080d111314181919181514120e09030000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6c6c6c6c6c6c6c6c656c6d6f72777e859197a1adb9c3ced9d9cec4b8ab9f9285786c605346392d20130600000000000000000000000000000000000000000000020b18212a323b41464d5254575959585653504a423e362e251c110800000000000000000000000000000000000000000000000004101c2934404b556875818e9ba8b5c1cdd9e4d9cec3baafa59e938f847e7a777677797c81889298a2aab4bfccd5e0d5c9bdb2a89c8f8276685d5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c464f59606a6f7a828a91969c9fa3aaa7a8a9a9a9a8a7aaa29f9c97928d857e776d675d544a4032281e1308000000000000000008101921272c31373a3c3e40403e3b3a37312b2620181008000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d24293036393b3e40403e3b3a36312a251f170f0600000000000000000000000000000b16212935404b555d666d737b7f828382807c756d685e574d43392f1e140a0000000007121d27313d474f596063696e70717171717171717171717171717171717171717171706f6d67615e564c443b3021170d0300000000000916222f3c4955626f7c8897a1adb9c6d2d5c9bdb2a99d9083786d605a504a464145464f575f6a737f8c97a1adb9c6d2e3d6cabdb0a3978a7d7064574a3d3124170a0000000000000000020a11171b1f202325262624201f1c18120b030000000000000000000001070c13191d20212426262522211e1a150e0903000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615f5f5f5f5f5f5f5b606062656c717b85919ea7b1bcc8d4dfd3c6baada297887c6f6255483c2f221509000000000000000000000000000000000000000000000a141d2a333c444d52565e616466666562605c54504840372e231a0b020000000000000000000000000000000000000000000000000c18232f3e4b5865717e8b98a7b1bcc8d4e0dfd5ccc1b7afa59e97918b8684838385898e939aa2aab3bcc6d0ded8cec6b9aca0968a7d7164564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333d474f5860686e767e848a8f9298999a9c9c9d9c9b9a9898928f8b85807a726c655d554b42392e20160c020000000000000008121a222b32383c4347484b4c4c4b4847423c37322a221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000040e161f282f353b4146474b4c4c4b4846423b36302921180f0600000000000000000000000000050c18242f39434b545c60696e72757675736f6a605d564d453b31271d0c0200000000010b151f2c353d464f54575e61636464646464646464646464646464646464646464646463605d55524c443b32291e0f050000000000000613202d394653606c7985929eabb8c4cfdacfc4b8aca0958c7f726c605b54524c51535960696e7c86929fa9b3bec9d5e2d6cabdb0a3978a7d7064574a3d3124170a00000000000000070b141b22272b2d2f323332302d2c29231d150d090000000000000000030b12181e25292d2e313333322e2d2b261f1a140d060000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154535353535349505354565a6169707d8a95a0acb8c5d1ded6cabeb3a9978b7e7164584b3e3125180b00000000000000000000000000000000000000000006111c262f3c454d565e61686e717273726f6d66615a514940352c1d140a0000000000000000000000000000000000000000000000000714212e3b4754616e7b8795a0acb8c4d1dee7ded3c9c1b8afa9a19e999291909092979b9fa4acb3bcc5ced8dbd0c6bcb0a69e9184786d6053463a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18212b343d464e565e616c71787d8286898c8e8f90908f8f8d8b8985827e79736d68605b534b433930271c0e0500000000000000060f1a242c343d43484e53555859595855534d47433c342c231a0f050000000000000000000000000000000000000000000000000000000000000000000000000000020c162028313a41454c52545759595855534d46423b332a21180c030000000000000000000000000007121d273139424a51575e616568696866625f58524c443b33291f150b000000000000030d1a232c343d43484d525456575757575757575757575757575757575757575757575654514b46413a322920170d0000000000000006121f2b3844505b6674818e9ba8b2bdc9d5d4c8bcb1a79f92877e726c66615e565c60636b707b849198a2aebbc5cfdae6d6cabdb0a3978a7d7064574a3d3124170a0000000000000911191d262d3337393c3f403f3d3a38342f271f1b120b020000000000040d151d24293035393a3e3f403e3b3a37312a261f180f0600000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615448464646463f444647495057616b7783909daab7c3d0dddbd0bfb3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000b17222d38424d575f686e757b7e7f807f7c78716c635b51473e2f261b110600000000000000000000000000000000000000000000000714202d3a46525e697783909daab6c2ccd8e3e5dbd3cac1bbb2adaba39f9d9c9d9ea2a9acafb6bec5ced7dbd6cabfb4aa9f948a7e71665c504438281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222b343c444d525a61666d71757a7c7f818283838382817e7c7975716d67615d565049413931271e150b00000000000000030e18212c363e464f54585f6265666665625f57534e463d352c21170d030000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a434b51565e6164666665615f57524d453c332a1e150b00000000000000000000000000010b151f27303940444d5354595b5c5c5955534e45413a322921170d030000000000000008111a222b32383b4246484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a494745413a36302920170e0500000000000000030f1c28333f4a5463707d8a96a1adb9c5cfd9cdc3bbafa39992877f78716d686b676d70757d849196a1aab4bfcdd7e1e3d6cabdb0a3978a7d7064574a3d3124170a000000000009121b232b2f383f4446494c4d4c4a47454039312d241d140b00000000040d161f272f353a4146474b4c4c4b4847423c36312921181006000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b39392d3337393a3e454f596673808d99a6b3c0ccd9dacec1b4a79b8e8174685b4e4135281b0e0000000000000000000000000000000000000000030f1c28333f4a545f696e7a81878a8c8c8b89847e736d635a5041382d22170b000000000000000000000000000000000000000000000005111e2a36424d566673808c99a6b0bbc7d3e0ebe5dcd3cdc4beb9b5afacaaa9aaabadb3b9bbc0c7d0d7dad5c9c0baaea2989082776c60544a3f3428160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222b323b414650545c6064676d707274757676767574726f6d6764605c55524c443f382f271f150c030000000000000009151f2a333e48505960636a6f717373716e69625f584f473d33291f1409000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c555d60686e717373716e69615e574d453c30271c120700000000000000000000000000030d151e272e343b4246484c4f504f4d4847433c352f2820170f0500000000000000000008101921272c30363a3b3d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d3c3a39352f2a251e170e050000000000000000000b17222d3a4653606d7884919ea9b3becad6d7cbc0b5aba399928b837e7a797778797d81889196a1a8b2bcc6d0dfe9e3d6cabdb0a3978a7d7064574a3d3124170a0000000006101b242c353d41495053565859595753514b433f372f261d12090000010c161f28313940454c52545759595855534d46423b332a22180d040000000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2c22272b2d2d333f4c5865727f8b98a5b2becbd8dbcec2b5a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000006121f2b3844505b666e7b848e939999999896918a7f736c6153493f33271b0f0300000000000000000000000000000000000000000000020e1925303b4855626e7b88949fabb7c4cfdae6eee5dfd6cfc9c7c0bbb9b7b6b6b8b9bec5c8ccd2d9d6cfc9bfb7aea49f92867b6e655b5042382e23170400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019202930363e424a5053555d6063666769696a6968676563605c5553514b46413a332d261d150d0300000000000000020e1a26313c45505a616b6f767b7e7f7f7e7b766f6a60594f453b30251a0e00000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c565d676d747a7e7f7f7e7b756e695f574d42392e23180c0000000000000000000000000000030c151c232831363a3b3f424342403c3a373129241e160d050000000000000000000000070f161b1f252a2d2e3031313131313131313131313131313131313131313131302d2c29241d19130c050000000000000000000006121f2b3844505c66737f8c97a1adb9c3cfd8d1c7bdb4aba39f95908b87858485868a8e939aa1a8b2bac4ced8e2f1e3d6cabdb0a3978a7d7064574a3d3124170a000000040e18222c363e474f535b606265666563605c55514940382f241b0c030007121d283139434b51565e6164666665615f57534d453c342a1f160c0100000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2d2d2d2d2d2e323f4b5865727e8b98a5b1becbd8dccfc2b5a99c8f8276695c4f4336291c1000000000000000000000000000000000000000000613202d394653606c788390969fa4aba6a8a09e918a7d70655b5044372b1f120500000000000000000000000000000000000000000000000914212e3a47535f6976828f9ca9b2bec9d5e1ecf1e8e0dad5d1cbc7c5c4c3c3c5c6cacfd4d6d3d0cac5beb9aea59d928b7e71695f53493f30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171f252a30383f44464b515356595b5c5d5d5c5c5a585653514b46454039353027221b140b03000000000000000006121e2b37424d57616c717c83888b8c8c8b88827c706b60574d42362a1b110600000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686d7981868a8c8c8b88827b6e695f544a4034281c10040000000000000000000000000000030b12181f252a2d2e32353635332f2e2b262019130c0400000000000000000000000000040a0f141a1e202123242424242424242424242424242424242424242424242321201d18130d0802000000000000000000000003101c28343f4a54606d7a85929ea7b1bdc6d1d9cfc6bdb4aea79f9d9898929192939a9b9fa4acb2bac4ccd6e0eaf4e3d6cabdb0a3978a7d7064574a3d3124170a0000000a15202a343e48505960656c6f727372706d67625b524a40362d1e150b000d18242f39434b555d60686d717273716e69615f574e463c31281d120700000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b3a3a3a3a3a3a3b3d444e586673808c99a6b3bfccd9dbcfc2b5a89c8f8275695c4f4236291c0f00000000000000000000000000000000000000000a1724313d4a5764707d8a95a0a9afb5b3b2aca49d9184786c605346392d201306000000000000000000000000000000000000000000000006121e2b37424d5764717d8a97a1adb9c5cfdae6f2f2ebe6e3dcd7ccc7c3c2c4c5c8cec9d0cac6c5bfbab3ada49c938d80736c61574d41382d1e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e262e34383a404547494c4e4f5050504f4e4b494645403a38342e29241e17110a020000000000000000000814212d3a47535f69717e87909598999998948f867d70695e5246382d22170b0000000000000000000000000000000000000000000000000000000000000000000007131f2c38444f59616d7a838e9299999998938f847b6e665c5144382c1f120600000000000000000000000000000000070c141a1e2121262829292622211f1b150d08010000000000000000000000000000000002090e1214151717171717171717171717171717171717171717171717161413110d070100000000000000000000000000000b17232e3845515d67727f8c95a0abb4bfcbd7d8cfc6bfbab1abaaaaa29f9e9e9fa4acacafb6bec4ccd6dee7edf4e3d6cabdb0a3978a7d7064574a3d3124170a0000030f1b26323c46505a616b70787c7f807f7d79726d645c52483e30271d1207101d2935404b555d676d747a7e7f7f7e7b766e695f584e43392f24180d01000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154484646464646464747494f565f6a7683909ca9b6c3cfdcdbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000000000000000020f1b2835424e5b6875818e9ba7b1bbc0bfbdb8aca095887c6f6255483c2f2215090000000000000000000000000000000000000000000000020e1a26313c4653606d7984919ea9b3bec9d5e0ebf6f4e9ded3cac2bbb7b5b7b8bdbcbdbdbfbab8b4aea9a19e928d81776c605a50453c2f261b0c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c141c23282b2f35393a3d3f414243434342413f3c3a38342e2c28231d19130b0600000000000000000000030f1b27333f4953616e7b8692999fa7a6a6a69f9892857b6e6153493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b75828f959fa3aba6a59e969083786d6053463a2d201308000000000000000000000000000000000003090e121415191c1d1c1a1515120f0a030000000000000000000000000000000000000000020507080a0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a09070604010000000000000000000000000000000006111c2935414b55606d78839099a3aebac1cad3d8d1cbc3bcb8b6b4aeacaaabacafb6b9bbc0c7d0d2d3d7dce2eae3d6cabdb0a3978a7d7064574a3d3124170a000006121f2b37434e58616c717d83898b8c8c8a857e746e645a5043392e23180c13202c3945515d676d7980868a8c8c8b88827b6f6a5f554b4035291d1004000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154535353535353535354565961686f7c87939facb9c6d2dfdacdc0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000004111e2b3744515e6a7784919daab7c3cccec8bcb1a7988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000009151f2c3844505c66727f8c97a1adb9c4cfdae5f3efe3d8ccc2b8b0aaa9aaacb2afb0b0b4aeacaaa29f97928a80746c655b50483e332a1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f24292c2d30333436363736353432302d2c28231f1c18120d0802000000000000000000000005121f2b3744505b6574818e98a2abb1b2b2b0aaa2978d8074655b5044372b1f1205000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89949ea7afb5b2afa8a0958b7e7165584b3e2f24190d01000000000000000000000000000000000000020507080c0f100f0d0908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a44505c666f7c86929fa5afb8c1c9d5dad7cdc8c4c3bfbab8b7b8b9bbc0c6c8cccbc7c5c7cbd1d8e1ead6cabdb0a3978a7d7064574a3d3124170a00000815212e3b47535f6a717e87909598999897928b80746c62554b4034281c121f2b37434e58606d79838d9299999998948f857c6f675d5145392c201307000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e616060606060606060606163666b707a839099a4afbbc7d4e0d7cbbfb4aa988b7f7265584c3f3225190c0000000000000000000000000000000000000006121f2c3945525f6c7885929fabb8c5d2d9cebfb3a6998c807366594d4033261a0d00000000000000000000000000000000000000000000000003101c28343f4a54606d7985929ea8b2bdc9d5e1eaebdfd3c7bbb0a69f9c9ea0a8a3a3a3aaa29f9c98928d857d736e605b53493f362d21180b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1012181d2020232628292a2a2929272523201f1c1813100c0700000000000000000000000000000613202d394653606c7885929eaab4bdbfbfbcb3a99e9285786c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa6b0bbc0bfbab1a79c8f837669564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28343f4a54606a727f8b939da6afb7c0c9cfd6d8d4d1d0cac6c5c4c5c6c8ccd0cac6bfbab9babfc6cfd8e2d6cabdb0a3978a7d7064574a3d3124170a0004111d2935414c56626f7c869299a0a7a6a9a19e928b7e71675c5145382c1f15212e3a47535f6a74818e959fa3aba6a69f979184796d6053473a2f24180c000000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6d6d6d6d6d6d6d6d6d6d6e7072777d849095a0abb5c0ccd7e0d3c7baaea398897c6f6356493c30231609000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000c17232e3845515d67727f8c96a1adb9c2cfd8e2e9dcd0c3b7aa9f948f9196959696969698928f8b86807a706b635c504941382d241b0f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070d10131416191b1c1d1d1d1c1b18161313100c0704000000000000000000000000000000000815222e3b4855616e7b8897a2adbcc6cfcec5b9ada197887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909daab6c1cbccc3b9ac9f928679685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000407090a0e10100f0d09080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17232e38424e58626d74818e949ea5aeb9bec5cbd0d4d9dbd6d3d2d1d1d2d3cec6bfbab4aeacaeb4bdc6d1dcd6cabdb0a3978a7d7064574a3d3124170a000713202c3945525d6875828f98a3abb1b3b3ada49e9184796d6053463a2d2015222f3c4855626f7c87939fa7aeb4b2b0a9a0968c7f7265554b4035291d10040000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b797979797979797979797a7a7c7f83899196a0a7b1bdc7d2dddfd2c5b9ac9f9286796d6053473a2d201407000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000000000000000000000006111c2935404b55606d7984919ea6b0bdc6d1dce7dccfc2b5a99c8f82848788898a8a898785827e7a736d68615952443f382f261b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0c0e0f1010100f0e0c0907060400000000000000000000000000000000000000091623303c4956636f7c8996a9b3beced8d5c9beb3a996897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000121f2b3845525e6b7885919eabb8c4d1d3c7baaea398877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000050b101416171a1c1d1c1a1515120f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303c46515b606d78828e939da4adb3babfc6c8cececfd0cfcfd1cbc7c2bcb4aeaba39fa3abb4bfcbd7d6cabdb0a3978a7d7064574a3d3124170a000714212d3a4754606d7a86939faab4bdbfbeb9ada196897d7063564a3d30231a2733404d5a6673808d9aa4afbabfbfbbb2a89d908377675d5145392c1f13060000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d5c8bcafa3978d87868686868686868686868687898c90959ea0a8b1b9c3d0d9e1d5c9beb2a99c8f8275675c5145382c1f1306000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000d18242f3945515c67717e8a949fabb4bfcbd7e0ddd0c3b7aa9d9083797a7b7c7d7d7c7b7975726d67605d564f4740332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bccfd6dacfbdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d7cbbfb4aa94877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000003090e161c20222327292a292622211f1b150d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2b343f44505c666d79818d929ea1a9aeb4b8bcc0c1c2c3c3c2c1bfbab9b0aaa29f999299a3aebac7d3d6cabdb0a3978a7d7064574a3d3124170a000a1723303d4a5663707d8999a4afbcc6cfc9bdb2a8998c807366594d4033261d293643505c6976838f9cacb6c0cbcdc3b9ac9f93867a6d6053473a2d2014070000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d8ccc0b4a99f979493939393939393939393939496999da0a7acb2bac3cbd5e2d9cfc7b9ada1978a7e7164554b4034291c1004000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000007121d2934404b55616c76828f99a3aebac2ced8ded1c4b8aca0958f82786f7070706f6e6c6565605d55524c443e3527221b140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080c0f100f0d080806020000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1dcd1baada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000060d141a21272c2f3034363736332f2e2b262019130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c192228343f4a545c676d78808a92979fa3aaacb1b3b5b5b6b6b5b4b4aeaca69f98928b86929facb9c5d2d6cabdb0a3978a7d7064574a3d3124170a000b1824313e4b5764717e8a97abb5c0cfd8cfc0b4a79a8d8174675a4e4134271e2a3744515d6a7784909daab7c3d2d4c8bbafa49a877b6e6154483b2e2115080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dcd0c5bbb1a9a3a1a0a0a0a0a0a0a0a0a0a0a0a1a3a5aaacb1b9bdc4ccd5dddcd1c7bdb2a89e9184796d6053463a2f23180c00000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000000000000000000000000010c18232f3943505a626e7b86929fa7b1bcc6d0dcd4c8bcb1a79e948d80736d63636361605b5354514c45413a322c2317110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415191c1c1c1a1514120f0903000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000060f171f262a33383c3d41434342403c3a373129241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071017232e38424b555c666c737d858d92989da0a7a6a8a9a9a9a9a7aba39f9c948f867e828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1bed2d7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d8ccc0b6ac95887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5d7cdc3bbb4afaeacacacacacacacacacacadadafb2b6b8bcc3c9ced5dedad5cbc0b5aba0968c7f72665c5145382c1d120700000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000007121d27313e47535f69737f8c959faab4bfcbd6d9cdc3b9b0a69d928b7f726b6058545350494745413a352f28201a11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c141a1e2122262829292622211f1a150e060000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000050f17212931363d44484a4d4f504f4d4847433c352f281f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263039434b545b606b707a80868c909597999b9c9d9c9c9b9999928f89827b76828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1ddd2bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5dfd5cdc5c0bcbab9b9b9b9b9b9b9b9b9b9b9babcbfc3c4c8cdd5d9ddd7cfc9bfbbafa3999184796d60544b4034281c0b0100000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000000010b151f2b37424d57606d78839098a3aebac1ccd5d5cbc1b8aea49f92877d706a5f564c443f3a39352f29241e160d0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181f262a2d2e33353635332f2e2b2620180f0a02000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024170a090909080706040100000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000030d172129333b42464f54565a5c5d5c5955534e45413a31281f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e273139424a505961686d737a7f84878a8d8e8f90908f8e8c8a86827d766e76828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5e7dfd7d0ccc8c7c6c6c6c6c6c6c6c6c6c6c6c7c9ccd0d1d4d9dcd7d2ccc5beb9ada49f92877d6f665c5142392e23180c0000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000000030d1a26313c44505c666e7b86929fa5afbac3ced8d3cac0bbafa39992857c6e685e554b40342c29241e19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d232831363a3b3f424342403b3a37312a211c140b020000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30241716161615151413110d07070604010000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000009141f29333b454d5359606367696a6966625f58514c433a31271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151f272f383f444f565d60686d72777b7e808282838382817f7d7a75706b6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5f2e9e2dcd8d5d4d3d3d3d3d3d3d3d3d3d3d3d4d6d8d8dad5d2d1cbc7c0bbb3ada39c928c7f726b60544b4030271d12070000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000000000009152028343f4a545f6a727f8b939ea8b2bcc6d0dcd7cbc0b5aba29791847a6d675c514540362c22190f080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e272e343b4246484c4f4f4f4d4847433c332e261d140b0000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d302423232323222220201d18171413110d0701000000000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000020e1a25303b454d575f616b7074767675736f6a605d554c43392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151d262d333e434c52565e6165696e717375767676767473706d6863606976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5ece4dcd6d1cecdcccccccccccccccccccccccccccccbcfc9c6c5bfbab5afa9a19e918c80736d62594f42392e1e150b000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000000000000000000000000000000030b17232e38424e57626d75818e96a0aab4bfcbd6dcd1c7bdb3a9a0969082796d605b51483e342b21170c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e27303940454d5355595b5c5c5955534e4640382f261d120900000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d302f2f2f2f2f2f2e2d2c29242420201d18130f0b0400000000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000005121e2a36424d575f696e767d80828382807c756d675d554b4034291c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b141c2228313a41454c5254575e61646668696a6969686663605d565c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5e4dad2cbc5c1c0bfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbebeb9b8b4aeaba49f97928a7f736e645b51473d30271d0c03000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000000000006111c26303c45515b606d7a849198a3aebac0cad4d9cfc5bcb2a89f948e81756d635a50463d33291e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263039434b51575f616668696866625f58524a41382f241a0e05000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3c3c3c3c3c3c3c3b3a39352f312d2c29241d1b160f0a040000000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000003050614202d3a46525e696e7b83898d8f908f8c8881796d675c5145382e23170b0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171f282f353a4146474d5254575a5b5c5d5d5c5b595754524c5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e5dcd2c8c0b9b5b3b3b3b3b3b3b3b3b3b3b3b3b3b3b2b2b1b3adabaaa39f99938e857e736d645c52493f342b1e150b00000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000000000000000a141e2a333f45515d676f7c86929fa4aeb8c2ccd6d7cec4bab0a69e938c7f736c61584e453b30261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424b555c60696e72757675736e6a635c524a41362c20170d020000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a494949494949494848474540413e3a39352f2c27211b150b0600000000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000003060b0f12131e2b37424d57616e7b8590959a9c9d9c99938e83796d60544a3f34281c14120e0906030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161e24293036393b4246484b4d4f4f50504f4e4c4a47454f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9e1d6cbc0b6aea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a5a4a9a19e9b98928e87817a706c635b524a40372d22190c0300000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000000000000020c18212935414c555f6a717e8b929da6b0bac4ced7d6ccc2b8afa59f93887e716a60574d42382e23170c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c676d747b7f828282807b736e645c52483e32291e13080000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063575656565656565656555553514b4d4a4745403a38322b262017110a020000000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000000000000000060b0f12171b1f20222e3a47535f6975828f979fa7a9a9a8a59e958c8073665c5044382b22211e1a15130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d30363a3b3e40424343434341403d3a434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9ddd1c5b9aea49d9a999999999999999999999999999998989697928f8b86817c746e68615a514940382e251b10070000000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000000000000000000000000000000000000060f19242f3a434e58616c74808d949fa8b2bcc5d0d9d4cbc1bbafa49a92867c6f695e544a3f34281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666d7980878c8e8f8f8c8780746e645a50443a3025190d0300000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70636262626262626262626261605d555a5753514b48443d373228231c140c0400000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000000000000000000002080d11171b1f22272b2d2f303b4855626e7b88949ea9b1b5b6b5afa79e9285796d6053463a302e2d2b26211f1b15100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d13191d20252a2d2e3133353637363635333036434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dbcec1b5a99d928d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b898785827e7a746f6a615e56504840372e261c1309000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000000000000000008131e28313c46505a606d78828f96a0aab4bdc7d2ddd8ccc0b6aca39892857b6e665c50443a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d78828d92999b9c9b99938d80746c61564c41362a20150900000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d706f6f6f6f6f6f6f6f6f6f6f6e6d676a6764605d55544f47433c342e261e160d04000000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000000000001080d13191b22272b2d3337393c3f414b5865727e8b98a6b0bbc2c3c1b9ada197887c6f625549413f3b3a37312e2b261f1c18120c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141a1e2021242728292a2a2928262936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9dacdc0b3a79a8d80808080808080808080808080807f7f7e7c7b7875716d68625f58524c443e362e251c140a01000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e010000000000000000000000000000000000000000000000000000000000000000010c161f2a343e44505c666d7a849198a2abb5c0ccd7ddd2c7beb4aaa1979083786d60564c41362a1d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5765727f8c949fa3aba9aba49f928a7e71685e52463c31261a0b02000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d8cbbfb2a5988c7f7c7c7c7c7c7c7c7c7c7c7c7b7b7a787674716d67636059534e443f3830281f160e040000000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000000000040c13191e24292d3337393f4446494c4d525a6774818d9aa7b4c0cdd0cabeb3a9978b7e716458524c4b4847423c3b37322c28231d17110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090e121415181a1c1c1d1d1c1b1c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b73737373737373737373737373737271706e696864605d56534e46413b322c231c130a0200000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000000000000000000040d182228343f4a545d686f7c869299a4afbbc0cad3d9d0c6bcb3a99f958c7f73685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697884919ea6afb5b5b5afa49f92857a6d61574e42372b1d140a000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d9ccc0b3a79b918c89898989898989898989898888868583807d7a756f6b625f58504a423a312820160c0300000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000000002080d161e24293035383f44464950535559565e616875828e9ba8b5c1cedacfbeb2a5988b7f7265605d565855534d4947433c38342e28231c150c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f10101010101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e66666666666666666666666666656563615e575854524c47433c363029201a110a010000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e0100000000000000000000000000000000000000000000000000000000000000000000061017232e38424c565f6a707d87939fa4aeb8c1cbd4d8cec5bbb1a79f92857a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8796a1acbbc0c2c0baada2978d81746a5f53473d2f261b11060000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6dcd0c4b8ada39b98959595959595959595959595949792908d8a86827c766f6a605c544c433a32281e150b00000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000000000000050d14191f282f353a4145495053535b60626668686e7075828f9ca8b5c2cfd9ccbfb2a6998c7f736f6d686865615f5755534e46454039342e261e18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000203040303101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6159595959595959595959595959585654534d4b4745413a37312a251e170e0800000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444e58616b727f8b929da6b0b9c2cbd5d6cdc2baaea2988b7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a8b2bdc9d1cabeb3a99f92877b6e62594f41382d22170b0100000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e0d4c9bfb5ada7a5a2a2a2a2a2a2a2a2a2a2a2a2a9a29e9d9a98928e89837c736d665d564c443a30271d1207000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000000000000070e171e252a313a41454c52535b6063656c6f7275787a7c7f84919eaab7c4d1dccfc2b6a99c8f827e7c7a7775726e6967625f5853514b443f383028231c150c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e61544d4d4d4d4d4d4d4d4d4d4c4c4b494846423e3a39352f2b262019140d050000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000a151e28323c464f59626d74808d939ea6b0b9c3cbd7d6cabfb4aa9b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8796a1adb9c5d0cfc5bbafa3998f82756b6053493f33271d120700000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3dbd1c7bfb8b3b2afafafafafafafafafafafaeb3adaba9aaa39f9b94908780786d685d564c42392e23180c030000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000000081019202930363f434c52565d60656c7074787c7f828587898b9196a0acb8c5d2ddd0c3b7ab9f948f8b898784817e7b77736f6a65605c54504a423d342e271e160e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfd6cabdb0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e615448404040404040404040403f3e3d3b3a36312d2c29241e1b150e08020000000000000000000000000000000000000000000000000000000000000007121d273146535f6c7986929facb9c5d2dacdc0b3a79a8d8074675a4d413427180d04000000000000000000000000000000000000000000000000000000000000000000000000030c16202a343e47515b606d78818f949fa7b1b9c2ccd2cdc2b5a89c8f8275695c4f4236291c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697884919ea9b3becad6cbc0b5ab9e94897d70655b5044392f23180c02000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3e3d9d1c9c4c0bfbcbcbcbcbcbcbcbcbcbcbcbbbeb9b8b6b4aeaca69f99938d827a6d685d544b4034281e150b0000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000000000000008111a222b323b414650565d60686d72787d8185888c8f919796989ea0a8b2bdc8d4dfd3c7bbb0a69f9c979596918e8b8884807c77716d66605c544f444039302820170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca8b5c2cfd8ccc0b6ac978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b3333333333333333333232302e2d2a2521201d19130f0a030000000000000000000000000000000000000000000000000000000000000000050f18232f39434e576c7986929facb9c5d2dacdc0b3a79a8d8074675a4d41342a1f160c01000000000000000000000000000000000000000000000000000000000000000000000000040e18222c353f44505c666d79829095a0a7b0bbc0c7c4bbb0a69a8d8074675a4d4134271a0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5766727f8c97a2adbac4cfd1c7bdb0a69d9083786c60554b4034291e1308000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3ebe3dbd4d0cccbc8c8c8c8c8c8c8c8c8c8c8cfcac6c5c3bfbab8b0aba49f948f837a6d665c51453d30271d120700000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000000008111a232c343c444c525a62686d737a7f84898e9197999b9ea1a9a5aaacb2bac3ced9e3d8ccc2b8b0aba9a4a8a09e9b9896918d88837e79726d666059514a423a322921170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8b4c1cdd2c8bbafa49a897c6f6356493c30231609000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e262626262626262626252321211e1a1413110d0801000000000000000000000000000000000000000000000000000000000000000000030c17212934404b555f6a7986929facb9c5d2dacdc0b3a79a8d8074675b51463c31281d13070000000000000000000000000000000000000000000000000000000000000000000000000006101a2328343f4a545d676d7a8390959fa6afb5bab9b3a99f94897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b4754606d7a85929fa8b2bdc9d5cfc1b8ab9f958b7e71675c51453a3025190d030000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3f2e9e1dbd6d3d2d1d1d1d1d1d1d1d2d3d6dbdbd6d2d1d0cbc7c2bdb5afa69f959082786d60594f42392e23180c00000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000000006101a232c353e464e565e616c717a80858c91969a9ea1a9a8abadb3b1b7b8bdc3ccd5e0e9ded4cac2bbb7b6b1b2acaaa8a8a09e9a95908b847f78706b605c544c443b332920170c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b0bbc4c5c0b9ac9f93867a6d6154473a2e211407000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211a1a1a1a1a1a191918161514120e0907040100000000000000000000000000000000000000000000000000000000000000000000000b151e29333b45515c676e7b87939facb9c6d2dccfc2b5a99c8f82766d62584e433a2f24180f0600000000000000000000000000000000000000000000000000000000000000000000000000081117232e38424b555d686d7a8390949fa4abaeada9a1978f82766b6054483b2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c3945515d67727f8c96a1adb9c3cdd4c8bcb1a79e9184796d60564c41362a2015090000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3e9e0d7d0cac6c5c5c5c5c5c5c5c5c5c6cad0d0d1d4d8dcd6d3d0c7c0bbb0a79f948d80746b61544b4034281c1106000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000000040d18222b353e474f5860686e757e858d92989ea1a8abadb3b5b8b9bebec4c5c8ced5dee7f0e6dcd4ccc7c3c2bebdb9b7b4b2acaaa7a09d96918b837d736d665e564d453b32291e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89949fa9b2b8b9b7aea59d908376685e5246392d201307000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150d0d0d0d0d0d0c0b0a08070502000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303b45505a606d7983909aa4afbbc8d4ddd0c3b7ab9f948b7f726a5f554b40352921180d030000000000000000000000000000000000000000000000000000000000000000000000000006111c263039434c565e686d7a828d93999fa2a19e9791857b6e61594f44382c1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c55606d7984919ea7b1bcc8d4cdc3b9ada1968c7f72685e52463c31261a0b0200000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3e1d7cec5bebab8b8b8b8b8b8b8b8b8babfbec3c4c8cdd5dae0d9d2ccc2b9b0a69d92897d70665c5145382e23170b000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000000010c161f2a343d474f59616a6f7a828b92979fa2aaacb2b8b9bec2c4c6c9cfd1d2d4d9e0e7f0f8eee6ded8d3d0cfcec9c5c4c1bdb9b7b1aca9a19e95908880786d685e574d443a30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a76828f97a1a8abacaba49d928a7d7063564c41362a1d1105000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18232e39424d57616c74808d95a0acb6c0ccd8dfd3c7bbb0a69f92867c6f675d51453e332a1f150b01000000000000000000000000000000000000000000000000000000000000000000000000000a141e27313a444c565e686d7880878e929896918d857c6f695e53473d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a45515c67717e8b95a0acb8c1cfd5c9bdb2a89f92857a6d61574d42372b1d140a00000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e6dbd0c5bcb3aeababababababababacaeb4b2b6b8bcc2c9cfd6dfddd7cbc2b8aea49e9184796d60544a3f34281c10030000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000000008131e28313c464f59616b707c858f949ea1a9aeb4b9bdc4c6c9cfd1d2d5dadcdddfe4e9f0f8fff6eee7e2dddbdad9d5d2d1cec9c5c3bcb8b2ada7a09a938d827a6e695e564c43392e23180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58616e7b8591969c9e9f9e9b928d81746b6155443a3025190d01000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17202834404a545e69717e8a929da7b1bec7d2dde3d8ccc2baaea3989184796d605a50453c31271d120700000000000000000000000000000000000000000000000000000000000000000000000000020c151f28323a444c565d666d747c8185878784807a6f6a5f574d42352b21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2934404b55606c7883909da6b0bdc7d1cfc4baaea2988d8074695f53473d2f261b1106000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e2d6cabeb3aaa29f9e9e9e9e9e9e9e9fa2aaa5a9abb1b9bec5cdd5deddd4cac0b9aca1968b7f72665c5044382b1f12060000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000000010d19242f3a434e58606b707d8691979ea6adb3babfc5c9ced2d5d5d2d1cdcacfd0d3d8dee6eef6ede4dcd6d1cecdcbced2d3d6d5d2cdc8c4bdb9b1aca49f9490847b6e685e554b4034281e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d46535f696f7c848c909292918e8980786d60594f4432291e130800000b1825323e4b5865717e8b98a4b1becbd7cec1b4a89b8e8175685b4e4231251e2a36414c566b7884919eabb7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323b44515c666e7b85929fa4aeb9c3d0d9e4e9ded7cbbfb4aaa0968e81756c62574e43392f23180f0500000000000000000000000000000000000000000000000000000000000000000000000000030d162028323a444c545c606a6f75797a7a78736d685f584e453b3123190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232f3944505b65707d89949eabb5c0cbd6cabeb3aa9f92877b6e62594f41382d22170b000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6dfd3c6baaea2989292929292929292929895989d9fa7adb3bbc3ccd5dfdcd5c9bdb2a89e9184786d6053463a2e23170c0000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000004111d2935414c555f6a707d869298a1a9b0b9bec5cad0d5d7d3cec9c5c4c0bdc3c4c7cdd4dce6eee4dbd2cbc5c2c0bec1c5c6cad0d5d9d4cfc9c3beb6afa69f9691847a6d675c51453e30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a36424d575f6a6f797f83858684817c746d665c50473e3320170c0200000b1825323e4b5865717e8b98a4b1becbd7cfc2b5a89c8f827569574d42362a232d3946525e687985929facb8c5d2d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b444f59606d78839097a2adb6c0cbd5e2ebf3e7dcd1c6bcb2a89e938b7e716a5f554b40342921170c0300000000000000000000000000000000000000000000000000000000000000000000000000040d162028323a424a51585f62666c6e6d6867605d564e463c33291f110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27333f4953606b75828f99a3afbbc5d0d0c5bbafa3998f82756b6053493f33271b0f030000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6ded2c5b8ab9f9285858585858585858586888b90959ea1a9b1bac3cdd7e1dacec4b9ada1968a7d7064544a3f34281c100300121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000000040f19222c3945515d676f7c869298a2aab3bbc1c9cfd6dad5ccc7c4bdb9b7b3b0b6b7bbc2cad4dee7dcd2c8c0bab5b4b1b5b8babfc6c9ced7dad5d0c7c0bbb0a8a0969083796d60594f43392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a26313b454e585f676d7276787978756f6b605c544a3f352c210e050000000b1825323e4b5865717e8b98a4b1becbd7d1c4b7aa9e918477695e53463b322f333b4754616e7a8798a2aebac6d3d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e17222d38424d56616b73808d959fa9b3bec8d2dde7ecebece2d8cfc3baafa59f92867c6e675c51453e33291e150b0000000000000000000000000000000000000000000000000000000000000000000000000000050e162028303940444e54545b6061605d5654524c443c342a21170d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d38414f59626e7c87929faab4bfcad6cbc0b5ab9e93897d70655b5044372b1f12050000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7878787878787879797b7f838a9297a0a8b1bbc5cfdbe0d5c9bdb2a89b8e8175665c5044382c1f120600121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000a16202c38434e58606d7a849198a2aab4bcc4cdd5dad6cec9c1bbb7b2acaaa7a4a9abb0b8c2cdd8e2d6cbc0b6aea9a7a5a8acaeb4b9bdc4ccd2d9d9d2ccc2bab2a89f958d80746b61554b4034281c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333c464e555d6065696b6c6b68636059504a42382e231a10000000000b1825323e4b5865717e8b98a4b1becbd7d2c5b9aca096877b6e61574d443d3c3d454f5964717d8a97aab4bfcad6d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d4c7baaea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c162028333f4a545e68707d88939fa7b1bbc5d0dae7e2dfdfdfe2e1d5ccc1baaea2989083796d605a50453b30271c12070000000000000000000000000000000000000000000000000000000000000000000000000000050e161e272e343c43474a50535454524c4745413a322a22180f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3d47535f6a74818e98a2aebac4cfd1c7bdb0a69d9083786c605346392d2013060000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d706b6b6b6b6b6b666d6e72767d859195a0a9b3becad6e0dacfc4b8ab9f9285796d6053463a2d20130700121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000030f1b27323b4854606a74818e96a0aab4bcc6ced6ddd4ccc4bdb9b0aaa8a09e9a979c9fa6b0bbc7d3ddd1c5baaea49d9a989b9fa2aaacb2bbc0c7d0d8ddd8ccc3bab1a79d928a7d70675c5145382e23170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18212a343c434b5153595d5f5f5e5b56544f443f3830261c1108000000000b1825323e4b5865717e8b98a4b1becbd7d5c9bdb2a8998d8073695f564e4a494a4f57606b76828f9ca9b5c2d0dbd4c7bbaea194887b6e6155483b2e2215080000000000000000000000000000000000000d192633404c5966737f8c99a6b2bfccd9d7cbc0b5ab94877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a44505b666e7a85929aa4afb9c2cdd7e1dbd6d3d2d3d6dbded6cabfb4aaa0958d80746c61574d42392e23180e050000000000000000000000000000000000000000000000000000000000000000000000000000040c151c23283237383f4446474745413a3935302820181006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2b37434e58616e7a86929fa9b2bdc9d5cfc1b8aba095897d706356493d3023160a0000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70635f5f5f5f545c6062656b707b839197a2adb9c4cedadfd3c6baada297887c6f6255493c2f22160900121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000006131f2b37434e58626f7c87939fa8b2bcc6cfd8ded4cbc2bab2aca69e9c96918d8a90949fabb7c4d0dbcec2b5a99d928d8b8e92989ea1a8afb5bdc6ced8ded5ccc3b9aea49e9184796d60544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a31394045474c505253514e4948443d342e261e140a00000000000b1825323e4b5865717e8b98a4b1becbd7d9cec4b8ab9f92867b6e686058575657596069707d89949fabb7c3d0e0d4c8bbafa49a877a6e6154473b2e2114080000000000000000000000000000000000000c1926323f4c5965727f8c98a5b2bfced9d4c7bbafa399877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101925303a444f59606c78828f97a1acb6c0cbd4dfd7d0cac6c5c6cad0d7dbd0c6bcb1a79d928a7e71695e544a40342820170b020000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b2d3338393b3a39352f2c29241e160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1a26313c46525e68737f8c96a1adb9c3d0d4c8bcb1a79a8d8074675a4d4134271a0e0000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063575252524b5153555961696e7b85929ea8b2bdc9d5e1d6cabeb3a9988b7e7265584b3f3225180c00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000000815222e3b4754606a76828f9aa4afbac3ced8e1d5ccc2b9b1a8a19e948f8984807d82909ca9b6c3cfdacdc0b4a79a8d807e82858b91969fa4abb4bcc6d0d9ded4cbc0b9aca0968b7f72665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000610181f282f35393a3f43454645423c3b383228231c140c0200000000000b1825323e4b5865717e8b98a4b1becbd7dfd3c6baaea29890837a6f6a65636263656b707b84919ea6b0bbc7d3dfd2c6b9ac9f93867a6d6053473a2d2014070000000000000000000000000000000000000b1825313e4b5864717e8b97a8b2bdc8cfcdc5b9ac9f9286796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d19222935414c56606b737f8c949fa9b3bec7d2dcd4cec5bfbab8babfc5ced7d7cec3b9aea49f92857b6e665c51443d32291d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000070c151b1c22282b2d2e2d2c2924201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a36414c56606d7984919ea7b1bec7d2cdc2b5a89c8f8275695c4f4236291c0f0000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a4545404546484f575f69727e8b96a1acb9c5d2dedbd0c0b3a79a8d8074675a4d4134271a0e00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000004101c2834404b54626f7c89949facb6c0ccd5e0d9cfc3bab1a79f969189827d787475828f9ca8b5c2cfd9ccbfb2a6998c7f73757a7f848d9399a3aab4bec7d2ddddd5c9bdb2a89e9184796d6053463a2e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161d24292c2d323638393835302f2c272117110a020000000000000b1825323e4b5865717e8b98a4b1becbd7e2d6cabeb4aaa09590837c7672706f7072767d849196a1adb8c2ccd8ded1c4b8ab9e918578675c5145382c1f13060000000000000000000000000000000000000915222f3c4855626f7b8896a0acb8bdc0c0bbb2a89d908377665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2b343c46525e686f7d87929fa6b0bbc5d0d9d4cac2bcb4aeacaeb4bcc5cfd9d5cbc0baada2979083786d60594f443b2f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f11171c1f202121201d1913110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1925303b45515d67717e8b95a0acb6c0cacac2b5a99c8f8276695c4f4336291c100000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d2e34383a3e454d57606d7884919eabb7c4d1dedbcec2b5a89b8f8275685c4f4235291c0f00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000006131f2c3845515c6674818e9ba6b0bec7d2dedcd1c7bdb2a89f9590847d75706c6575828f9ca8b5c2cfd9ccbfb2a6998c7f73676d727980879298a3acb6c0ccd8e1d9cec4b9aca1968a7d7064544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181d2020262a2c2c2b2823221f1b160b0600000000000000000b1825323e4b5865717e8b98a4b1becbd7e7dbd0c5bcb1a7a0959187827f7d7c7d7f83899196a1a8b2bdcad4dedccfc2b5a99c8f827669554b4034291c10040000000000000000000000000000000000000613202d394653606c7884919da4adb2b3b3b0a9a1968c7f7266544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313c46515b616d7a849199a3afb8c2cdd6d7cdc2b8b0aaa29fa2aab4bdc7d1dcd6cabeb3a99f958d80736b61564d42382d22170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213141413110d080401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2935404b55606c7883909aa4afbabebfbab1a79a8e8174675b4e4134281b0e0000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30282c2d333b44505c6674808d9aa7b3c0cddadcd0c3b6a99d9083766a5d5043372a1d1000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000713202d3a4653606d7985929fabb8c2d0d9e4d7cbc0b5aba09690837a706b63606975828f9ca8b5c2cfd9ccbfb2a6998c7f736660676d737e86929aa4afbbc5cfdae0d5c9bdb2a89b8e8275665c5044382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d101314191d1f201e1b1615130f0a040000000000000000000b1825323e4b5865717e8b98a4b1becbd7e4e2d7cec3b9b1a7a09a938f8b8a898a8c90949ea1a8b2bac4cfdce0d4c8bcb1a7998c7f7366594c402f23180c0000000000000000000000000000000000000005121f2b3744505b65717e8a929ea1a8a7a6a69f979184796d6054473a2d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19242f3a434e58626d75828f96a1abb5c0cad4dbcfc5bbb0a69f989298a2abb5c0cbd7dbd0c5bcb1a79f93887d70685e544a3f332820160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060608070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18242f3944505b666f7d88939fa5adb3b4aea89f958a7d7064574a3d3124170a0000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30241f2028343f4a5464717e8b97a4b1becad7ddd0c3b7aa9d9084776a5d5144372a1e1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000a1623303d495663707d8997a2adbac6d4e2e0d3c7bbafa39991847a6d6860595c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366555d606c707d88939fa9b3bec9d5e1dacec4b8ac9f9285796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c101213120f0909070300000000000000000000000b1825323e4b5865717e8b98a4b1becbd7e4e9e0d5cbc3b9b1aca49f9c98969596989c9fa6adb2bac4ccd6e1d7cec6b8aca095887c6f6255483c2f22150700000000000000000000000000000000000000030f1b27333f4953616c73808a9196999a9998948f857c6f675d5145392c1c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212935414c55606a727f8b949ea8b2bdc7d1dcd6cabeb3a99f948f859299a3afbbc3ced8d7cec2bbafa49a92857a6e665b50443d32281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28333f4a54606b74808d939fa2a9aaa29f969083776c605346392d2013060000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d30241717232e3d4a5663707d8996a3b0bcc9d6ddd1c4b7aa9e9184776b5e5144382b1e1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000d192633404c5966737f8c99a9b3becad6e6dfd2c5b9ac9f92877c6f685e564f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f736659515a616b73808d97a1adb9c6d2dfdfd3c6baaea298897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7e4e6ded8d3cbc3beb6afaca9a5a3a2a3a5a9abb0b9bdc4ccd6ded8cfc6bcb1a79d9083776a5f53473b2e21150800000000000000000000000000000000000000000b17222d3841505a636e737e84898c8d8d8b88827b6f6a60554b4135291d0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a333c45515d676f7c86929fa6b0bac4cfd9d6cdc4baada2978f827c87929fa7b1bcc6d0dbd8ccc0b6aca1978f82786c60594f443a3025190f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d38424f59606d78818c9297989798928d847a6e655b5044372b1f12050000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3024171a24313d4a5764707d8a97a3b0bdcad6ddd0c4b7aa9d9184776a5e5144372b1e1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800030f1b27333f49536975828f9ca8b5c2d0dbe2d5c9beb3a99b8e81746a5f564c4f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c5059606d7985929eabb8c5d0dbe2d6cabfb4aa988b7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000040607070808080807060503000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7e6ddd4cdc7c4c3c3c0bbb9b5b2b0afb0b2b6b7bbc2c9cfd6dbd6cfc6bdb4aa9f958a7e7164584e43372b1f1206000000000000000000000000000000000000000006111b262f3e48525c636c71797d7f80807e7b766e6960584e433a2f24180d000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303c45505a606d7a849199a3aeb8c1ccd6dacfc4bbafa59f92857b73808c959faab4bfcad6ddd2c7beb3a99f948c7f736b60564c41352921180c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3d44505c666d787f85898b8b898680796e685e53493f33271b0f030000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d302424252a34404b5465717e8b98a4b1becbd7ddd0c3b6aa9d9083776a5d5044372a1d1100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080005121f2b3744505b657784919eaab7c4d1dddfd2c6b9ada197887c6f62584e434f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c45515d67737f8c99aab4bfcad6e2dbd0c0b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000010407070a070c10131414151515151413120f0b0608070502000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7ded4cbc2bcb7b6b6b7bcc2c2bebdbcbdbfc3c4c7cdd5d8d4d0cac3bdb4aba2989083786c6053463c32261b0f030000000000000000000000000000000000000000000a141d2c36404a525a61666d70737473726e6a615f574e463c31281d130700000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232e39424d57626c75818e96a0abb4bfcad3ded5c9bdb2a99e938a7e716d78839098a2aebac2cdd7d9d0c5bbb0a69f92877d6f685e52463f332a1e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28343f4a545c666d72797c7e7e7c79736d675e564c41382d22170b000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d31313130363d45515c6674818e9ba7b4c1cedadccfc2b6a99c8f8376695c504336291d1000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000613202d394653606c7886929facb9c5d2dfded1c5b8ab9e9285796c605346424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c404b55626f7c8898a2aebac7d3e0dbcfc2b5a89c8f8275695c4f4236291c0f00000000000000000000000000000000000306080d111314171a181d1f20212122222121201f1b17181514120e090602000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7d8cdc2b8b0aba9a9abb0b8bcc3c6cad0cbcfd0cfced2ccc8c5bebab1aba39992867c6f665b5044382a20150a00000000000000000000000000000000000000000000020b1a242e38404850545c606366676665625f57534d453c342b1f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2834404a545f69717e8b939ea8b2bdc6d1dcd5ccc3b9ada1968e81756c666e7c86929fa6b0bbc5cfdbd6cdc2bbafa39991847a6d615b51463c30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17232e38424a545c60676d707171706d67605d554c443b2f261b1106000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a3d3d3d3e3f42464f58606d7985919eabb8c4d1dedacdc1b4a79a8e8174675b4e4134281b0e00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000714212d3a4754606d7a8799a3aebac7d3e0dccfc2b5a99c8f8276655b5044424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c404653606c7985929facb8c5d2dfdcd0c3b6a99d9083766a5d5043372a1d10000000000000000000000000000001040a0f1215191d2021232624292c2d2e2e2f2f2e2e2d2b27222521211e1a14120e090300000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7d3c7bcb0a69f9c9c9fa6acb1b8babec0c1c2c3c2c1c1c0bbb9b3ada7a09992877e706a5f544a3f3328180e04000000000000000000000000000000000000000000000008121c262e363e424b515356595a5a5855534e46423b332b22190d040000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303944515c666e7b86929fa5afbac4cfd8d9cfc3baaea49e91847a6d615f6a727f8b949fa9b3becad6ded7cbc0b5aba1968f82756d62584e42382e23170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263038424a50555d6063656463605d55514b433b32291d140a00000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d7063574a4a4a4a4a4b4d5259606a727f8b97a1adb9c6d2dfd7cbc0b5ab998c7f7266594c3f3326190c00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000814212e3b4754616e7a8794abb4bfcbd7e3dacec1b4a79b8e81746853493f424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c4044505b657884919eabb7c4d1deddd0c3b7aa9d9084776a5d5144372a1e1100000000000000000000000001070d10151a1f2124292c2d30332f35383a3a3b3b3b3b3a3937332d312e2d2a25211e1a15100b040000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7d0c4b7ab9f949090949da0a7abaeb4b4b5b5b6b6b5b4b6afaca9a29f9590877e716c61584e42382d221706000000000000000000000000000000000000000000000000000a141c242c30394045464a4c4d4d4b4847423c36312a2119100700000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424e58606d78839098a2aeb7c1ccd5dcd1c7bdb2a89d92897d70685d57606c77828f97a2adb9c1ccd6dcd1c7bdb2a89e938b7f726a5f544a3f34281f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2630383f444b51535658585653514b45403a312920170b0200000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d706357575757575758575e616b6f7c86929fa9b3bec9d5e0d3c7bbafa399897d706356493d3023160a00121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000815212e3b4854616e7b8794a1aebacfdae6dacdc0b4a79a8d8174675a4e41424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c40404b556a7784909daab7c3d0ddddd0c4b7aa9d9184776a5e5144372b1e110000000000000000000000060b12181d20262b2e2f35393a3d404240454747484848484746443f413e3b3a36312e2b261f1b160e0903000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cfc3b6a99c9082838a90959b9fa2aaa7a8a9a9a9a8a7aca49f9d97928d837c716c615a50463c2f261c110600000000000000000000000000000000000000000000000000020a121b1e272e34383a3d4041403f3b3a37312a261f180f07000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54606a73808d959faab4bfc9d3ded7cbc0b5aba0968d80746b6056505b656e7b85929ea5afbac4d0d9d9cfc4bab0a69f92867c6e665c50443b30251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e262e3439404547494b4b4947454039352f281f170e050000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70646464646464646566696e747d859198a2aebbc4cfdadfd2c5b9ac9f92867a6d6053473a2d20140700121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000714212e3a4754616d7a8794a9b3bec9d5e2dbcec1b4a89b8e817568554b40424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c4045515c677885919eabb8c4d1deddd0c3b6aa9d9083776a5d5044372a1d11000000000000000000020a11171d24292c31373a3c4145474a4d4f4b51535454555554545350494d4b4846423b3a37312c27211a140d060000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e81767d83898e9298989a9b9c9d9c9b9a999a93908b8580796f6a615a50483e342a1d140a00000000000000000000000000000000000000000000000000000000090c151d23282c2d30333433322f2e2b26201a140e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666f7c87929fa7b1bcc6d0dbd8cec6bbafa3999184796d60594f49535e69717e8a939ea8b2bec7d2ddd6ccc1baaea2989083786d60574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282f35383a3d3e3e3d3a38352f29241d160d05000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d6c9bdb0a3968a7d70707070707070717273767b80879197a1aab4becdd6e1d6cabeb3a99c8f8276675d5145392c20130600121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000713202d3a4653606d798697a1adb9c6d2dfdccfc3b6a99c908376675d5145424f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c404653606d7986929facb9c5d2dfdccfc3b6a99c908376695d5043362a1d100000000000000000050b141c22282f35393c4347484c525456595b555d60616162626161605b535a5854534d4847423c38322a261f170f0600000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e817470777d8185898b8d8e8f908f8e8e8c8a86837f7a736d675f5850483e362c22180b020000000000000000000000000000000000000000000000000000000000030b12181c1f20232627272522211e1a150e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54606d79839199a3afb9c3ced7dbd0c6bcb1a79f92877c6f675d5147414d56616c75818e96a1acb6c0ccd8ded6cabfb4aa9f958c7f72695e52463a2d20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d24292c2d303231302d2c29241d18130c0400000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6d9ccbfb3a6998c807d7d7d7d7d7d7d7d7e8083868d9299a1a9b3bcc5d0dfdbd3c6baada2978b7e7165554b4035291d100400121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080006131f2c3845515c677885929eabb8c5d1dedfd2c5b9ac9f92867a6d6053493f4f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c424d5663707d8999a3aebbc7d3e0dbcec1b4a89b8e8175685b4e4235281b0f00000000000000060f171d262d33394045474e5355565d606366686a676d6d6e6e6e6e6d6c65696764615e5755534d48443d3631292117110a030000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174686b7075797c7e81828283838281807d7a77726d67605c554e463e362c241a10060000000000000000000000000000000000000000000000000000000000000000070c10131317191a1a181514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c66727f8c95a0abb5c0cbd4dfd6cabfb4aa9f958c80736a60554b403b44505a606d7a84919aa4afbbc3cfd8dbd0c6bcb1a79f92867b6e6154483b30251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12181d1f2023252523201f1d18120d07010000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6dacdc1b4a89c928c8a8a8a8a8a8a8a8a8b8d9092999fa3abb3bbc4ced7ddd5c9beb3a99f92857a6d6054473a2f24180d0100121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080004101c2834404b556a7683909da9b6c3d2dde0d3c7baaea3998a7e71655b50444f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c46525e6974818d9aabb5bfcbd7e3d9ccbfb3a6998c807366594d4033261a0d000000000000060f1821292f383f444b5153585f6266686d70737577787a7a7b7b7b7b7a79787674716e6966625f57544f46423b3328231c150c0300000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174686063676d6f717475767676757473706d6865605d55514b433c342c241a120800000000000000000000000000000000000000000000000000000000000000000000000406070a0d0e0d0c08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929ea7b1bdc7d1ddd7cdc5baaea2989083786d60584e4339323e45525d68707d88939fa7b1bdc6d1dcd8cec3baaea2988d807367574d42362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101314161818161413100c070100000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6ddd0c4b9aea49c99979797979797979798999c9fa3abafb5bdc4cdd6ddd4cbc2b9ada1978c8073675d5145392c1d12070000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000c18232e414e5b6774818e9aacb6c0ccd8e3d7cbbfb4ab9d9083786c6059504f5c6975828f9ca8b5c2cfd9ccbfb2a6998c7f7366594c525b616e7b86929facb8c5d1dce1d4c8bdb2a8978a7d7164574a3e3124170b0000000000040d18212a333b424a50555d60656a6f73777a7d8082838586878788888787868483807e7b77736e69636059534d453f342e261e150c03000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b555c6062656768696a6968676663605d5653514b454039312a221a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a1adb9c3cfd9dbd0c5bbb0a69f92867c6e665c50463d312935414c56606b74808d95a0abb5bfcbd7dfd6cabfb4aa9e918578695e52463a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0b0b0a07060400000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e1d5cabfb6aea8a6a3a3a3a3a3a3a3a4a5a6a9acafb5bbc0c7cfd6dcd7cbc2b8afa59e91857a6d60554c4135291d0c010000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000071825313e4b5864717e8b9aa4afbbc8d4e0dcd1c6b8aca0958c7f726b615a525c6975828f9ca8b5c2cfd9ccbfb2a6998c7f736659535c636d75818f98a3aebac7d3e3ded1c5b8aca096877b6e6154473b2e21140800000000010c161f2a333c454d545b60676d72777b7f8386898c8e90929794949595949992918f8d8b8784807b76706b615f5750443f3830271e150b000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4b515356585a5b5c5d5c5b5b595754524c4745403a342f271f18100800000000000000000000000000000000000000020507080b0c0d0c0907060300000000000000000000000000000000000000000000000000000000000000020507080b0d0d0c090706040000000000000000000000000000000000000000000d1a2633404d596673808c99a9b3beccd5ddd6cabeb3a99f948b7f726a5f544a3f342b242f3a444f59606d79839199a3aebbc2cdd6dbd0c6b9ada197877b6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcc9d6e3dcd1c8bfb9b4b3b0b0b0b0b0b0b0b0b1b3b6b9bbc0c7cbd1d9d9d1cbc1b9b0a69d938a7e71685d52433a2f24190d000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000815212e3b4854616e7b87939facb9c4cfdae2d4c8bcb1a79f92877d716c615e566975828f9ca8b5c2cfd9ccbfb2a6998c7f7366575f626e737f8c939eaab4bfcbd6e3d8ccc0b6ac9d918477695e52463a2d2014070000000008131e28313c454e575e666c72797e83888c90939a999b9d9fa2a9a1a1a1aba39f9e9c9a9796918c88827d756e69625a504a423930271c12070000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4546494b4e4f4f50504f4e4d4a4745413a39352f29231d150d0600000000000000000000000000000000000003090e12141518191a19161312100b0600000000000000000000000000000000000000000000000000000003090e12141518191a19161312100c07000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cfd5d4cbc3baada2978f82776c60574e42382e221e28323d45515c676f7c87929fa6b0bbc5cfd6d4c9beb2a995887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0bcd1dce7e3dad1cac4c1bfbdbdbdbdbdbdbdbdbec0c3c5c7cbd1d7d9d4cfc7c0bbb0a79f948e81746c61564c4131281e1308000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000714202d3a46525e697683909ca9b3bec9d5e1d9cec3bbafa39992867e746d68626975828f9ca8b5c2cfd9ccbfb2a6998c7f736662696e76808c919ca5afbcc6d0dcdfd4c8bbafa49a8c807366574d42362a1e1105000000010d19242f3a434e575f696e787e858b9095999d9fa4aca8aaabadb3aeaeaeb5aeacaba9a7a8a09d99948f89827b716c605c544a42392e2318100700000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e413a3c3e41424343434241403d3a39352f2c29241d18120b03000000000000000000000000000000000003090e141a1e21212426262523201f1c17110a02000000000000000000000000000000000000000000000002090e141a1e21212526262523201f1c18120b0300000000000000000000000000000000000d1a2633404d596673808c99a8b2bdc5c9c8c2b9afa59f92857b6e655b50453c30261c16202934404b555f6a727f8c949fa9b3bcc5cac7c2b9ada197877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996abb4bfcbd7dcdcdcdcd5d0cdcccacacacacacacacacbcccfd2d3d7d5d2cec8c3bdb5afa69e959082796d605a50443a2f1f160c01000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000005121e2a36424d5765717e8b97a1adb9c3cfd9dfd7cbc0b5aba3989288817a736e6975828f9ca8b5c2cfd9ccbfb2a6998c7f736a6f747b828d929ca3adb7c1ced8e1d8ccc0b6ac9f93877b6e6255483b30251a0e0200000004111d2935414c555f6a6e7b828b92979da0a7aaacafb6b5b6b8babebabbbbbfbbb9b7b6b3b2acaaa69f9c948f867e746d665c544a40342822190b02000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e41352f323435363736353433302d2c2924201d18130c07010000000000000000000000000000000000060e151a1f252a2d2e31333332302d2b28231c140c08000000000000000000000000000000000000000000050d14191f252a2d2e31333332302d2c28231c150c09000000000000000000000000000000000a1724313d4a5764707d8a96a1abb3b9bebdb9b0a79e938a7e71695e53493f332a1e150d18232f39434e58606d78829097a1aab3babebbb9b1a89e9285786d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a3aebac7cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcecdcfc9c5c3bcb8b1aba39f948f82796d675c51483e32281e0d0400000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e2114080000020e1a25303b4753606d7985919ea7b1bdc7d1dcdcd1c7bdb4aaa39a938e85807b7775828f9ca8b5c2cfd9ccbfb2a6998c7f74787c81868f949ca4adb5bfc9d3e0d9cfc7bbafa49a8f8275695f53473a2e1f1409000000000613202c3945515d676e7c8490949ea1a9acb1b7b9bbc0c1c3c5c6cacfc8d1cbc7c5c4c2c0bdb8b7b0aba69e98928b81786d665c51443f342b1d140a000000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e413528252728292a292828262421201d1913110d0701000000000000000000000000000000000000070f181f262b31363a3b3e3f403f3c3a38342e261e1a110900000000000000000000000000000000000000050e171f252a31363a3b3e40403f3c3a38342e271e1b120b0200000000000000000000000000000713202d3a4653606d79849199a2a9adb3b2aca69f958e81756c61574d41382d21180c07121d27313c44505c666e7b859298a2a9aeb4afaca79f968d8073665c5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929fabb5bdc2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c1c1bfbdb9b7b1aca7a099928c82796d675d554b40362c20160c0000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000009141f2c3845515c67727f8c95a0abb5c0cbd7dbd9cfc6bcb4aca49f97928d88848083909daab7c3d0dbcfc2b5a89c8f828184898e92989fa6aeb6bfc7d1dbdcd1c7bdb2a99f93877c6f62574d42372b1e0d02000000030f1c28333f4a54606d7a8491969fa6adb3b8bcc3c6c8ccd2d0d1cecccbcacbcccdd0d1cfcec8c5c2bbb7b0aaa29f938e81786d605b51463d2f261c11060000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b1b1c1c1d1d1c1b1a171413110d08040100000000000000000000000000000000000000071019212a31373b4246484b4c4d4c4946443f38302c231b12090000000000000000000000000000000000050f17202930363b4246484b4c4d4c4946444039302d241d140b000000000000000000000000000006131f2c3845515c67707d8792979ea1a9a8a09e948f83796d605a50453b2f261b0f06010b151f28343f4a545e696f7d8692979fa2aaa49f9d959084796d60544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d6775828f99a4adb2b5b5b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b5b5b5b4b2b2adaba7a09d95908780786d675d554c43392e241a0d040000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e21140800000004101c2934404b55606d78839099a3afbbc1c9d7dcd8cfc6beb6afa9a29f9a95908d9095a0acb8c5d1dcd0c3b7aa9e948f8e91969b9fa3aab0b8c0c8d1d9d9d2cbc0b5aba1968e81746a6054453c31261a0e0000000006121f2b3844505b6673808d96a0a9b0b9bec5c8ced2d1cfc9c5c4c1bfbebebebfc0c3c6c8ccd2d1ccc7c1bcb4aea59d938e81756d63584e42382d22170b0000000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e0f1010100f0e0d0a07070401000000000000000000000000000000000000000000040d19222b333c42474d5354575959585653504a423e352d241b0f06000000000000000000000000000000030d172129323b42464d5354585959585653514a423f372f261d12090000000000000000000000000004101c2834404b55606b707e858d9197959696918b827a6d675d51483e33291d140a0000030d17232e38424d57606b707d858d9298969993908b837a6e675d5142382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7c87939ea1a8a8a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8a8a7a5a8a19e9a95908b837c736c665d554c433a30271d1208000000000000121f2c3845525f6b7885929eabb8c5d1d4c7baada194877a6e6154473b2e211408000000000c18232f3944515c666f7c87929fa5afb7c0cbd1d8d8d0c7c0bbb3adaba7a09d9a9da0a7b1bcc8d4dfd3c7bbb0a69e9c9b9ea1a8acaeb4bcc2cad1dad7d0c7c0bbafa39991847a6d61584e43332a1f1509000000000613202d394653606c7985929ea8b2bbc2c9cfd3cdc8c4c3bdb9b8b5b3b2b1b2b2b4b7b9bbc0c7c9cfd3cec6bfbaafa59e938c7f726a60544a3f33281b110600000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e0203040302010000000000000000000000000000000000000000000000000000010c161f2b343d454d53575e616466666563605c544f473e362d21180e03000000000000000000000000000009141f29333b444d52575e616466666563605c54514941382f241a1006000000000000000000000000000c18232e39434f59616c707b808587898987847e786d685d554b40362c21170b0200000006111c26303b454f59616b707b818588898886837e786e685e554b4130261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f394754606a727f8a91969a9b9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b9a999796918d89837e786f6a605b544b433a31281e150b00000000000000121f2c3845525f6b7885929eabb8c5d1d4c8bdb2a894877a6d6154473a2e2114070000000007121d2834404a54606b727f8c939ea5afbbbfc6cfd6d9d2ccc5bebab8b1acaaa7aaacb1b9c3ced9e3d7ccc1b8b0aaa8a7abacb2b9babfc6cfd4dad5cdc5bdb5afa39f92877d6f685e52463c3221180e03000000000815222e3b4855616e7b8897a1adbac3cdd1cbc7c3bcb8b6b2adaba8a6a5a4a5a6a7aaacafb6b9bec5cdd3d0cac0b7afa59f93877c6f665b5044382d22170b00000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000007131d28313d464f575f62696e717273726f6d66615950483e332a1f140900000000000000000000000000020e1a25313b454d565e61696e717373726f6d66625b534a41362c22170c0000000000000000000000000007121d27303d47505a61696e73787b7c7c7b77726c665d564c43392f241a0f0500000000000a141e29333d474f5961696e74797b7c7c7a76716d665e564d433a2f1e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e58626d727d848a8d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8e8c8a8784817c77716c666058504a423a31281f160c0300000000000000111e2b3844515e6b7784919eaab7c4d0d1c5b9aca09686786d6053463a2d20130700000000010c18232e39424f59636d74818e939da5aeb5bdc3cad0d6d8d0cac6c3bcb8b7b3b7b8bcc3cbd5dfe9ded3cac1bbb7b5b4b7b9bdc4c7cbd1d8d5cfc9c2bbb3aba49f918b7f726b60564c41342b200f0600000000000916222f3c4955626f7c8895a7b1bec7cac6bfbbb9b1abaaa8a19e9b99989798999a9d9fa4acadb3bbc1c9d2d6c9c1bbafa4999083786c6053493f33271b0f03000000000000000000000000000b1825323e4b5865717e8b98a4b1becbd7cec1b4a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000010d18242f3a434f5960696e767b7e7f807f7c78706b615a50453c31261a0e0300000000000000000000000005121e2a36424d575e696e757b7e7f807f7c79726d645c53483e34281d1101000000000000000000000000000b151e2c353e4750565e6167696e6f6f6e6965605b544c443a31281d1209000000000000020c17212b353d474f575e61666d6f6f6f6d6865605c544d443b31281d0c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b27323d46515b626c70797d81828283838383838383838383838383838383828282817f7d7b78746f6b64605b544e443f382f281f160d0400000000000000000f1c2936424f5c6975828f9ca9b3bec5c5bfb4aa9e918477665c5144382c1f1206000000000007121c27303d46515b606d78818e939fa3abb2babec5cad0d3d6d3cec8c5c3c0c3c5c8ced5dde7efe5dcd3ccc7c3c2c1c4c5c9ced3d7d3cec9c4bdb9b0a9a299938b7f736d62594f443a3022190f0000000000000714212e3a4754616d7a87959facb6bfbebab5aeaca79f9d9896918e8c8b8b8b8c8d90939a9ea1a9afb7c0c9d2d7ccc0b5ab9f958b7e71655b5044372b1f1207000000000000000000000000000b1825323e4b5865717e8b98a4b1becfdacec1b4a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000004111d2935404b55606b6f7b82878a8c8c8b89847d716c61574d42372b1f14090000000000000000000000030d17212d3a46535e696e7b82878b8c8c8b89847e746f645a5045392d1d120700000000000000000000000000030c1a232c353e444d5254575e616263615e5753504a423a32281f160c0000000000000000050f19232c353d454d52545c60626362605d5653504a423b32291f160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b343f49515a61666d71747576767676767676767676767676767676767675757472716e696763605953504a423d332d261d160d040000000000000000000c1925323f4c5865727f8b97a1acb4b8b8b4aea2988d807367544a4034281c10040000000000000b151e2b343f44505c666d78818c9299a0a8aeb4babec5c7cdd2d3d4d1d0cdd0d1d4d9dfe7eff7eee5ded7d3d0cfced1d2d5d2d1cbc7c4bdb9b2ada69f9792877f736d635b51473d32281e10070000000000000713202d3946525e687683909aa4aeb4b3adaba39f9b95908c888482807f7e7f7f8184878c92979ea5afb7c0ccd5d2c7bdb1a79d9184786c605346392e23180c000000000000000000000000000b1724313e4a5764717d8a97a8b2bdc9d2cbc0b5ab9a8d8073675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000613202c3945515d676f7d868f939a9999989691877e71695f53463b31251a0e020000000000000000000009141f2d3944505a616e7b848f939799999897918b81746c615549392f23180c000000000000000000000000000008111a232c323b4246474d5354565654534d46443f382f2820160d0400000000000000000007111a232c333b42464a505355565554524c46443f38302920170d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222d373f4750545c606467686969696969696969696969696969696969696968676664615e5756544f46443f382f28221c140b04000000000000000000000714202d3a4753606d7985929aa2aaabacaaa39f92867b6e6154483b2e23180c00000000000000030c192228343f4a545c666d747f8791969fa2aaadb3b7bcc2c5c7cad0cfd1d2d6dae1e9f1f7fef5f0e8e0dad5d2d1cfcfcac6c5c0bbb9b2aca8a19e948f857e726d635b51493f352b20160c0000000000000005111d2a36414c5663707d88939fa2aaa9a29f99928e88837f7b7875737271727374777a7f858e939da5afbac3ced9d0c3b8aca0958a7d7063554b4034281c10040000000000000000000000000915222f3c4855626f7b8896a1adb9c1c5c3bbafa3998b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d798491989fa4aca6a8a09992867b6e61574d42362a1e1205010101010101010101020e1a25313c4955616c768390969ea5a6a6a9a19e938a7e7164554b4034291c1004000000000000000000000000000008111a202930363a3b42464849494846423b38332d261d160e04000000000000000000000008111a20293036383f44464849494745413a38342e261e170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b252d353e424b5153575a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5b595754534d4948443d38332d261d17110a0200000000000000000000000613202c3945515d67707d8892989d9f9f9d98928b7e71695e52463a2d1c12070000000000000000071017232e38424a545c606d727c848c92989fa2a9abb0b5b8babfc1c3c5c6cacfd7dfe5eef5ece3ded6cfc9c5c4c2c0beb9b8b5afaca8a19e96918a827b706c625b514940372d23190e0400000000000000010d1925303a4854606b727f8b92989a9997928d86817c77726e6968666564656667686d7279818e939da8b2bdc8d4d4c8bdb1a89b8e8175675c5145382c1f13060000000000000000000000000613202d394653606c7884919ea6b0b8b9b8b1a89f92867b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b96a1aaafb6b3b2aba2988e8175695e53463a2d21150a0e0e0e0e0e0e0e0e0e0e121e2a36424d5764707d8a949fa8afb2b3b2ada59d908377675c5145382c1f1306000000000000000000000000000000080e171f252a2d31363a3b3c3c3b3a36312b28221c140b0400000000000000000000000000080e171f252a2e34383a3c3c3c3a39352f2b28231c140c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b232c30394045464a4e4f4f505050505050505050505050505050504f4f4f4e4c4a4846423c3b38322b28221c140b060000000000000000000000000004111d2935404b55616b717e868d909292918d867e716c61574d42362a1e0b0000000000000000000006111c263038424a505b626a6f797f858c92979c9fa6a9acaeb4b4b6b8b9bec5cdd3dce5ede3dad1ccc4bdb9b7b6b3b3adababa39f9c96918b847e766e69615a514940372e251b110700000000000000000008131e2c38444f59636d727e868b8d8c8985807b746f6a65615f575958585859565d61676d78818e96a0acb8c4ced9cec3b8ab9f9285796d6053463a2d20130700000000000000000000000005121f2b3744505b65727f8b949ea6abacaba7a0968e8174695e52463a2d201407000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba9b2bbc0bfbdb4aa9f92877b6e6154483c32261b1a1a1a1a1a1a1a1a1a1a1a1a212d3a46535e697683909ca6b0babfbfbeb9ac9f9386796d6053473a2d20140700000000000000000000000000000000050d14191e20252a2d2e2f302e2d2a251f1c17110a02000000000000000000000000000000050d141a1c23282c2d2f302f2d2c29241f1c17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111a1e272e34383a3e41424343434343434343434343434343434343434242413f3e3b3a36312f2c271f1c17110a020000000000000000000000000000010d18242f3a434f59616c717b8084858584807b716c625a50453b30251a0e00000000000000000000000a141e2630383f44515860666d727a80858b9094989c9fa2aaa7a9abadb3bbc1cad3dee6dbd1c8bfbab2adaba9a7a9a29e9b99928f8a847f79716c615e5750473f372e251c12090000000000000000000002101c27323d47515b636d717a7e807f7d79736e69625f58555759595a5959575553555d666d7984919ea8b2bdc9d5d3c6baaea298897c706356493d3023160a000000000000000000000000030f1b27333f4953606d78828f949b9e9f9e9c9590847a6d60574d42362a1e120500000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828f9ca9b5c2ccd0c6bbafa3998c807366584e43372b27272727272727272727272727272e3b4854616e7b87949fabb8c2cccfc8bbafa49a877b6e6154473b2e211408000000000000000000000000000000000002090e11141a1e2121232321211e1a140f0b0600000000000000000000000000000000000002090e11171c1f2022232221201d1913100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080c151d23282c2d31343536363636363636363636363636363636363636353433312e2d2a2522201b160f0b06000000000000000000000000000000000007131d28313e47505a61696e7377787977746e69625a50483e33291f14090000000000000000000000020c151e262e343f464e545c60686d737a7e83888b8f9298989a9c9ea1a9b0b8c1ccd7e0d5cabfb6ada8a19e9c9a9797928e8b86827d79726d67615a524d453e352d251c130a0000000000000000000000000b16212b353f49515a62686d727373706d66615e575d60626465666666656462605c545d67707d8a96a1acb9c5d2d6cabeb4aa998c7f7266594c3f33261908000000000000000000000000000b17222d3844505c666d79828a8f9192928f8b837b6e685d52453b30251a0e02000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f9ba8b5c2ced7cbc0b5ab9e9184776a5f53473b34343434343434343434343434343436414c5665727f8c98a6b0bbcbd4d3c7bbaea399877a6d6154473a2e211407000000000000000000000000000000000000000205090e12141516161514120e09030000000000000000000000000000000000000000000000060c1012131516161413110d08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20242729292929292929292929292929292929292929292828262421211e1a15130f0b0300000000000000000000000000000000000000010c161f2c353e4850575e61676a6c6c6a67615f5750483f362d21170d02000000000000000000000000030c151c2328343c424b51565e61676d71767b7f8286888b8e9092979ea6b0bbc7d3dcd0c4b8ada39c96918f8d8b8885817e7a75716d66605d555046423b332c231b130a01000000000000000000000000050f19232e373f4850565e6165676663605c5d6065676d6f717273737372716f6d666460606c7884919eabb7c4d1dbd0c2b5a89b8f8275685c4f423025190d0100000000000000000000000006111b28343f4a545d676d757d82858685837e786e695e564c4133291f140900000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cfdbd1c7b9aca096887c6f625549414141414141414141414141414141414146525e687683909ca9b6c2cddcd2c5b9ac9f9286786d6053463a2d201307000000000000000000000000000000000000000000000205070809090807050200000000000000000000000000000000000000000000000000000003060709090907060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313171b1c1c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1c1c1b19171514120e09070300000000000000000000000000000000000000000000040d1a232c363e454d52545a5d5f5f5e5a55534d453f362d241b0f050000000000000000000000000000030a1117222b303940454c52555d6065696e7276797c7e8183858f949eaab7c3d0dacdc0b4a89c918c8482807e7b7975716d6864605c54514b433e363029211a110901000000000000000000000000000007111c252e363f444c5254585a59565e61686d72767a7c7e7f7f807f7f7d7c7975716d666673808d99a6b3c0d1dcd0c4b7aa9d9184776a564c41362a1d1105000000000000000000000000000b17232e38424b555d606c707578797876716d665e574d433a2f21170d0200000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a9b3becad6d5c9bdb2a8998c807366574d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d54616d7a86929facb9c5d2ddd0c4b7aa9d918477665c5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070b0e0f1010101010101010101010101010101010100f0f0e0c0b08070502000000000000000000000000000000000000000000000000000008111a242c333b4246474d515252514d4846423b332d241b120900000000000000000000000000000000000610191e272e343a41464b5153575f6165666d6f72747678828f9ca8b5c2cfd9ccbfb2a6998c7f787674716e6c6564615e5653504a454039312a251f170f0800000000000000000000000000000000000a131c242d323a4146474b515a62686d747a7f8286888a8c8c8d8c8c8a8886827e78716c707d8a97abb4bfcbd7d2c5b8ac9f928579685e5246392d2013070000000000000000000000000006111c26303a434b515a6164686b6c6b6965605c544d453b31281e0f050000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8997a2adb9c6d2d9cec3b7aa9d908377695f5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5565717e8b99a3afbbc7d4d7cbc0b5ab9b8e817568544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a202930363a3b4044454644413b3a363129211b120900000000000000000000000000000000000000070c151d232830363a4045474d5355545c606265676975828f9ca8b5c2cfd9ccbfb2a6998c7f7369676462605b5354524c46443f38352f271f1a140d05000000000000000000000000000000000000010a121b20293039434b555c606c717a80868b8f92999798999999989798928f8a847e756e7b8799a3aebac7d3d3c7baaea298877a6d6154473a2e21140700000000000000000000000000000a141e28313a41455055575c5e5f5f5c5853504a423b33291f160c000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929eabb8c5d0dbd1c5b8aca095887b6e6767676767676767676767676767676767676767676775828f9cabb5c0cbd7d3c7bbafa3998b7e7164584b3e2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0c0a070604010000000000000000000000000000000000000000000000000000000000010507070b0c0d0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e171f252a2d2e3437393937342e2d2a261f170f09000000000000000000000000000000000000000000030b12181e252a2f35393b4246484a515355585b6875818e9ba8b4c1d0d9d0beb2a5988b7f72655a58555350494746413a38342e29241d150d09030000000000000000000000000000000000000000040e17232e38424b555d676d747e858d92989c9fa3aba5a6a6a6a5aaa29f9c96918a82797986929facb9c5d2d6cabfb4aa94887b6e6155483b2e2215080000000000000000000000000000020c161f282f353e44494a4f525352504b46443f38302921170d040000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6674818e9ba9b3becad6d4c8bcb1a7988c7f74747474747474747474747474747474747474747474747986929facb9c5d1dcd2c5b9ac9f92867a6d6154473a2e2114060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131417191a19171413110d08010000000000000000000000000000000000000000000000000002080d11131417191a19161313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2021272a2c2c2b2722211e1a140d06000000000000000000000000000000000000000000000000070c13191d24292c31363a3b404446494d5a6774808d9aaab4bfc9d0c7bdb1a7978a7d7164574b4846443f3a3936302c28231c18120b03000000000000000000000000000000000000000000020c162028343f4a545d676d79818b92979fa2aaacaeb4b2b2b3b2b2b4aeaca8a19e948f837a85929eabb8c5d1dbd0bbaea295887b6f6255483c2f221509000000000000000000000000000000040d161d242933393c3d42454645433e3a38342e261e170f05000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5464707d8a97a2adbac6d3d9cec3b7aa9e91848080808080808080808080808080808080808080808080818e98a3aebac7d3d6cabfb4aa9c8f8276685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b12181c1f20232626262421201d19130c070100000000000000000000000000000000000000000001080d13191d20212426262623201f1c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141a1e1f1f1e1a1514120e0903000000000000000000000000000000000000000000000000000002080d13181d20262a2d2e34383a3e4b5764717e8a98a2aeb9bdbebdb5ab9f95877b6e6154483b3937332d2d2a251f1c17110c07010000000000000000000000000000000000000000000008131e28323a44505c666d79828e939fa2a9aeb4b9babfbfbfc0bfbfbfbab8b2ada69e958f8384919eabb7c4d1d5c8bcafa295897c6f6256493c2f23160900000000000000000000000000000000040c131822282d30313538393836322d2c28231c150c05000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3a4653606d7985929fabb8c4cedad2c5b9aca096918d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8e939eaab4bfcbd7d3c6baaea2988b7e7164564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171d23292c2d30323333312d2c29241e18120b0300000000000000000000000000000000000000040c13191e25292d2e31333332302d2c28231d150c09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080d111213110e0807050200000000000000000000000000000000000000000000000000000000000001070d11141a1e2123282c2e3a4754616d7a86929fa5adb2b1b1aba499908376695e53463a2d2b2722201d1913100c06000000000000000000000000000000000000000000000000010d1925303a44505a606d78828f949da5adb3babfc5c7cbd1ccccccd0cac7c4bdb9b0a79f948f9196a1acb9c5d2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000001070d171c202324292b2c2c2925201f1c17110a03000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6774818e9aa8b2bdc9d5d5c9bdb2a8a09e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9ea5afbcc6d1dcd2c5b8ac9f92857a6d6053473a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22282f34383a3d3f403f3d3a39352f29231d150d040000000000000000000000000000000000050d161e24293035393a3e3f403f3d3a38342e271e1b120b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090e1214181c202d3946525e6873808d939ea1a8a4a79f9993877d7063574d42362a1f1b1713110d0803000000000000000000000000000000000000000000000000000005111d2935414c56616c74808d949fa6afbabec5cad0d3d4d1d0d1cbc7c5c7cbc9c1b9b0a69f9c9ea1a8b2bdc9d5d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000050b101416171c1f201f1d181312100c060000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b5563707c8996a1acb9c5d2d9cec4bab2acaaa7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a8aaafb7c1cfd8d5c9bdb2a89b8e8174675d514539281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d33394045474a4c4d4c4a4745413a342f271f160d04000000000000000000000000000000050e171f282f353a4146474a4c4d4c4946454039302d241d140b0100000000000000000000000000000000000000000000000000000000000001050708090b0b0c0c0b0b0a080706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070c111d2a36414c56606d78818b91969798979590877f726b6054453b31251a0f0b060501000000000000000000000000000000000000000000000000000000000713202d3946525e68707e8a929da6b0b8c1cacfd6d6cdc8c4c3bfbfbbb9bbbfbfc3c2b8b0aba9abacb2bac4cedad5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000004080a0a0f121312100b070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e394653606c7884919eabb7c2cdd8d5ccc4bdb9b7b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b5b6bac1c9d3dfd2c5b9ada196897d7063554b403529160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f383f444b5153565959595754514c45403931281f160c0100000000000000000000000000020d172029313a41454c5254575959595653514b423f372f261d13090000000000000000000000000000000000000000000000000000020507080d1114141618181919181717151313100c0707060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a44505c666d777e84888a8b8a87837d726d62594f4433291f14090000000000000000000000000000000000000000000000000000000000000005121e2b37424d57616d7a85929ea4aeb8c2cad6d7d0cac3bcb8b7b2b5aeacaeb5b2b7b8bcbbb7b6b7b9bdc4ccd6e0d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121f2b3744505b6573808c99a7b1bcc7d3ded5cec9c5c4c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c1c3c6ccd3dbded1c4b8ab9e9184786c605346392f24180600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f38424a50555c606365666664605d55514b433a31281e13080000000000000000000000000008141e29323b434c52565e616466666563605c54514941382f251b0d03000000000000000000000000000000000000000000000003090e121415191e2021232425252525242322201f1c18161312100c0604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28343f4a545c656c72787c7d7e7d7b76706b625b51473d3221170d03000000000000000000000000000000000000000000000000000000000000000714212d3a46535f6974808d97a1adb6c0cad4d7cec6bfbab1acaaa5aba39fa3aba5aaacb1babfc2c4c5c9ced6dee8d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953616e7b88959fabb7c6d1dce0d9d5d2d1cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcecfd2d7dde0d4c8bcb1a7998d8073665b5044382b1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a545b60676d70727372706d67605c554c433a2f24190d040000000000000000000000010d1925303b444c565d60686d71727372706d66625b534b41372d1f150b010000000000000000000000000000000000000000060b0f141a1e2121252a2d2e30313232323131302f2d2c282323201f1c1712100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17232e38424a535b60656c6f7171706e6963605951493f352b210f050000000000000000000000000000000000000000000000000000000000000004111d2935414c56616e7b87929fa9b3bec8d2d8cec6bcb4aea7a09d989599929995989da0a7aeb4bcc6cfd5dae0e8e2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3847535f697683909daab4bfcbd7e3e5e1dedddadadadad6d4d4d4d4d4d4d4d4d4d4d4d4d4d4dadadadadbdcdee3e8ddd1c4b8aba095887b6f62544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b666c72797d7f807f7d7a736d675d554c41352920150a000000000000000000000005111e2a36414c565e686d747a7d7f807f7c79726d645d53493f31271d1207000000000000000000000000000000000000020a11171c1f252a2d2e3036393b3c3e3e3f3f3e3e3d3b3a38342e302d2c28231f1c18120e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c263038414950535b6062646564615e57544f473f372d23190f00000000000000000000000000000000000000000000000000000000000000000713202c3945525d6874818d99a3afbbc5cfdcd0c6bcb4aaa29f95908c88878686888c90959fa2aab4bdc6d1dce7f3e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2b37424d5765727e8b98a3aebac7d3e0ecedebe1d9d3cecac9c7c7c7c7c7c7c7c7c7c7c7c7c7c7d0d1d4d9dfe7ebefe3d7cbc0b5ab9d9083776a5f5342382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c787f85898c8c8c8a8680796d675d51453d32271b0f03000000000000000000000714202d3946525e686e7a81868a8c8c8c89857e746f645b5143392f24180c0000000000000000000000000000000003090b141c22282b31363a3b3f414647494b4b4c4c4b4a4a48464540403c3a38342e2c28231c19140c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262f383f444950535557585754524d48443d352d251b110700000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929fabb5c0cdd6d6cbbfb4aaa298928b837f7b7a797a7b7f838c9298a2abb5bfcbd7dee9e2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4754606d7a86929facb9c5cfdae6f2e1d7cfc7c2bebcbabababababababababababababac3c4c8cdd5dde7ede0d3c7bbafa3998b7f7265584e432f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b55606c78818c929798999998928d83796d60584e43372b1f130600000000000000000007131f2c38434f59616e7a848e929999999897918b81746d62554b4035291d10040000000000000000000000000000050d141a1d262d33383b4246484c4c525456575858585857565553514b4c4946443f3a38342e2a251f18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141d262d33383f4446484a4b4a4846423b38322b231b1309000000000000000000000000000000000000000000000000000000000000000004101d2935404b5565717e8b98a2aebdc7d1ddd3c7baaea39892867f78726f6d676d6e72787f869299a3aebbc2cdd8e4e2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c3945525d6875828e9ba9b3bec9d5e2e4d9cfc5bdb6b1b0aeaeaeaeaeaeaeaeaeaeaeaeaeaeb7b8bcc3cbd5dfecdfd2c5b9ac9f92867a6d6154473c3121140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d67737f8c939ea1a9a6aaa29f958e81756a6054473b2e2215080000000000000000000915222f3b4854606b76828f969fa3aba6a9a19e938b7f72675d5145382c1f130600000000000000000000000000080f171f252a2f383f44464d535458565e61636465656564646362605c54595653504a46444039363029231d150d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272d3337393c3e3e3d3b3a36302c272119110901000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d6776828f9caab4bfcfd9d3c7bbb0a69f92867d726c6662605d6062666c727d87929fa6b0bbc7d3dfe2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5664707d8a97a1adb9c6d2dfded3c7bdb3aba5a3a1a1a1a1a1a1a1a1a1a1a1a1a1a1aaacb1b9c3cdd9e2d6cabeb3a99c8f8275685e5246392d2013020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985929fa5adb3b3b4aea79e93897c6f6256493c2f231609000000000000000000091623303c4956636f7c89949fa8aeb5b3b3ada59e9285796d6053473a2d2014070000000000000000000000010a111a212931363e424a5053575e616568686e6f717172727171706e6d66696663605c5453514a46413b342f271f1810080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b22272b2d2f3132312e2d2a251f1b160f07000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929facb9c5d0dfd0c3b7ab9f948a7e716b605b54545153545b606b717e8b949fabb7c3cdd9e4d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a4653606d7985929eabb8c3ced9dacec2b6aba19a9694949494949494949494949494949da0a7b1bcc8d4dfd3c6baada2978a7e7164564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a2adb9bebfbfbaafa59a8d8073675a4d4034271a0d0100000000000000010e1a2734414d5a6774808d9aa6b0bbbfbfbeb9ada1978a7d7063574a3d3024170a00000000000000000000010a131c232c333b424650545b6064696e7275787a7c7e7e7f7f7e7d7d7b797775736f6d6664605c54524d454039312a221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b11171b1f202224252421201e1a14100b0400000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8999a3aebac7d3d4c8bcb1a79c8f82766c6159504a4745474a5059626c76828f9ca7b1bcc8d4e0d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2c3844505c6674808d9aa7b1bcc8d4d7cabeb1a59a8f8987878787878787878787878787879095a0acb8c4d1ded2c5b8ab9f9285796d6053473a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a9b3becacfcac1b6a99d9083766a5d5043372a1d10040000000000000003101d2a3643505d697683909ca9b6c2cbcfc9beb3a9998c807366594d4033261a0d000000000000000000010a131c252d353e454d535a61666c71767b7f828587898a8b8b8b8b8a89888684827f7c7975716d66615e56514b433c342c231a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213151718171514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99abb4bfcbd7d1c5b8aca095887c6f625a50443f3a393a3f44505a626f7c8895a0acb8c4d1ded5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54626f7c8895a0acb8c7d2ddc9bcb0a396897d7b7b7b7b7b7b7b7b7b7b7b7b7b7b83909daab7c3d0d5c9bdb2a89a8e8174675c514538291e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7b4c1d0dad1c4b7ab9e9184786b5e5145382b1e12050000000000000005111e2b3844515e6b7784919eaab7c4d1dacfc1b4a79a8e8174675b4e4134281b0e00000000000000000009131c252e373f474f575e616c71787e83878b8f929796979898989797969992918f8c8985827d79736e68605c554e463d352c23190d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090b0b0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8b5c1d1dcd0c3b7aa9d9084776a6054483e332d2c2d333f4754606a7783909daab6c3d2ddd5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e384754606a7784909dabb5c0ccd7ccbfb3a6998c80736e6e6e6e6e6e6e6e6e6e6e6e7a86939facb9c6d2d2c5b9aca096897c6f63554b403429170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000008111b252e374049515961696e757d848a8f939a9b9ea2a9a4a4a5a5a4a4aba39f9e9c9998928f8a85807b736d675f584f473d352b1f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a546a7783909daab6c3d0d9ccbfb3a6998c807366584e4336282220222b37434e5865727f8c98acb6c0ccd8d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2b37434e5866727f8c99a4afbbc7d4d1c4b7aa9e9184776a61616161616161616165717e8b99a4afbbc7d4d1c4b7aa9e9184776b605443392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000040e1a232d374049525b636b707b828a91959c9fa4acabadb3b1b1b2b2b1b0b5afacaaa8aaa29f9b97918d8680796f6a61594f473d31281d13070000000000000000000000000000020507080b0d0d0b0807050200000000000000000000000000000000010507070b0d0d0b0807050200000000000000000000000000000000010407070b0c0d0c080806020000000000000000000000000000000000000000000006121f2b3844505b667885929eabb8c5d1d6c9bdb0a3968a7d7063574a3d322417131b27323c4956636f7c899aa4afbbc8d4d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323c4754616e7b87939facb9c5d0d2c5b9aca096887c6f62555454545454545d6775828f9cabb5c0ccd3c7bcb0a6998c807366594f4331271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000020c16202b353f49525b636d727d858f949da0a7acafb6b8b9bebdbebebebebdc0bbb9b7b5b4aeaba9a19e98928d847c706b61594f433a2f24180d01000000000000000000000002090e111414181919181414110e090200000000000000000000000002080d111314181919181514120e090300000000000000000000000002080d11131417191a181514120e090300000000000000000000000000000000000000000613202d394653606c7986939facb9c6d2d6cabfb4aa94877b6e6154473b2e21140a14202d3a4753606d7a86939facb9c6d2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202d3a46525e6976828f9caab4bfcad4c8bdb2a8998d807366584e4848484853606d7a86929facb8c5d2d0c4b7ab9f94887b6e6155483d3222150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000008131e28323d47515b636d737f8892979ea6acb1b9bbc0c5c6cacfcbcbcbcad1cbc7c5c4c2bebab8b3adaaa29f9691867d706b60554b4135291d110400000000000000000002080d14191e20212526262521201e1a140d0802000000000000000001070d13191d20212426262521211e1a140e0902000000000000000000070c13191d20212426262522211e1a150e09030000000000000000000000000000000000000714202d3a4753606d7a869aa4afbbc8d4d3c7baaea29886796d6053463a2d201307131f2c3945515d677885929fabb8c5d2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d5764717e8b98a2aebac6d3cec3b7ab9e9184786a6054473b3f4a5464707d8a98a2aebac7d3cbbfb4aa9c908376695f53463a2d2114030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000010d1925303a444f59626d73808c939aa2a9b0b8bcc3c8ccd2d2d3d2cfcecdcccdcecfd2d1d0cac6c4beb9b4aea8a09892867d6f675d5145392c2013060000000000000000040c13191f252a2d2e313333312e2d2a251f19130c05000000000000040c13181e252a2d2e313333322e2d2a251f1a140d05000000000000030b12181e24292c2d313333322f2e2b261f1a140e0600000000000000000000000000000000000714212e3a4754616d7a8794a0b6c0ccd8d2c5b8ac9f928579665c5144382c1f1206101d2935404b556b7884919eabb7c4d1d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b4753606d7985929facb8c4ced2c5b9aca196897c6f6253493f44505b6674818e9aaab4bfcad3c7baaea3988b7e7265574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000005111d2935414c56606b727f8b929fa4acb3bbc1c8ced4d3d0cac6c5c3c1c0c0c0c1c3c5c7cbd1d2cfc9c6bfbab2aaa2989184796d6054473a2d21140700000000000000050e161e252930363a3b3e40403e3b3a36302a251e160e0500000000040d161d24293036393a3e40403e3b3a36312a251f170e0600000000030c151d23283035393a3e3f403f3b3a37312a261f180f06000000000000000000000000000000000714212e3a4754616d7a8794a0b6c0ccd8d2c5b8ab9f928578665b5044382b1f12060f1b27333f49536a7784919daab7c4d0d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3945515d6774818e9ba8b2bdc9d5c9bdb2a89a8d8073655b50444653606c7985929eabb8c5d0d2c5b9ac9f92867a6d6054473b31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000040f19232d3946525e68707d87929fa4afb6bec5cdd4d0cac6c5bebab8b6b4b3b3b3b5b6b9babfc5c6c9cfd0cac3bcb4aaa1978c7f7266594c3f3326190c000000000000050e17202830353b4246474b4c4c4b4746423b36302820170e050000040e161f282f353a4146474b4c4c4b4846423b36302920180f060000030d151e272e343a4145474a4c4d4b4847423c36312a211810060000000000000000000000000000000714202d3a4753606d7a869aa4afbbc8d4d2c6b9ac9f9386796c605346392d201306121f2b3744505b657885929eabb8c5d1d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5563707d8996a1acb9c5d2cec4b7ab9e9184786c6053464956636f7c8997a1adb9c6d2c9beb3a99b8e8275685d5245392a1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000b16212c38434f59616d7a859199a3afbbc0c7d0d3cec5bebab8b3aeaba9a7a7a6a7a8a9acaeb4b8b9bec5c8cdcec6bcb2a99d9083776a5d5044372a1d110400000000020b172029323a41464d52545859595854524d46413a322920170b02020c162028313a41454c52545759595854534d46423b332a21180c03010b151f27303940454c52545759595855534d46423b332a22180d0400000000000000000000000000000613202d394653606c7986939facb9c6d2d4c8bbafa49a877a6d6154473a2e21140a13202d394653606c7986929facb9c5d2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f394653606c7884919eabb7c2cdd2c5b9ada196897c6f63544a4d576673808d99a9b3bec9d2c6b9ada1978a7d7064564c413529180e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000003101b27323b4854606b75818e97a1abb5c0ccd2d2c9c1bcb3adabaaa29f9c9b9a999a9b9c9fa3aaabadb3b8bcc3c8cfc4b8ab9f9285786c5f5245392c1f1206000000000a141d29333b444c52565e6164666664615e57524c443b32291d140a08131e28323a434b51565e6164666665615e57524d453c332a1e150b07121d273139434b51565d6064666665625f57534d453c342a1f160c010000000000000000000000000006121f2b3844505b667885929eabb8c5d1d8ccc0b6ac96897c706356493d32261b1118222f3b4855626e7b8899a3aebac7d3d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121f2b3744505b6573808d99a7b1bcc8d4c9bdb2a89a8d8074665b50535f697784919daab7c4cfd1c5b8ab9e9285796d6053463a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060202020202020205121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000713202c38444f59636f7c89939ea9b3bdc7d1d2c8c0b7afa9a29f9a9892908e8d8d8d8e9092989a9ea1a9abb1b8bcc3c3b8ab9f9285786c5f5245392c1f120600000006111b262f3b454d565e61696e717373716e69615e564d443b2f261b110d1924303a444c555d60686d717373716e69615e574d453c30271d120c18242f39434b555c60686d717273726e69615f574e463c31281d120700000000000000000000000000030f1c28333f4a546a7783909daab6c3d0ddd2bfb2a5998c7f7266584e43372b221d222a36414c5664717e8a97abb4bfcbd7d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953626e7b88959fabb8c6d1cfc4b8ab9e9185786c605355616e7b8895a0acb8c5d1c8bcb1a79a8d8074665c514438281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f120e0e0e0e0e0e0e0e0e121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000916222f3b4854606b7683909da5afbbc4cfd4cac0b6aea59e97928d88858381808080828386898d92979da0a7acb1b7b7b1a79c908376695d5043362a1d10030000000b17222d38414d575e686d747b7e7f7f7e7b756d685e564d41382d2217111d2935414c565d676d747a7e7f7f7e7b756e695f574d42392e2318101d2935404b555d676d737a7d7f807e7b766e695f584e43392f24180d01000000000000000000000000000b17222d424f5b6875828e9ba8b5c1d0dbd0c3b6a99d9083766a5f53473e342c292c343c46525e6875828f9ba8b5c2d1dcd5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3847535f697683909dabb4bfcbd2c6b9ada197897c7063545665727f8c98a7b1bcc8d1c5b8aca095887c6f62544a403428160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1b1b1b1b1b1b1b1b1b1b1b1f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000005111d2935414c5663707c89959fabb7c1cdd6ccc2b8aea49c938e85807c7876747473747576797c80858a90959da0a7aaaaa7a0958b7f7265584c3f3225190c000000030f1b27333f49535e696e7a81878b8c8c8b87817a6e695e53493f33271b13202d3946525d686d7981868a8c8c8b87827b6e695f544b4034281c131f2c3945515d676d7980868a8c8c8b88827b6f6a5f554b4035291d100400000000000000000000000000061926333f4c5966727f8c99aab4bfcad6d1c4b8ab9f95887c6f625a50463e3935393e464f59616d7a86929facb9c5d2dfd5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2b37424d5765727f8b99a3aebac7d3c9beb3a99a8d8174665c5e687683909ca9b6c3ceccc0b5ab9d9184776a605442392e2318040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c282828282828282828282828282b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000713202d3946525d6875828f9ba7b1bcc9d3d3c7bbb0a69c928d817a736f6a696867666768676d7073797e838a90959b9e9e9c959083796d6053463a2d20130700000005121f2b3744505b656e7b848e939999999a938e847b6e655b5044372b1f202c38444f59616d7a838d9299999998938f847b6e665c5145382c1f1f2b37434e58606d79828d9298999998948f857c6f675d5145392c201307000000000000000000000000000a1623303d495663707c8998a2aebac6d3d4c8bcb1a79c8f82756c61585047454145475058606b74818e99a3aebbc7d3e0d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4754616d7a86929facb9c5cfcfc4b8ab9e9285796d60616d7a86929facb9c5d2c7bbafa4998c7f7266584e4330271c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245393535353535353535353535353535353845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000714212e3a4754616d7a86929facb9c2cddfd0c3b7ab9f948d80756d686260585b5a5a5a555c6063666d71777d83898e91918f8b837b6e675c5145382c1f13060000000613202d394653606c778390969fa4abaca49f969082776c605346392d20222f3b4854606b75828f959fa3aba6a59e969083796d6053463a2e23212e3a47535f6a74818e949fa3aaa6a69f979184796d6053473a2f24180c000000000000000000000000000714202d3a4753606d7985929facb8c5d0d8cdc2b7aa9e948a7e716a615a54514c51545a616a707d88939fabb5bfcbd7e3d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202d3946525d6875828f9ba9b3becad2c6b9ada197897d706364717e8b99a3afbbc7d2c6b9ac9f93877b6e6154483c3221150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245414141414141414141414141414141414145525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000b1825313e4b5864717e8b99a3afbbc7d3d4c8bcb1a79c8f82776c615e56544e4f4f4f4f4b5153545c60646c70777d818484827f796e695e554b4034281c10040000000b1724313e4a5764717d8a959fa8afb5b6afa89f948a7d7164574a3e2e2323303d495663707c89949ea7afb5b2afa8a0958b7e7265544a3f3428222f3c4855626f7c87939fa6aeb4b3b0a9a0968c7f7265554b4035291d100400000000000000000000000006131f2c3845515c6775828f9ca9b3becad6d3c7bbb0a69f92867d716c64605d555d60646c717c85929aa4afbdc6d1dce7d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c5664707d8a97a1adb9c6d2c9beb3a99a8e8174666775828f9babb5c0cbcabfb4aa9c8f8276695e52463a2d201403000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f524e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0005121e2a36424d576875828f9babb5c0cbd7d1c4b8aba095887c6f655b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a61646b7075777776726d665e574d43392e23180c000000020f1c2935424f5c6875828f9ba7b1bbc0c0bbb0a69c8f827569544a4034282834414e5b6774818e9aa6b0bbc0bfbab1a79d908376665c5044382c2733404d5a6673808d9aa4afbabfbfbbb2a89d908377675d5145392c1f130600000000000000000000000004101c2934404b5564717e8b97a2adbac6d0d7ccc1baaea29892857e76716d676b676d71767e859297a2acb6c0cfd8e3e2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a4653606d7985929eabb8c3cecfc5b8ab9f9285796d6d7985929facb8c5d1c6baaea2988b7e7164574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000714212d3a46535f697885929eabb8c5d1dcd0c3b6aa9d9083776a686868686868686868686868686868686868686868686b6b6965625f58524c443a3025190d04000003101c28343f4a546b7885919eabb8c2ccccc2b8ab9e928578665c5144382c2a3744515d6a7784909daab7c1cbccc3b9ac9f9286796d6053463a2d293643505c6976838f9cacb6c0cbcdc3b9ac9f93867a6d6053473a2d201407000000000000000000000000000c18232f3a4753606d7985929faab4bfcad6d6cabfb4aaa297928a827e7a7877787a7e828a9297a2a9b3bec7d2e1eae2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2c3844515c6674818d9aa8b1bdc8d3c6baada2978a7d70707d8a98a2aebac6d2c5b8ac9f92857a6d6053473b30251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c68686868686868686868686868686868686868686868686b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000815222e3b4855616e7b8897a1adb9c6d2dacdc1b4a79a8e81757575757575757575757575757575757575757575757575757574726f6a615e564c41362a21160a000006121f2c3844505c667986929facb9c5d2d2c6b9ac9f9386796d6053463a2d2b3845525e6b7885919eabb8c4d1d3c7bbafa399877a6e6154473b2e2a3744515d6a7784909daab7c3d2d4c8bbafa49a877b6e6154483b2e2115080000000000000000000000000007131f2c3845515d6774808d98a2aebac4d0d9d0c6bcb3a9a29f948f8a87858485878a8f949ea2a9b3bcc5d0d9e4f3e2d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54626f7c8995a0acb8c7d2cabeb3a99b8e817474818d9aaab4bfcac9bdb2a99b8e8175675d514539291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f928578747474747474747474747474747474747474747474747474747885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000a1724303d4a5763707d8a96a9b3bec9d5ddd0c3b7aa9d90838182828282828282828282828282828282828282828282828281817f7c766d685e52463d32271b0f03000713202d3a4653606d798699a3afbbc7d3d4c8bbafa49a867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d7cbc0b5ab94877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d8ccc0b6ac95887b6e6255483b2f2215080000000000000000000000000004101d2935404b55616e7a86929fa8b2bec7d2d7cec5bcb3ada69f9c979792919297979c9fa6adb3bbc5ced7e2ebf0e2d5c9bcafa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e394754606a7784919dabb5c0cccfc5b8ab9f9285797884919eabb8c4d0c5b9ada196897d7063554b403529170d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b9ac9f928781818181818181818181818181818181818181818181818181818186929facb8c5d2dbcec1b5a89b8e8275685b4f4235281c0f000c1925323f4c5865727f8b98a5b2becfdaded1c5b8aca095908e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8d8b88827a6d61594f43382c1f1307000713202d3a4653606d798693a0b5c0cbd7d8ccc0b6a093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2dcd1baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1ddd2bbaea195887b6e6255483b2f22150800000000000000000000000000000c18242f3946525e6873808d96a1acb6c0ccd8d7cec5bebab0aba9a9a29f9e9fa2a9a9abb0b9bec5cdd0d3d8dee5e2d5c9bcafa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2b37434e5866727f8c99a4afbbc7d3c6baaea2988a7d7c8896a1adb9c5d1c4b8ab9e9184786c6053463a2f2418060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c7bbaea399928e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e9298a3aebac7d3dbcec1b5a89b8e8275685b4f4235281c0f000d1a2733404d5a6673808d99a6b3c0ccd9e0d4c8bcb1a7a09d9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9a98948f82766b6054483b2f221509000713202d3a4653606d798693a0acb9d1dcddd2b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000007121d2a36414c56606d7984919aa4afbbc1cbd4d7d0cac2bbb7b6b3adabaaabadb3b5b7bbc2c7c3c2c3c7ccd3dce5d5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323d4854616e7b87939facb9c6d0cabeb3aa9b8e81808c99a8b2bdc9c8bcb1a79a8d8073665b504438281d13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd7cbbfb5aba39f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9fa3aab4bfcbd6dbcec1b5a89b8e8275685b4f4235281c0f000e1b2734414e5a6774818d9aa7b4c0cddae5d9cec3b9b1acaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a7a69f94897d6f6356493c30231609000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000010e1925303b45515d67707d88939fa6b0b9c2cad6dbd6ccc7c3c2bebab8b7b8babec2c3c7c2bbb7b5b7bbc2cad3dbd5c9bcafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202d3a46525e6976828f9caab4bfcad0c5b8ac9f928684919daab7c4cfc4b8aca095887b6f62544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdcd1c6bdb5aeaca7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7acaeb4bcc6d0dcdbcec1b5a89b8e8275685b4f4235281c0f000e1b2835414e5b6874818e9ba7b4c1cedae7dfd5cbc3bcb8b7b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b4b4b0a6998c7f7366594c403326190d000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000008141e2935404b55606b73808d949ea6b0b8c1cad0d7d8d3d0d0cac6c5c4c5c6cacfc9c1b8b0aaa9aab0b8c1c9d3d6cabfb4aa96897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5764717e8b98a2aebac6d3c6baaea298929195a0acb8c5cbc0b5ab9d9083776a5f5342382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe3d8cfc6bfbbb9b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b4b8babfc6ced8e2dbcec1b5a89b8e8275685b4f4235281c0f000e1b2835414e5b6874818e9ba7b4c1cedae7e2d8cfc6bfbab9b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9babfc1c1c1c1c1c1c0b4a79b8e8174685b4e4135281b0e000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000020d18242f39434f59606d78828f949fa6afbabec5cbd1d5d9dbd6d3d2d1d2d3d0cac0b7afa69f9c9fa6afb7c1ccd0c7baaea298887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303b4753606d7a85929facb8c4cfcabfb4aaa29f9da0a8b1bdc8c7bbafa3998b7f7265584e432f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbeae1d8d1cbc7c5c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c5c7cbd0d8e0eadbcec1b5a89b8e8275685b4f4235281c0f000e1a2734414d5a6774808d9aa7b3c0cddae7dcd1c6bdb4aeacacacacacacacacacacacacacacacacacacacaeb4bcc6d1cececec1b5a89b8e8275685b4f4235281c0f000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000007121d28313d44505c666d79828f949ea5aeb3bbc0c7c9cececfd0cfcfcfc9c6bfbaafa59e948f949ea5afb9c2c4bfb5ab9f9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c3945515d6774818e9ba8b2bdc9d0c6bcb4aeacaaacb1bac3cec5b9ac9f92867a6d6154473c3121140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8eae3dcd7d3d2cececececececececececececececececececececececececececed2d3d6dce2eae8dbcec1b5a89b8e8275685b4f4235281c0f000d1a2633404d596673808c99a6b3bfd2dde3d7cbbfb4aba39f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3aab4bfcbd7dbcec1b4a89b8e8175685b4e4235281b0f000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000010c161f28343f4a545d676d7a828e939fa2aaafb5b9bdc0c2c2c3c3c2c1beb9b4aea59d938e828f939ea7b0b7b7b4aea4998f8275675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b5563707d8996a1adb9c7d2cec6bfbab8b7b8bdc3ccc9beb2a99c8f8275685e5246392d20130200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8f2e9e2dbd6d3d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d4d8dde4ebe8dbcec1b5a89b8e8275685b4f4235281c0f000b1825323e4b5865717e8b98abb5c0ccd7e0d3c7baaea3999292929292929292929292929292929292929298a3aebac7d3dacdc0b4a79a8d8174675a4e4134271b0e000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000040d17232e38424b555d686d79818b92989fa3abacb2b3b5b6b6b6b5b4b3adaaa29f938e8179818f959fa6aaaaaaa39f93877c6f62554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a4653606c7884919eabb5c0ccd7d0cac6c5c4c5c8ced2c6b9ada1978a7d7064564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe8e9e0d7d0cac6c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c6c8ccd2d9e2ebdbcec1b5a89b8e8275685b4f4235281c0f00091623303c4956636f7c8999a4afbbc7d4dfd2c5b9ac9f9286858585858585858585858585858585858586929facb9c5d2d9ccbfb2a6998c7f7366594c403326190d000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000006111c263039434c565d676d757e858d92999ea0a8a6a8a9a9a9a8a7a9a19e98928b81786d7a8390949b9d9d9c98928b7f726a605443392f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2b3844505b6673808c99a4afbbc7d4dbd6d3d2d0d1d4d7cbbfb4ab9e9184796d6053463a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe9e0d7cec6bfbab8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9bbc0c7d0d9e4dbcec1b5a89b8e8275685b4f4235281c0f000714212d3a4754606d7a86939facb9c6d2dacdc0b3a79a8d8079797979797979797979797979797979797f8c99a5b2bfccd6cabeb3a9978a7e7164574b3e3124180b000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000a141e27313a434c555c606c717a81878c9196989a9b9c9d9c9c9a9897928d867e746d686e7a828a8e90918f8c867f726d63584e4331271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7b87939facb9c2cdd8e2dfdfdddedfd3c7baaea3998c8073665c504438291e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbe1d7cec5bcb4aeacacacacacacacacacacacacacacacacacacacacacacacacacacacacafb6bec7d2dddbcec1b5a89b8e8275685b4f4235281c0f000613202c3945515d677783909daab6c3ced9cfc3b6a99c908376696c6c6c6c6c6c6c6c6c6c6c6c6c6775818e9ba8b4c1ced2c6b9ada197887b6e6255483b2f221508000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000020c151f28313a434b515a61686e747b8084888b8d8f8f90908f8e8c8985807a716c605e686e777d81848483807b726d635b51463d321f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846535e6975828f9ba7b1bcc7d3dee7ebeae1d7cbc0b5ab9f92867b6e61544a3f3428170d020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbdbd0c5bcb3aaa29f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa4acb6c0ccd8dbcec1b5a89b8e8275685b4f4235281c0f0004111d2935414c556773808d9aa8b2bdc8d4d2c6b9ac9f93877b6e61595f5f5f5f5f5f5f5f5f58606d7a86929facb8c5d2d1c5b8ab9e9285786c605346392d201306000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000000030d161f283039404550565e61696e73777b7e808283838382817f7c79746e68625a565e656c7075777776736e69625b51493f342b200d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36424d5763707d89959fabb7c1ccd5dfe0e0dacfc7bbafa3998e8174685e5242382e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd6cabeb3a9a298929292929292929292929292929292929292929292929292929292939aa4afbbc8d4dbcec1b5a89b8e8275685b4f4235281c0f00010d19242f3c4955626f7c8896a0acb8c5cfd4c8bbafa49a8e81746b60584f52525252524f575f6a737f8c98a2aebac6d3cabeb4aa9b8e8275655b5044372b1f1205000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000040d161e272e343e444c52575e6166696e7173757676767574726f6d66615e56504c535b6064686a6a6966615e5751493f372e22190f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313b4854606b7683909da5afbac3ccd2d4d3cfc9beb3a99f92877b6e61564d4130261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd3c6baada2978986858585858585858585858585858585858585858585858585858688939facb9c6d2dbcec1b5a89b8e8275685b4f4235281c0f00000815222e3b4754606a7784919da9b3bec9d5ccc0b6ac9f93887d706a6159544e4e4e535960696e7c86929faab4bfcad3c6baaea2988a7e716453493f33271b0f03000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000040c151d2328323b41464d5254575f62656768696a6969676563605c54524c4441495053575b5d5e5c5954524d453f372e251c100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c38444f5963707d89939ea8b1bac1c6c8c7c5beb9ada1978d8174695f53443b301e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f928579797979797979797979797979797979797979797979797979797985919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000006131f2b37434e5865727e8b97a1adb9c3d0d2c7bbafa49a92857c706c625f585a585f626b6f7b849198a2aebcc6d0cbc0b5ab9f92857a6d6053473a2d22170b00000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000000000000030b1218202930363b4246484d5355585a5c5c5d5d5c5b595653514a46413b383f44464a4e5151504d4846423b332d251c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101b27323d4854606b75818f95a0a8afb8b9bbbab8b3ada39e92857a6d61574d4232291f0c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000030f1b27323c4753606d7985929ea8b1bdc7d2ccc0b6aca29792867d756f6a6867686a6e747d859196a1aab4bfced3c7bbafa3998d8074675d5145392c1b110600000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000070e171e252a30363a3c4247484b4d4f5050504f4e4c494644403936302d3337393d42444443403b3a363029211b130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f59616d7a8391969ea5abacafaeaca9a19e918a7e70685e52453b3120170d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000a151f2c3845515d67727f8b95a0abb5c0ccd2c7beb3a9a298928a827c77757475777b81889197a1a8b2bcc6d0cabeb3aa9f92877b6e61554b4035291d0a0000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000050d14191f252a2d31373a3b3e404243434342413f3c3a38342e2a2522272b2d3135373736332e2d2a251f170f090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d46525e686e7b848e939a9e9fa4a29f9c97928a7f726c61564c41332a1f0e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5252525252525252525252525252525252525252525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000004101d2935404b55606d78849199a4afbbc2cbd0c5bcb3aaa29f938f888482818284888e939aa1a9b2bac4cecbc3baaea2988d8174695f5343392f24180d0000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000002080d141a1e20262b2e2f323435363736363432302d2c28231c19171b1f2024282a2b292621201e1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212a36414c565e696e7a81898e91939a98928f8b857d726d635a50443a3021180e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5246464646464646464646464646464646464646525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000c18242f3944505c666f7d87939fa6b0b9c3cbcec5bcb3aea59e9b96918f8d8e91959b9fa4acb3bbc4ccccc3b9afa59f92857a6e61574d4231281d12070000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000002090e12151a1e2122252729292a2a29282623201f1c18120d0b0f1213171b1e1e1d1a1514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d1925303a444d575e686d757c818586878785827f79706c635b51483e32281e0f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245393939393939393939393939393939393945525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000007121d28343f4a54606b73808d949fa7b1b9c2cacec5bebaafaaa8a09e9b9a9b9da0a7acafb6bec4cdccc4bab1a79e938b7e71685e52453b311f160c010000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2c3945525f6c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000205090e121415181a1c1d1d1d1c1b19161312100c0700000305060a0f1111100d080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323b454d565e616b6f7478797b7a7976726d67615951493f362c20160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c2c2c2c2c2c2c2c2c2c2c2c2c2c2c3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000010c17232e38424f59606d78828f95a0a7b0b8c0c9cecac1bbb6b2acaaa8a7a8aaacb1b9bbc0c7d0cbc2bab2a8a0958f82756c62564c41332a1f0d04000000000713202d3a4653606d798693a0acb9c6d3d3c6b9ada093867a6d6053473a2d2834404b546c7885929fabb8c5d2d4c7baaea194877b6e6154483b2e2b3844515e6b7784919eaab7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000020608080b0d0f1010100f0e0c09070604000000000000000002040403000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c162029333b444c5259606367666d6e6d6c6565605d554f473f372e241a0e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f1f1f1f1f1f1f1f1f1f1f1f1f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000006111c26303d44505c666d798390959fa6aeb9bdc4caccc6c3bdb9b7b5b4b5b7b8bcc3c8cccfc6bfbab0a8a0969183796d605a50443b3021180e00000000000713202d3a4653606d798693a0acb9c6d3d3c6baada093877a6d6054473a2d2c3845515c667985929facb8c5d2d4c7bbaea194887b6e6155483b2e2a36424d566b7884919eabb7c4d1d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129323a41464f5456545c606161605b5353514b433e352e251c11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f13131313131313131313131f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000a151e28343f4a545d676d7a8390949da4acb2b9bec5c8cdc8c5c4c2c0c1c4c5c8cecbc7c1bdb4aea69f9691847b6e675d51483f32291e0f0600000000000713202d3a4653606d798693a0acb9c6d3d4c7baaea194877b6e6154483b2d2d3a4653606d798698a2aebac6d3d5c8bbafa295887c6f6255493c2e2d3a46525e697885929fabb8c5d2d4c8bbaea195887b6e6255483b2f2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17202830353d4348494b5153545453504947454039312c231c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060606060606060606121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000030c17232e38424c555e686d7a828d929ea0a8adb3b8bcc2c4c6c9cfc9d2ccc7c6c4bfbab9b0aba39f948f847b6e695e554b41362d20170d0000000000000713202d3a4653606d798693a0acb9c6d3d6c9bcb0a396897d706353493f33333c4855626f7b8895aab4bfcad6d7cabdb1a4978a7e7164544a4034323b4754616e7a8798a2aebac6d3d4c8bbaea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e252932383b3c404546484746443f3a39352f271f1a110a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000006111c26303a434c565e686d78808991969ea1a9acb1b5b8b9bebcbdbcc0bbb9b7b4aeaca69e99928c827a6e695e574d433a2f241b0e050000000000000713202d3a4653606d798693a0acb9c6d3d9ccbfb2a6998c7f73655b50443d3d45505a65727f8b98a5b2bed0dbdacdc0b3a79a8d8074665c51443d3c444f5964717e8a97aab4becad6d4c8bbaea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c131921272c2f2e34383a3b3a3937332d2c29241d150d080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000a141e28313a444c565d666d747d848c92979da0a7a9abadb3afb0b0b5afacababa39f9b948f867f786d685e574d453b31281d1209000000000000000713202d3a4653606d798693a0acb9c6d3ddd1c4b7aa9e9184786c60574e49494e57616c7783909daab6c3d0ddded1c5b8ab9e9285796d60584f4a494e56606b76828f9ca9b5c2d0dbd4c7bbaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d161b1f2223282c2d2e2e2d2b27221f1d18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000020c161f29323a444c545c606b70797f858b9095989c9ea1a9a2a3a3aba49f9e9b99928e89827c736d665e564d453b33291f160c00000000000000000713202d3a4653606d798693a0acb9c6d3ded2c5b8aca0968a7e716960585656586069717e8a95a0acb8c4d1dedfd2c6b9ada1978b7f726a60595656585f68707d89949fabb7c3d0e2d5c9beb3a994877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315181c1f202121201f1b1713100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000040d172029323a424a505960676d727a7f83888c8f919795969696969993918e8b86817c756f6a605c544c443b332921170d0400000000000000000713202d3a4653606d798693a0acb9c6d3e1d4c8bdb2a89e91857b6f6a646363646a6f7b85929ea7b1bcc8d4e0e2d5c9beb3a99f92857c6f6b656363646a6f7a84919ea6b0bbc7d3dfd2c6b9ada197867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307070c101313151413120f0b060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000050e17202830383f444f555d60676d72777c7f82858788898a8989888684817e7a756f6b625f58514a423a322921170f050000000000000000000713202d3a4653606d798693a0acb9c6d3e5d9cec3b9ada19791847c7571707071757c849197a1adb9c3cdd9e4e6dacfc5baaea29891857d7571706f71757c839196a1acb8c2ccd8ded1c5b8ab9e928578675d5145392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f0000000000000000000000050e161e262e343d434b51555d60656a6f7276787a7b7c7d7d7c7b7a7875716d68636059534e444039302820170f05000000000000000000000713202d3a4653606d798693a0acb9c6d3dfe0d5c9beb3a9a0969187827e7c7c7e82879196a1a9b3becbd5dfe8e3e1d6cabeb3aaa1979188827e7d7c7e81869195a0a8b2bdcad4dedccfc2b6a99c8f837669554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b5c1cedbd2c5b8ab9f9285786c5f5245392c1f12060000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f000000000000000000000000040c151c2328313940454b5153585f626569686d6f6f70706f6f6d676864615e56544f47433c342e271e160e0500000000000000000000000713202d3a4653606d798693a0acb9c6d3dfe6dacfc4bbb2a8a099928f8b89898b8f9299a1a8b2bbc5cfdde5ddd7d2cfd0c5bcb2a9a19a938f8b89898a8e9299a0a7b1bac4cedce1d4c8bdb2a8998d8073665a4d402f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b4c1cedbd1c5b8ab9e9285786b5f5245382c1f12050000000000000005121f2b3845525e6b7885919eabb8c4d1dbcec1b5a89b8e8275685b4f4235281c0f00000000000000000000000000030a11171f272f353a4045474e535559565d60626363636362605c555854524c48433d373128231c150c050000000000000000000000000713202d3a4653606d798693a0acb9d0dbe7dfd6cfc9c4bab2aba39f9b979696979b9fa3abb2bac4cdd6e1dbd3ccc6c3c1bcc4bbb2aca49f9c989696979b9fa3abb1b9c3ccd6e2d8cfc6b8aca096897c6f6256493c2f2316070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7b4c0cfd6d1c4b7aa9e9184776b5e5144382b1e11050000000000000004111e2b3744515e6a7784919daab7c4d0d6d0c1b4a79a8e8174675b4e4134281b0e000000000000000000000000000000060d151d24292f35393c4347484c4c525455565756565553514b4b4746413a38322b262018120b03000000000000000000000000000713202d3a4653606d798693aab4becad6e1d6cdc5beb9b8b7b5afaca8a4a3a3a4a8acafb5bdc4ccd6dfddd7c9c1bab6b5b0b8b9beb6afaca8a4a3a2a4a8acaeb4bdc3cbd5ded9d0c6bcb1a79e9184776a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a7b1bdc6cac7c0b5ab9c8f8376695c504336291d100300000000000000030f1c2936424f5c6975828f9caab4bfc7cbc7beb2a8998c7f7366594c403326190d00000000000000000000000000000000030b12181d24292c31373a3c3f41454748494a4a49484745403e3a3936302c27211a150c070000000000000000000000000000000613202d394653606c798698a2aebac6d3dacfc5bbb3adabaaacb1b9b5b1afafb1b5b9bbc0c7cfd6ded9d2ccc1b7afaaa8a3abadb2bbbbb9b5b1b0afb1b5b9babfc6cfd5dbd6cfc7beb4aaa0958b7e7165584e43382b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a0abb4babfbbb9afa4998c807366594d4033261a0d0000000000000000000c1926333f4c5966727f8c98a3aeb9bbbfbab5aca096897d706356493d3023160a000000000000000000000000000000000001070c13181d20262b2e2f2f35393a3c3c3d3d3c3c3a38342f2e2d2a251e1b160f0a030000000000000000000000000000000006121f2b3844505b667885929fabb8c5cfd0c9beb3a9a19e9da0a7b1bbbebcbcbec2c5c7cbd1d9d6d3d0c7c0bbafa59e9b969ea1a9afb9bec2bebcbcbdc1c5c7cbd1d8d4d0cac3bdb5aca3989083786d6053463d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a77839099a2aaaeb4afaca59f93877b6e6155483b2e2215080000000000000000000814212e3b4754616e7a86929fa4acafb4aeaba39a9184786c605346392d2013060000000000000000000000000000000000000001070d11151b1f212224292c2d2f303030302f2d2c292321201d19130f0a04000000000000000000000000000000000000030f1c28333f4a546a7683909da9b3bdc3c4bfb9ada197929095a0a9b2bbc0c7cad0cfcfcfcfd0cac6c2bdb5afa69e938e8991979ea5adb3babfc6c8ceced0cfced2ccc8c5bebab2aba39a92867c6f665c5044382b20160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58636f7d8792989fa2aaa49f9d938d8073695f53463a2d2114070000000000000000000714202d3946525e68727f8c929c9fa3aaa39f9992887d70665b5044382b1f120600000000000000000000000000000000000000000001040a0f121515191d2021222324232322201f1c181413110d08020000000000000000000000000000000000000000000b17222d3f4c5966727f8c97a2abb3b7b7b4aea49e9285839097a1a8afb6babfc1c2c3c3c2c1bebab8b1aba49f948e817d858f939ea1a9aeb4b8bdc1c2c3c2c1c1c0bbb9b4aea8a09992887e716a60544a3f3428190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4854606b717e868e9298969993908a81786d60574d42362a1e120500000000000000000005111e2a36414c56636d7380898f92999698928f877f726b61544a3f33281c0f03000000000000000000000000000000000000000000000000030608080d1113141516171716151413100c0707050100000000000000000000000000000000000000000000000614212d3a4754606d7a859299a2a9aaaaaaa29f928a7e7b8591969fa4acaeb4b4b5b6b6b5b4b3adaba79f99938d8279707a828a92979fa2aaacb2b4b5b6b6b5b4b6afacaaa29f9691877e716c61584e42382e2317070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202c38434f59616c717b818588898886837e756d665c50453b31261a0e02000000000000000000020e1925303b44515b646e737d838688898886827c726d62594f42382d22170b00000000000000000000000000000000000000000000000000000000000104060709090a0a0909070604000000000000000000000000000000000000000000000000000000000713202c3945525d68707d8792979c9d9d9c98928b80736f7c848e939a9fa2aaa7a9a9a9a9a7a9a29f9b95908780786d686d757e858d92989ea0a8a7a8a9a9a8a7aca49f9d98928d847c716c625a50463c30261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b27323d47505a61696e75797b7c7c7a76716c605c544a3f332a1f1409000000000000000000000008141e29323f49525c646b70767a7c7c7b79756f6a625b51473e2f261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616b707d858c8f90918f8c867f736e6a6f7a81878e9298999b9c9c9c9c9a9897928e89837c736c665e616c717a80868c9196989a9c9d9c9b9a999a93908b8580796f6a625a50483e342b1e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212b353e4850575f62666d6f6f6f6d6864615a504a42382e21180e030000000000000000000000020d17202e37404a52596063676d6f6f6f6d6762605851493f352c1d140a0000000000000000000000000000000000000000000000000000000000000406070a0c0d0c09060503000000000000000000000000000000000000000000000000000000000000010d19242f3a444f59616b707a7f828484827f7a726d645f686d757c8185898c8e8f90908f8e8c8985817c766f6a605b545a61686d737a7f84888b8e8f908f8e8e8c8a86847f7a736d67605850483e362d22190c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19232c363e454d53545c60626362605d565550443f3830261c0f0600000000000000000000000000050e1c252e3840474f54555d60626362605c55544e463f372d231a0b0200000000000000000000000000000000000000000000000000000001070c10131417191a191613120f0b06000000000000000000000000000000000000000000000000000000000008131e28323e474f5961686d7276777776726e68625b565d616a6f74797c7f8182838382817f7c79746f6b626058504a50565d60686d73777b7e818283838281807d7a77726d67605d554e463e362d241b10070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a242c333c42474a515355565554524c49453e342e261e150a0000000000000000000000000000000a131c262e353d44484c515455565553514b47433c342d251b1108000000000000000000000000000000000000000000000000000000030b12181d1f202426262523201f1b17110a02000000000000000000000000000000000000000000000000000000010c16202c353e474f565d6065696a6a6966615e56514c52585f62676d7072747676767674726f6d66636059544e443f444c52565e61666a6f7274757676757473706d6865605d55514b433d342d241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a212a3137394044464849494745413a393328231c150c03000000000000000000000000000000010a141c232b33383a4145474949484745403937322b221b1309000000000000000000000000000000000000000000000000000000090d151d24292c2d303233322f2d2b27221b140b07000000000000000000000000000000000000000000000000000000040d1a232c353e444c5254595c5d5e5c5954524c4441464e53555c6063666869696969676562605c54544f47433d333a41454c5254585f626567696a6968676663605d5654514c454039312b221b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f1820262b2e34383a3c3c3c3a3935302d282217110a030000000000000000000000000000000000020a111a21272c2f35393a3c3c3c3a38342f2b27201910090000000000000000000000000000000000000000000000000000020b131b1f272f35383a3d3f403f3c3937332d261d19110800000000000000000000000000000000000000000000000000000008111a232c323a4145474c4f51514f4c4746413b353c43474b515356595b5c5d5d5c5b595653514a48443d3732282f353a4146474e5355585b5c5d5c5b5b595754524c4745413a352f271f19100900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1c23282c2d2f302f2d2c29241e1c170c06000000000000000000000000000000000000000000080f161c1e24292c2d2f302f2d2c29231d1b150e070000000000000000000000000000000000000000000000000000000b141d252d31394045474a4c4d4c4946443f382f2b231a120800000000000000000000000000000000000000000000000000000008111a20282f35393a3f434444433f3b39363029323739404546494c4e4f50504f4e4c494644403938322b272024293035393c4347484b4e4f50504f4e4d4a4745413a39352f29241d150d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181c1f2022232221201d1913110c050000000000000000000000000000000000000000000000050b1013191d2021222322201f1c18120f0a0400000000000000000000000000000000000000000000000000000009121d262f373f434b51535759595856535049413d352c241a1006000000000000000000000000000000000000000000000000000000080d161e24292c2d3236373736332e2d2a2520262b2e34383a3d3f4143434343413f3c3a38342e2c27211b16191e25292d31373a3c3f414243434241403d3a3935302c29241e18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1012131516161413110d080200000000000000000000000000000000000000000000000000000001080d1113141616151413100c070100000000000000000000000000000000000000000000000000000000030d1b242f38414951555d606365666562605b534f473e362c22180e03000000000000000000000000000000000000000000000000000000040c13191d202126292a2b292621201e19151b1d23282c2d3033353636363634322f2d2c28231c1b160f0a0d13191d20262b2e2f3234363736353433302d2c2924201d19130c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090909070704010000000000000000000000000000000000000000000000000000000000000001040607090909070604000000000000000000000000000000000000000000000000000000000000010b151f2d36414a535b62676d707273726f6c65605950483e342a20150a0000000000000000000000000000000000000000000000000000000001080d111314191c1e1e1c191414110e0a0f12181c1f20232628292a2a29282623201f1c18120f0a040002080d11151a1f21222528292a292828262421201d1913110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313f48535c646d72797d7f807f7c78706b615a50463c31261b0f010000000000000000000000000000000000000000000000000000000000010407070c101111100c080705020000070c10131316191b1c1d1d1c1b19161312100c0700000000000001050a0f121515181b1c1d1d1c1b1a171413110d0804010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080a0b0b0c0c0c0b0a0908070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3943505a646e747f858a8c8c8b89837d716c61584e43372b1e130800000000000000000000000000000000000000000000000000000000000000000000030404030000000000000000000406070a0c0e101010100e0c090706040000000000000000000000030608090c0e0f10100f0e0d0a07070401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608070c101213151717181919181817161414110d08070705010000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55626d74808b92979899989591877e716a5f53473a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060a0f121515181c1f202223242525262525242321201e19171413110d0804010000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c67717e8b929ea1a9a6a7a09992867c6f62564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12151b1f212223282c2d2e30313232323231312f2e2d2a252421201d1913110d080100000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7985919ea4adb3b3b1aba3988f8275685d5245392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10151a1f21262b2e2f2e34383a3b3d3e3e3f3f3f3e3d3c3b393630312e2d2a25201d19130e08020000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a97a1adb9bebfbdb4aa9f92867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161c20262b2e32373b3c3f404446484a4a4b4c4c4b4b4a49474641403e3a3936302c29241e19140c0701000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a9b3becacfc6bbafa399897d7063564a3d3023170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c151b21272c31373a3c4347484c4a51535556575858595858575654524c4d4a4746413a39352f2a251e18120b030000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b4c0cfd7cbc0b5ab978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b33383c4347484e535558545c6061636465656565646462615e565a5754524c4745413a363029241d150d0600000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1cedcd1beb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151d242931373d44484e5355585f626568666d6e70717172727271706f6e686a6764615e5654514c46413b352f271f17110a020000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f181f272f353c43474f54585f62666a6f727577797b7d7d7e7f7f7e7e7d7c7a797673716d6865605d55524c4540393128231c140c0400000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a212a313940454e535960636a6f73777c7f81848688898a8b8b8c8b8b8a89878583807d7a76716d67615e56514b433d342e261e160e05000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a232c333b434b51585f626b70767b8084888b8e9193999697989898989797959892908d8a86827e7a736e68605d554f443f38302820160e050000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a242c353e454d555d606a6f767d82888d9196989b9e9fa4aba4a4a5a5a5a4a3aaa29f9d9a99928f8b85807a736d676159504a423a322820170e0500000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242c363e474f575f676d737c83898f94999ea0a8a8aaacafb5b0b1b2b2b1b1b0b4aeaca9aba39f9c97928d868079706b605c544c443a322920170d03000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19232c363e48505961696e79808790949c9fa6aaacb2b4b7b9bbc0bdbebebfbebebdbfbab8b6b5afaca9a29f98928d847d736d665d564c443b32291f150b010000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212b353e48505a616b707b838d92999fa6abb0b7b9bdc1c4c6c7ccd2cbcbcbcbcad0cac6c5c3c0bbb9b3adaaa39f96918880786d685e564c443b31271d12070000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a333d47505a616c717d8590959fa3abb0b7bbc2c5c9ced1d2d4d7ddd5d5d4d5d6dbd6d3d2d1cbc7c5bebab4aea8a09a938d827a6d685e564c43392f23180f0600000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454f59616c717e879297a0a7afb5bdc2c7ccd2d5d9d4d1d0cdcac9c8c7c8c9cbced1d2d6d7d3d0cac6bfbab2aca49f948f837a6e685e554b40342921180b02000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424d57606b717e879299a2a9b1bbc0c7cfd3d8d7d4cec8c5c4c0bebcbbbbbbbcbec1c5c6cacfd4d9d6d0cbc4beb6afa69f9590837a6e675c51453f332a1d140a000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545f69707d879299a3abb3bcc3cbd1d9d9d2ccc7c3bcb8b7b3b1afaeaeaeb0b2b4b8b9bec5c8cdd6dcd6d0c7c0bbb0a7a0959083796d605b51453c2f261c11060000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c3845515c666e7b859299a3abb5bdc5ced7dcd5d0c7c0bbb9b1acaaa7a4a2a2a1a2a3a5a8abadb3b8bcc3cbd0d8d9d2ccc2b9b1a79f958e81756d62574d42382d22170b0000000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b37434e58606d79839097a2abb5bdc6cfd7dbd3cbc3bdb5afaca7a09d9a979695949596989b9ea2a9acb1babfc6ced6ddd8cbc3b9b1a79e938b7f72695f544a3f33281c120700000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333b4754606a73808d95a0a9b3bdc6cfd8dbd3c9c1b9b1aba49f9b95918d8b89888888898b8e92979da0a7aeb4bcc4cdd6ddd5cbc2b9afa59f92867b6e665b5044392e23180c00000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59626f7c87929fa7b1bbc5cfd8ddd3c9c1b7afa7a099938e8884807e7c7b7b7b7d7f81858a90959fa3aab2bbc4cdd6ddd4cbc1baaea2989083786c60544a4034281c1004000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b76839099a3afb9c3cdd7e0d4cbc1b7afa59e959087817c7774716f6f6e6f707275797e838b9298a1a9b2bbc5cfd9ddd6cabfb4aa9f958a7e71665c5144382c1f160a000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434f5963707d8a949fabb5c0cbd5dfd8cec2b9afa59e938e837c746f6a6764636261626365666d71787f869197a1a9b3bdc7d1dcdbd0c6bcb1a79e9184796d6053463d32271b0f000000000000000000000000020e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b7783909da6b0bdc7d1dddbd0c6bcb1a79e938e81796f6a625f58585655555556545c60666c727c859197a1abb5c0cbd7e0d8cec2b9aca0968b7e7265594f43382c1c11060000000000000000000000000e1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225180b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56636f7c8995a0acb8c2cfd9e3d6cabfb4aa9f958e81786d675f58534e4b494848484a4a50545b606a6f7c859299a3afbbc4cfdae0d5c9bdb2a89d9084776b605448382e23170b0000000000000000000000060b1b2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e322518130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d6875818e9ba7b1bccad4e1e0d3c7baaea2989083786d665d554e47433e3c3c3b3c3d3f444a50585f6a6f7d87929fa9b2bec9d5e0d9cec4b8aca095897c6f63544a3f34281c10030000000000000000020a11171c2835414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e3225221f1b160f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929facb8c3cddfe1d5c9beb3a99f92867b6e665c544b433c3732302f2e2f2e34383f444e58606b73808c97a1adb9c4cedae0d4c8bcb1a79b8e8174665c5044382b1f120600000000000000080b141c22282b35414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b3e33302f2c27211b160f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495364717e8a98a3aebac7d3e0dfd2c6b9ada1978c8073695e544a4239312b262322222223282d333c464f59606d7984919ea8b2bdc9d5e1d9cec3b8ab9e9285796d6053463a2d20130600000000000008111a1d262d333839414e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b42403c3b38322b2720191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b6575818e9baab4bfcbd6e3d8ccc0b6ac9e92857a6d60574d42392f271f1b16151515171c2228333d45515d67717e8b96a1acb9c5d2dedfd2c6b9ada297897c6f6356493c2d22170b000000000008121a232c2f383f44464a4e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584f4e4c4948433d38322b22191107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7985929eabb8c5d0dce0d4c8bbafa49a8c7f72675d51453b30271d150d0a0908060c1117212935404b55606d7884919eabb7c3ced9e2d6cabeb3a9998d80736653493f33271b0f03000000040d1a242c353d424a505356595b6874818e9ba7b4c1ced7cbbeb1a4988b7e71655c5c5b5956544f47433d342b23190c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8897a1adb9c6d2e2dfd2c6b9ac9f93877b6e61554b4133291e150b030000000000060f18242f3944505c6673808d99a8b2bdc8d4e1dbcfc3b6a99c908376655b5044372b1f12050000010c161f2c363e474f545b606366686974818e9ba7b4c1ced7cbbeb1a4988b7e716969696866636059544e463d352b1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a9b3becad6e2dccfc3b6a99c908376695e52433a2f21170c030000000000000007121d28343f4a54626f7c8896a0acb8c5d1deded2c5b8ab9f9285796c605346392d201306000007121d28313e48505960666c7073757576818e9ba7b4c1ced7cbbeb1a4988b7e7676767575736f6b6260584f473d30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3c0cfdae3d7cbc0b5ab988b7f7265574d4231281d0f050000000000000000010b17232e3847535f6a7784919daab7c4d0dddfd3c6baaea298887b6e6255483b2f22150800010d18242f3943505a616b70787d8081828284919eabb8c4d1ddd0c3b7aa9d908382828282817f7c776f6a60594f43392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9b5c2cfdce0d4c7bbafa399887c6f6255493c3022160c0000000000000000000006111c2b37434e586874818e9ba7b4c1cedae2d6cabeb4aa978a7d7064574a3d3124170a0004101d2935404b55616c707d84898c8e8f8f9196a1adb9c5d2ded1c5b8aca095908f8f8f8f8e8c89837c706b60554b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b556a7784909daab7c3d0dddfd2c5b9ac9f9286796d6053473a2d20140700000000000000000000000f1b26323f4c5965727f8c98a5b2bfcbd8e7dbd0beb2a5988b7f7265584c3f3225190c000613202c3945515d67707e879196999b9c9c9ea1a9b2bdc9d5e0d4c8bcb1a7a09d9c9c9c9c9b999590867d70675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677885929fabb8c5d2deddd0c4b7aa9d918477675c5145382c1f130600000000000000000000000a1623303d495663707c8996a3afbcd1dce8d9cdc0b3a69a8d8073675a4d4034271a0d000714202d3a4753606d79859299a0a8a8a8a9abadb2bbc4cfdae5d9cec3b9b1acaaa9a9a9a8a8a7a0989184796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8698a2aebac6d3dfdbcec2b5a89b8f827568554b4034291c100400000000000000000000000814212e3b4754616e7a8794abb5c0cbd7e3dbcec1b4a89b8e8175685b4e4235281b0f000b1724313e4a5764717e8a97a1abb2b4b5b5b8b9bdc4cdd6e0eadfd5cbc3bcb8b7b5b5b5b5b4b1aaa1968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b8794aab3becad6e2dacdc1b4a79a8e8174675b4e412f23180c0000000000000000000000000714202d3a4753606d7a8699a3afbbc7d3e0dbcfc2b5a89c8f8275695c4f4236291c0f000d1a2733404d5a6673808d99a9b3bdc1c2c2c4c5c9cfd6dfe8f1e7ddd5cec8c5c3c2c2c2c2c1bcb2a8998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894a1aebbd0dbe6dacdc0b3a79a8d8074675a4d4134271a0700000000000000000000000006131f2c3945515d677986929facb9c5d2dfdccfc2b6a99c8f8376695c504336291d10000e1b2834414e5b6774818e9aa7b4c1d0cfcfd1d2d5dae0e8f1f9efe7dfd9d4d1d0cfcfcfcfcfc1b4a79a8e8174675b4e4134281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2aebbc8d5e1d9ccbfb3a6998c807366594d4033261a0d00000000000000000000000004101d2935404b556b7885929eabb8c5d1dedcd0c3b6a99d9083766a5d5043372a1d10000e1b2734414e5a6774818d9aa7b4c0c9cfcacfd0d3d8dee6eef6ede4ddd6d1cecdcacacacec9c0b4a79a8d8174675a4e4134271b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbbc8d5e2d8ccbfb2a5998c7f7266594c3f3326190c000000000000000000000000000c18242f45515e6b7884919eabb7c4d1deddd0c3b6aa9d9083776a5d5044372a1d11000d192633404c5966737f8c99a6b0b9bdbdbdc3c4c7cdd4dce6eee4dbd2cbc5c2c1bdbdbdbdbdb9b0a6998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aebbc8d4e1d9ccbfb3a6998c807366594d4033261a0d00000000000000000000000005121f2b3744505b657885929fabb8c5d2dedccfc3b6a99c908376695d5043362a1d10000916232f3c4956626f7c89949fa8adb2b0b1b6b7bbc2cad4dee7ddd2c9c0bab5b4b1b1b1b0b2aca79f94897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894a1aebbcfdae6dacdc0b3a79a8d8074675a4d4134271a080000000000000000000000000613202d394653606c7986939facb9c6d2dfdccfc2b5a99c8f8276695c4f4336291c10000915222e3b4854606a768290969ea1a9a4a4a9abb0b8c2cdd8e2d6cbc0b7afa9a7a4a4a4a4a8a19e958f82766a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a9b3bec9d5e2dacec1b4a79b8e8174685b4e412f24190d0100000000000000000000000714212d3a4754606d7a8799a4afbbc7d4e0dbcfc2b5a89c8f8275695c4f4236291c0f0007131f2c38434e58616e7b848c91969697979c9fa6b0bbc7d3ded1c5baafa59d9a979797979696918c837a6d61584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798697a1adb9c6d2dfdbcfc2b5a89c8f827569564c4135291d110400000000000000000000000815222e3b4855616e7b8894abb5c0ccd7e3dacec1b4a79b8e8174685b4e4135281b0e00030f1b27323d46525e696e79808488898a8a90949fabb7c4d0dbcec2b5a99d928e8a8a8a8a8987847f796d685e52463d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677885929eabb8c5d1deded1c4b7ab9e918478685d5245392c20130700000000000000000000000a1724313d4a5764707d8a97a3b0bdd2dde8d9ccbfb3a6998c807366594d4033261a0d00000a16212a36424d565e676d73787b7d7d7e82909ca9b6c3cfdacdc1b4a79a8e807e7e7e7d7d7b78726d675e564c41342b20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b556a7783909daab6c3d0ddded2c5b9aca196877a6d6054473a2d21140a0000000000000000000003101c28343f4a5466737f8c99a6b2bfccd9e4d8cbbeb1a5988b7e7265584b3f3225180c0000040e1925303b444d555d6066696e707174818e9ba7b4c1ced7cbbeb1a4988b7e71717171706e6966605c554c443a3022190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e424f5c6875828f9ba8b5c2cedbe1d5c9bdb2a896897c706356493d32261b0f0300000000000000000006121f2b3844505c6675828f9ba8b5c2cedbe1d5c9beb3a9968a7d7063574a3d3024170a00000009141f29323b434b5153575f61636874818e9ba7b4c1ced7cbbeb1a4988b7e7165646463615e5753514b433a32291e1007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071a2633404d596673808c99a6b3bfced9e5dacebfb2a6998c7f7366584e43372b1f14090000000000000000010713202d3a4653606d7985929eabb8c5d1dedfd2c6b9ada197877b6e6154473b2e211408000000020d17202931394045474d53555b6874818e9ba7b4c1ced7cbbeb1a4988b7e716558575654534d47454039312920170d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a8b2bdc8d4e1ddd0c4b7aa9d9184776a5f53473b31261a0f050000000000000009111d2935414c5663707d8997a1adb9c6d2dfded1c4b8ab9e918578695e52463a2d20140700000000050e171f282f35393b42464e5b6874818e9ba7b4c1ced7cbbeb1a4988b7e7165584b4a4846423b38342f271f170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8796a0acb8c5d1deded1c5b8aca095887c6f62574d42362a21170e07000000000309121b252c3945525d6874818e9ba9b3bec9d5e1dbcfc2b5a89c8f827569574d42362a1e11050000000000050d161d24292c3136414e5b6874818e9ba7b4c1ced8cbbfb2a5988c7f7265555453504a48443d352e261c120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687784919daab7c4cfdae1d4c8bdb1a89a8d8074695f53463d33292018120e09060c10141a242a36424d57606d7a85929fabb8c5cfdae1d5c9bdb2a8988c7f7265594c3f30251a0e02000000000000040c12181d202635414e5b6874818e9ba7b4c1cedacdc1b4a79a8e8174676261605c54544f4740382e241a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d566773808d9aa9b2bec9d5e3d9cec3b9ac9f92867b6e61594f453b3228231d1a1919171c1f262b363e46535e6973808d98a2aebac6d6e1ded2c5b9aca096887b6e6255483b2f221509000000000000000001070d101b2834414e5b6774818e9aa7b4c1cddad1c4b8ab9e918579716f6d6d66636059524a40362c22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303d495663707c8997a1adb9c7d1dce0d3c7baaea3998e81756b60574d443c342e2a26262623282c31373f48515b616e7b86929faab3becad6e4d8ccc0b6ac9e9184776a5f53473a2e21140800000000000000000000010d1a2733404d5a6673808d99a6b3c0d0dbd2c6b9ada19791837e7b7a7975706b635c52483e33281c1002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202d3a4653606d7984919eabb5c0cbd7e3d7cbbfb4ab9e93897d70695e564e454039363133322e34383c4246515a626d75828f98a3aebcc5d0dbe0d4c8bbafa49a8d807366584e43372b1f120600000000000000000000000c1825323f4b5865727e8b98aab4bfcad6d5c9beb3a9a095918a888785827d736e635a5044392d1e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6673808c99a3afbbc7d1dcdcd1c6bdafa59e92857b6e685f58514b464240403f403f44464d535b636c727f8c939eaab4bfced7e1d9d0c6b9ac9f93877b6e6155483c31261a0f020000000000000000000000091623303c4956636f7c8998a2aebac7d3dacfc4bbb1a7a09d979598928f8980736c6155493a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87929fabb5c0cbd7e1d8cfc1b9ada19791847a6f6a605c54534d4d4c4c4c4a5053575f616d727e87939fa5afbcc6d1e0ddd2c7beb0a69c8f8276695f53463a2a2015090000000000000000000000000714202d3a4753606d7986929facb8c2cfd9d6cdc3b9b1acaaa4aaa29f9c928a7e7064564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846535e6975818e99a3afbbc4cfdae1d5c9beb3a9a09691847c726d66615f575a595959545c6063696e767f879299a4afb7c1cfd8e1d8ccc0b6ac9f94897d7063574d42362a180e0300000000000000000000000006131f2c3845515d6775828f9ba7b1bdc7d1dcd5cbc3bcb8b7b0b4aeaca49d908376685d5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36424d57616e7b87929fa9b3bec9d5dcdacfc5bbb2a8a09691867f79736e69686766656667666d70757b828c9299a3abb5c0c9d3e1d9cfc7bbafa49a8f82766b6054453b31261a060000000000000000000000000004101d2935404b5563707d89959fabb5c0cbd6dbd5cec8c5c4bdbfbab8ac9f93867a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313b46535f6974818d97a1adb9c0cad4ded6cdc3bab2a8a098928c847f7b7775737372737476797c81868f949fa3abb5bdc7d2dcdcd1c7bdb2a89f93877c6f62594f4433291f140900000000000000000000000000000c18242f394653606c78839099a3afbbc1cad0d7d9d4d1d0d0cac6bbafa49a897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424d57616d7a85919ea5afb8c2ccd6ded5ccc3bab2aaa29f96918c888482807f7f7f818385898e92999ea6afb5bdc7d0d9dbd7cbc0b5aba0968d81746a6054473d3321180d03000000000000000000000000000007121f2b3744505b656f7c87929fa5afbabfc6cbd1d1d2d2d2d1cabeb3aa96897c706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c46525d68707d8a939da6b0bac4ccd5ded5ccc4bcb4aea8a19e9996918f8d8c8c8c8d8f92989b9fa3abb0bbc0c7cfd9dcd7c8c0bbafa3999184796d60584e43352b210f06000000000000000000000000000000030f1b27333f4953606a73808c939da5aeb4babfc3c5c5c5c5c3c0baaea298887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935414c56616b74818e949fa8b2bac3ccd8ddd6cec6bfbab2adaba8a09e9b9a9998999a9c9fa2aaacaeb5bdc2cbd1d9d8d1cbc0b6aea49f92877d6f675d51463c3223190f00000000000000000000000000000000000b17222d38414e58606c77818e939fa2aaaeb4b6b8b9b9b8b7b5afa79f9285796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1924303a444f59606d78829096a0a8b2bac2ccd2d9d8d0cac4bdb9b8b2acaaa8a6a6a5a6a7a9abaeb3b9bbbfc6cfd7dcd7cfc6bfbbaea49d928b7e716b60554b40342b201108000000000000000000000000000000000006111b262f3d44505b656d78818b92989fa3abaaabacacabaaaba39f958d8074675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323e45515c666d7a849196a0a8b0bbc0c7d0d5dad6cfc9c5c4bdb9b7b5b3b2b2b2b4b6b8babec5c7cbd1d8d9d2ccc4bdb5aea49d928d80736d62594f43392f22190f000000000000000000000000000000000000000a141d27333f49535c666d747f868e92999b9d9e9f9f9f9d9b99928d83796d60554b4034291c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202834404b545e686e7b8491969fa6afb6bec3c9cfd4d9d5d2cec9c5c4c2c0bfbfbfc0c2c5c6cad0d3d7d7d3d0c7c0bbb2aba39f928d80776c605a50473d31281d100700000000000000000000000000000000000000020b17222d38414a545c606d727b81868b8e9092929292908e8b8681796d675d5143392f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232e39424c565e696e7b848f949fa4acb1b9bec4c8ced2d5d9d5d2d1cecdcccbcccdcfd2d3d6d7d3d1cbc7c2bdb5afa8a199928b80746c655b50483f352b1f160c00000000000000000000000000000000000000000006111b262f38424a505b62696e747a7e81838586868584827f7b746d675d554b4031271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303a444d575e696e7a828d939aa0a7adb3b8bdc3c5c9ceced0d2d3d6dbddd8d4d2d1cfd1cbc7c5c0bbb9b0aba49f9691877f736e605b53493f362d23190d04000000000000000000000000000000000000000000000a141d2630383f4451575e61686d717477787979787775726e69605d554b43392f1f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e28323b454d575e686d78808890959ea1a9acb2b7b9bdc0c2c3c5c6cad0d2ccc8c6c4c3c1bfbab9b5afaca69f99938d847c726d645c504941382d241b10070000000000000000000000000000000000000000000000020b141e262e343f454d53565d6064686a6b6c6c6c6a6865615e56514b433931271d0d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162029333b454d565e666c737c838b91979da0a8aaacb2b3b5b7b8babfbabac0bbb9b8b6b4b4aeacaba39f9b948f87807a6f6a625b52443f382f261b120900000000000000000000000000000000000000000000000000020c141c2328333b42464c5254585b5d5f5f5f5f5d5b5854524d45403931281f150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172129333b444c545b606b6f787f858b91969a9ea0a8a6a8aaacaeb4adaeb6afacaba9a8aba39f9c99928e89827c746d686058514940332d261d140a000000000000000000000000000000000000000000000000000000020a1117212931363a4145474b4e5052535352514f4c4746423b352f281f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f172129323a424a505960666d72797e84888d9196979a9b9d9fa2aaa1a1a0a49f9e9c9b9999928f8b86827c766f6a605d564e463f3727221b140b020000000000000000000000000000000000000000000000000000000000060f171f252a3035393a3e41444546464544423f3b3a363029241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1720282f383f444f545c60676d71777c8084878a8d8f909298939494949a9391908e8c8986827e7a756f6a626058524c443d342d2517110a0200000000000000000000000000000000000000000000000000000000000000050d141a1e24292c2d313537383939393735322e2d2a251f18120c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161d262d333d424a50555c60656a6f73777a7d80828485868787878786868583817f7c7976716d68626058544e45413a322b221b13060000000000000000000000000000000000000000000000000000000000000000000003090e13191d202125282a2c2c2c2c2a282521201e19140d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b141c222830383f444b515358606267686e7173757779797a7a7b7a7a79787675726f6d6765615e56544e47433c352f28201910090000000000000000000000000000000000000000000000000000000000000000000000000002080d111314181b1d1f20201f1e1c191414110e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e262e34394045464e5455565e616467686a666d6d6e6e6d6d6c6669686663605c5554524c47433d373229241e160d0700000000000000000000000000000000000000000000000000000000000000000000000000000000010407070b0e1112131312110f0c0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c23282e34383c4347494d5254575a5c545c606061616160605b545b595653514b4746413a37322b272019130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d23282c32373b3c4146474a4d4f4a5153545454545353504a4e4c494745403a3936302b27201b150d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12181c1f272b2e3036393b3e4042404446474748474746443f423f3c3a38342f2d2a251e1b150f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10151b1f22252a2d2e31342e34383a3a3b3b3a3a3938332d33302d2c2923201d19130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315191e2021242723282c2d2d2e2e2e2d2d2b28222623201f1c1813110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080e111414171a181c1f202121212120201f1c1719161413100c070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b070c101213141415141413120f0b06090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607070808070706060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 m_StreamData: serializedVersion: 2 offset: 0 @@ -964,6 +964,118 @@ MonoBehaviour: m_Height: 69 m_Scale: 1 m_AtlasIndex: 0 + - m_Index: 59 + m_Metrics: + m_Width: 82.4375 + m_Height: 65.796875 + m_HorizontalBearingX: 2.0625 + m_HorizontalBearingY: 65.265625 + m_HorizontalAdvance: 85.03125 + m_GlyphRect: + m_X: 709 + m_Y: 100 + m_Width: 83 + m_Height: 67 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 16 + m_Metrics: + m_Width: 21.96875 + m_Height: 28.171875 + m_HorizontalBearingX: 0.796875 + m_HorizontalBearingY: 14.421875 + m_HorizontalAdvance: 23.640625 + m_GlyphRect: + m_X: 10 + m_Y: 289 + m_Width: 23 + m_Height: 29 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 24 + m_Metrics: + m_Width: 55.8125 + m_Height: 65.796875 + m_HorizontalBearingX: 0.796875 + m_HorizontalBearingY: 65.265625 + m_HorizontalAdvance: 57.3125 + m_GlyphRect: + m_X: 709 + m_Y: 186 + m_Width: 57 + m_Height: 67 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 28 + m_Metrics: + m_Width: 46.96875 + m_Height: 67.59375 + m_HorizontalBearingX: 5.234375 + m_HorizontalBearingY: 66.140625 + m_HorizontalAdvance: 57.3125 + m_GlyphRect: + m_X: 623 + m_Y: 187 + m_Width: 48 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 26 + m_Metrics: + m_Width: 46.625 + m_Height: 67.59375 + m_HorizontalBearingX: 5.40625 + m_HorizontalBearingY: 66.140625 + m_HorizontalAdvance: 57.3125 + m_GlyphRect: + m_X: 555 + m_Y: 235 + m_Width: 48 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 61 + m_Metrics: + m_Width: 51.8125 + m_Height: 65.796875 + m_HorizontalBearingX: -0.609375 + m_HorizontalBearingY: 65.265625 + m_HorizontalAdvance: 50.671875 + m_GlyphRect: + m_X: 482 + m_Y: 268 + m_Width: 53 + m_Height: 67 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 37 + m_Metrics: + m_Width: 56.859375 + m_Height: 66.671875 + m_HorizontalBearingX: 0.265625 + m_HorizontalBearingY: 66.140625 + m_HorizontalAdvance: 57.390625 + m_GlyphRect: + m_X: 396 + m_Y: 335 + m_Width: 58 + m_Height: 68 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 45 + m_Metrics: + m_Width: 14.59375 + m_Height: 65.796875 + m_HorizontalBearingX: 3.34375 + m_HorizontalBearingY: 65.265625 + m_HorizontalAdvance: 21.21875 + m_GlyphRect: + m_X: 785 + m_Y: 186 + m_Width: 15 + m_Height: 67 + m_Scale: 1 + m_AtlasIndex: 0 m_CharacterTable: - m_ElementType: 1 m_Unicode: 32 @@ -1185,6 +1297,38 @@ MonoBehaviour: m_Unicode: 67 m_GlyphIndex: 39 m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 59 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 16 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 52 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 28 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 26 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 61 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 45 + m_Scale: 1 m_AtlasTextures: - {fileID: -3274811242726015489} m_AtlasTextureIndex: 0 @@ -1407,6 +1551,38 @@ MonoBehaviour: m_Y: 170 m_Width: 72 m_Height: 88 + - m_X: 699 + m_Y: 90 + m_Width: 102 + m_Height: 86 + - m_X: 0 + m_Y: 279 + m_Width: 42 + m_Height: 48 + - m_X: 699 + m_Y: 176 + m_Width: 76 + m_Height: 86 + - m_X: 613 + m_Y: 177 + m_Width: 67 + m_Height: 88 + - m_X: 545 + m_Y: 225 + m_Width: 67 + m_Height: 88 + - m_X: 472 + m_Y: 258 + m_Width: 72 + m_Height: 86 + - m_X: 386 + m_Y: 325 + m_Width: 77 + m_Height: 87 + - m_X: 775 + m_Y: 176 + m_Width: 34 + m_Height: 86 m_FreeGlyphRects: - m_X: 169 m_Y: 32 @@ -1456,26 +1632,14 @@ MonoBehaviour: m_Y: 208 m_Width: 40 m_Height: 53 - - m_X: 0 - m_Y: 279 - m_Width: 56 - m_Height: 67 - m_X: 634 m_Y: 69 m_Width: 45 m_Height: 19 - - m_X: 699 - m_Y: 88 - m_Width: 46 - m_Height: 935 - m_X: 545 m_Y: 84 m_Width: 21 m_Height: 57 - - m_X: 613 - m_Y: 141 - m_Width: 21 - m_Height: 882 - m_X: 422 m_Y: 85 m_Width: 22 @@ -1496,14 +1660,6 @@ MonoBehaviour: m_Y: 173 m_Width: 19 m_Height: 68 - - m_X: 472 - m_Y: 258 - m_Width: 551 - m_Height: 765 - - m_X: 472 - m_Y: 241 - m_Width: 11 - m_Height: 782 - m_X: 157 m_Y: 261 m_Width: 6 @@ -1516,18 +1672,6 @@ MonoBehaviour: m_Y: 223 m_Width: 18 m_Height: 40 - - m_X: 386 - m_Y: 263 - m_Width: 17 - m_Height: 760 - - m_X: 386 - m_Y: 325 - m_Width: 637 - m_Height: 698 - - m_X: 312 - m_Y: 353 - m_Width: 711 - m_Height: 670 - m_X: 312 m_Y: 314 m_Width: 10 @@ -1536,10 +1680,6 @@ MonoBehaviour: m_Y: 351 m_Width: 14 m_Height: 13 - - m_X: 234 - m_Y: 404 - m_Width: 789 - m_Height: 619 - m_X: 234 m_Y: 364 m_Width: 10 @@ -1580,22 +1720,10 @@ MonoBehaviour: m_Y: 243 m_Width: 2 m_Height: 71 - - m_X: 613 - m_Y: 177 - m_Width: 199 - m_Height: 846 - - m_X: 699 - m_Y: 90 - m_Width: 113 - m_Height: 933 - m_X: 877 m_Y: 86 m_Width: 3 m_Height: 2 - - m_X: 545 - m_Y: 225 - m_Width: 393 - m_Height: 798 - m_X: 1009 m_Y: 0 m_Width: 14 @@ -1604,10 +1732,6 @@ MonoBehaviour: m_Y: 0 m_Width: 13 m_Height: 1023 - - m_X: 613 - m_Y: 179 - m_Width: 325 - m_Height: 844 - m_X: 880 m_Y: 171 m_Width: 58 @@ -1616,6 +1740,90 @@ MonoBehaviour: m_Y: 86 m_Width: 4 m_Height: 84 + - m_X: 699 + m_Y: 88 + m_Width: 46 + m_Height: 2 + - m_X: 0 + m_Y: 327 + m_Width: 56 + m_Height: 19 + - m_X: 42 + m_Y: 279 + m_Width: 14 + m_Height: 67 + - m_X: 613 + m_Y: 141 + m_Width: 21 + m_Height: 36 + - m_X: 680 + m_Y: 262 + m_Width: 343 + m_Height: 761 + - m_X: 680 + m_Y: 177 + m_Width: 19 + m_Height: 846 + - m_X: 612 + m_Y: 265 + m_Width: 411 + m_Height: 758 + - m_X: 612 + m_Y: 225 + m_Width: 1 + m_Height: 798 + - m_X: 472 + m_Y: 241 + m_Width: 11 + m_Height: 17 + - m_X: 544 + m_Y: 313 + m_Width: 479 + m_Height: 710 + - m_X: 544 + m_Y: 258 + m_Width: 1 + m_Height: 765 + - m_X: 386 + m_Y: 263 + m_Width: 17 + m_Height: 62 + - m_X: 312 + m_Y: 353 + m_Width: 74 + m_Height: 670 + - m_X: 234 + m_Y: 412 + m_Width: 789 + m_Height: 611 + - m_X: 234 + m_Y: 404 + m_Width: 152 + m_Height: 619 + - m_X: 463 + m_Y: 344 + m_Width: 560 + m_Height: 679 + - m_X: 463 + m_Y: 325 + m_Width: 9 + m_Height: 698 + - m_X: 801 + m_Y: 90 + m_Width: 11 + m_Height: 86 + - m_X: 809 + m_Y: 90 + m_Width: 3 + m_Height: 933 + - m_X: 809 + m_Y: 258 + m_Width: 214 + m_Height: 765 + - m_X: 809 + m_Y: 179 + m_Width: 129 + m_Height: 844 m_fontInfo: Name: PointSize: 0 diff --git a/Assets/LunarConsole/Editor.meta b/Assets/LunarConsole/Editor.meta deleted file mode 100644 index dade802..0000000 --- a/Assets/LunarConsole/Editor.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 96fc66c69a3d4f33b789cff7efcaad1e -timeCreated: 1590022189 \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Android.meta b/Assets/LunarConsole/Editor/Android.meta deleted file mode 100644 index 58ef78e..0000000 --- a/Assets/LunarConsole/Editor/Android.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4c88bbc61497f459c83c2f0f7a717ab3 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Android/lunar-console.aar b/Assets/LunarConsole/Editor/Android/lunar-console.aar deleted file mode 100644 index c83b5d8..0000000 Binary files a/Assets/LunarConsole/Editor/Android/lunar-console.aar and /dev/null differ diff --git a/Assets/LunarConsole/Editor/Android/lunar-console.aar.meta b/Assets/LunarConsole/Editor/Android/lunar-console.aar.meta deleted file mode 100644 index 8192be7..0000000 --- a/Assets/LunarConsole/Editor/Android/lunar-console.aar.meta +++ /dev/null @@ -1,32 +0,0 @@ -fileFormatVersion: 2 -guid: 8c04a287e839b49ec81abc152624ec48 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Android: Android - second: - enabled: 1 - settings: {} - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/AndroidPlugin.cs b/Assets/LunarConsole/Editor/AndroidPlugin.cs deleted file mode 100644 index ef3a08e..0000000 --- a/Assets/LunarConsole/Editor/AndroidPlugin.cs +++ /dev/null @@ -1,75 +0,0 @@ -// -// AndroidPlugin.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using UnityEditor; -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - internal static class AndroidPlugin - { - public static void SetEnabled(bool enabled, bool retrying = false) - { - if (retrying) - { - Log.d("Retrying Android Plugin import..."); - } - - var androidPathAAR = FileUtils.FixAssetPath(EditorConstants.EditorPathAndroidAAR); - if (androidPathAAR == null || !FileUtils.AssetPathExists(androidPathAAR)) - { - Debug.LogErrorFormat( - "Can't {0} Android plugin: missing required file '{1}'. Re-install {2} to fix the issue.", - enabled ? "enable" : "disable", - androidPathAAR, - Constants.PluginDisplayName); - return; - } - - var importer = (PluginImporter) AssetImporter.GetAtPath(androidPathAAR); - if (importer == null) - { - // mleenhardt: Added delayed retry attempt to fix error caused by the fact that importer is - // null the very first time the project is loaded when there is no Library folder yet. - if (!retrying) - { - EditorHelper.DelayCallOnce(() => SetEnabled(enabled, true)); - return; - } - - Debug.LogErrorFormat( - "Can't {0} Android plugin: unable to create importer for '{1}'. Re-install {2} to fix the issue.", - enabled ? "enable" : "disable", - androidPathAAR, - Constants.PluginDisplayName); - return; - } - - if (importer.GetCompatibleWithPlatform(BuildTarget.Android) != enabled) - { - importer.SetCompatibleWithPlatform(BuildTarget.Android, enabled); - importer.SaveAndReimport(); - } - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Automation/common.sh b/Assets/LunarConsole/Editor/Automation/common.sh deleted file mode 100644 index 998cf33..0000000 --- a/Assets/LunarConsole/Editor/Automation/common.sh +++ /dev/null @@ -1,83 +0,0 @@ -pushd $(dirname $BASH_SOURCE[0]) >/dev/null -LUNAR_PLUGIN_DIR=$(cd "../.."; pwd) -popd >/dev/null - -function epic_fail() { - MESSAGE=$1 - echo "" - echo "\033[31m" - echo " ####################################### " - echo "#########################################" - echo "#########################################" - echo "############ ############# ############" - echo "#########################################" - echo "#########################################" - echo "#########################################" - echo "#### ####" - echo "#### ### ### ### ### ### ### ### ### ####" - echo "#### ### ### ### ### ### ### ### ### ####" - echo "#### ####" - echo "#### ### ### ### ### ### ### ### ### ####" - echo "#### ### ### ### ### ### ### ### ### ####" - echo "#### ####" - echo "#########################################" - echo " ####################################### " - echo "$MESSAGE" - echo "\033[0m" - echo "" - echo "" - echo "" - echo "" - if [ -z "$2" ] ; then - exit $2 - fi - - exit 1 -} - -function exit_if_failed() { - LAST_COMMAND_EXIT_CODE=$? - MESSAGE=$1 - if [[ $LAST_COMMAND_EXIT_CODE != 0 ]] ; then - epic_fail "$MESSAGE" $LAST_COMMAND_EXIT_CODE - fi -} - -function fail_if_file_not_exists() { - file="$1" - echo $file - [ -f $file ] || epic_fail "File does not exist: $file" -} - -function push_dir() { - dir_target="$1" - pushd $dir_target > /dev/null - exit_if_failed "Can't push dir: $dir_target" -} - -function pop_dir() { - popd > /dev/null - exit_if_failed "Can't pop dir" -} - -LUNAR_SCRIPT_FILE="$LUNAR_PLUGIN_DIR/Scripts/LunarConsole.cs" -fail_if_file_not_exists $LUNAR_CONSOLE_FILE - -function replace_text_in_file() { - - file="$1" - fail_if_file_not_exists $file - - text=$2 - replacement=$3 - - sed -i "" "s/${text}/${replacement}/g" $file || epic_fail "Can't update script file: $file" -} - -function disable_plugin() { - replace_text_in_file $LUNAR_SCRIPT_FILE "#define LUNAR_CONSOLE_ENABLED" "#define LUNAR_CONSOLE_DISABLED" -} - -function enable_plugin() { - replace_text_in_file $LUNAR_SCRIPT_FILE "#define LUNAR_CONSOLE_DISABLED" "#define LUNAR_CONSOLE_ENABLED" -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Automation/common.sh.meta b/Assets/LunarConsole/Editor/Automation/common.sh.meta deleted file mode 100644 index 04704e6..0000000 --- a/Assets/LunarConsole/Editor/Automation/common.sh.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 599e0a1816cab4ce5a334faed3dc06f0 -timeCreated: 1443650472 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Automation/disable_lunar_console.sh b/Assets/LunarConsole/Editor/Automation/disable_lunar_console.sh deleted file mode 100644 index b4767cb..0000000 --- a/Assets/LunarConsole/Editor/Automation/disable_lunar_console.sh +++ /dev/null @@ -1,3 +0,0 @@ -. $(dirname $0)/common.sh - -disable_plugin \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Automation/enable_lunar_console.sh b/Assets/LunarConsole/Editor/Automation/enable_lunar_console.sh deleted file mode 100644 index 114bc51..0000000 --- a/Assets/LunarConsole/Editor/Automation/enable_lunar_console.sh +++ /dev/null @@ -1,3 +0,0 @@ -. $(dirname $0)/common.sh - -enable_plugin \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Automation/enable_lunar_console.sh.meta b/Assets/LunarConsole/Editor/Automation/enable_lunar_console.sh.meta deleted file mode 100644 index 9bb70f3..0000000 --- a/Assets/LunarConsole/Editor/Automation/enable_lunar_console.sh.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 41fd244c4e8914afb8cd8f46d201fe1c -timeCreated: 1443650484 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Autorun.cs b/Assets/LunarConsole/Editor/Autorun.cs deleted file mode 100644 index a7d38e0..0000000 --- a/Assets/LunarConsole/Editor/Autorun.cs +++ /dev/null @@ -1,46 +0,0 @@ -// -// Autorun.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using UnityEditor; - -using LunarConsolePlugin; -using LunarConsolePluginInternal; - -using System; -using System.IO; -using System.Collections; - -namespace LunarConsoleEditorInternal -{ - [InitializeOnLoad] - static class Autorun - { - static Autorun() - { - AndroidPlugin.SetEnabled(LunarConsoleConfig.consoleEnabled); - - Updater.TryCheckForUpdates(); - LunarConsoleEditorAnalytics.TrackPluginVersionUpdate(); - } - } -} diff --git a/Assets/LunarConsole/Editor/BuildPostProcessor.cs b/Assets/LunarConsole/Editor/BuildPostProcessor.cs deleted file mode 100644 index 2653196..0000000 --- a/Assets/LunarConsole/Editor/BuildPostProcessor.cs +++ /dev/null @@ -1,175 +0,0 @@ -// -// BuildPostProcessor.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using UnityEditor; -using UnityEditor.Callbacks; -using System; - -#if UNITY_IOS || UNITY_IPHONE -using UnityEditor.iOS.Xcode; -#endif - -using System.Collections; -using System.IO; - -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - static class BuildPostProcessor - { - #if UNITY_IOS || UNITY_IPHONE - [PostProcessBuild(1000)] - static void OnPostprocessBuild(BuildTarget target, string buildPath) - { - if (LunarConsoleConfig.consoleEnabled) - { - if (target == BuildTarget.iOS) - { - OnPostprocessIOS(buildPath); - } - } - } - - static void OnPostprocessIOS(string buildPath) - { - // Workaround for: - // FileNotFoundException: Could not load file or assembly 'UnityEditor.iOS.Extensions.Xcode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. - // For more information see: http://answers.unity3d.com/questions/1016975/filenotfoundexception-when-using-xcode-api.html - // Copy plugin files to the build directory so you can later move to another machine and build it there - #if LUNAR_CONSOLE_EXPORT_IOS_FILES - var pluginPath = Path.Combine(buildPath, Constants.PluginName); - FileUtil.DeleteFileOrDirectory(pluginPath); - FileUtil.CopyFileOrDirectory(EditorConstants.EditorPathIOS, pluginPath); - // Clean up meta files - string[] files = Directory.GetFiles(pluginPath, "*.meta", System.IO.SearchOption.AllDirectories); - foreach (string file in files) - { - FileUtil.DeleteFileOrDirectory(file); - } - #else // LUNAR_CONSOLE_EXPORT_IOS_FILES - var pluginPath = EditorConstants.EditorPathIOS; - #endif // LUNAR_CONSOLE_EXPORT_IOS_FILES - - var projectMod = new XcodeProjMod(buildPath, pluginPath); - projectMod.UpdateProject(); - } - #endif //UNITY_IOS || UNITY_IPHONE - } - - #if UNITY_IOS || UNITY_IPHONE - class XcodeProjMod - { - private readonly string m_buildPath; - private readonly string m_projectPath; - private readonly string m_pluginPath; - - public XcodeProjMod(string buildPath, string pluginPath) - { - m_buildPath = buildPath; - m_pluginPath = pluginPath; - m_projectPath = PBXProject.GetPBXProjectPath(buildPath); - } - - public void UpdateProject() - { - var project = new PBXProject(); - project.ReadFromFile(m_projectPath); - - string[] files = Directory.GetFiles(m_pluginPath, "*.projmods", System.IO.SearchOption.AllDirectories); - foreach (string file in files) - { - ApplyMod(project, file); - } - - project.WriteToFile(m_projectPath); - } - - void ApplyMod(PBXProject project, string modFile) - { - var json = File.ReadAllText(modFile); - var mod = JsonUtility.FromJson(json); - var sourceDir = Directory.GetParent(modFile).FullName; - var targetGroup = "Libraries/" + mod.group; - var sourcesTargetGuid = GetSourcesTargetGuid(project); - var resourcesTargetGuid = GetResourcesTargetGuid(project); - var dirProject = Directory.GetParent(PBXProject.GetPBXProjectPath(m_buildPath)).FullName; - foreach (var file in mod.files) - { - var filename = Path.GetFileName(file); - var fileGuid = project.AddFile(FileUtils.FixPath(FileUtils.MakeRelativePath(dirProject, sourceDir + "/" + file)), targetGroup + "/" + filename, PBXSourceTree.Source); - if (filename.EndsWith(".h")) - { - continue; - } - - var targetGuid = IsSourceFile(filename) ? sourcesTargetGuid : resourcesTargetGuid; - project.AddFileToBuild(targetGuid, fileGuid); - } - foreach (var framework in mod.frameworks) - { - project.AddFrameworkToProject(sourcesTargetGuid, framework, false); - } - } - - static bool IsSourceFile(string filename) - { - var ext = Path.GetExtension(filename).ToLower(); - return ext == ".m" || ext == ".mm" || ext == ".swift" || ext == ".c" || ext == ".cpp"; - } - - static string GetResourcesTargetGuid(PBXProject project) - { -#if UNITY_2019_3_OR_NEWER - return project.GetUnityMainTargetGuid(); -#else - return project.TargetGuidByName(PBXProject.GetUnityTargetName()); -#endif - } - - static string GetSourcesTargetGuid(PBXProject project) - { -#if UNITY_2019_3_OR_NEWER - return project.GetUnityFrameworkTargetGuid(); -#else - return project.TargetGuidByName(PBXProject.GetUnityTargetName()); -#endif - } - } - - #pragma warning disable 0649 - #pragma warning disable 0414 - - [System.Serializable] - class ProjMod - { - public string group; - public string[] frameworks; - public string[] files; - } - - #pragma warning restore 0649 - #pragma warning restore 0414 - - #endif // UNITY_IOS || UNITY_IPHONE -} diff --git a/Assets/LunarConsole/Editor/Compatibility.cs b/Assets/LunarConsole/Editor/Compatibility.cs deleted file mode 100644 index 37a1847..0000000 --- a/Assets/LunarConsole/Editor/Compatibility.cs +++ /dev/null @@ -1,60 +0,0 @@ -// -// Compatibility.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEditor; -using UnityEngine; - -namespace LunarConsoleEditorInternal -{ -#if UNITY_5_4_OR_NEWER - class DisabledScopeCompat : IDisposable - { - private readonly EditorGUI.DisabledScope m_target; - - public DisabledScopeCompat(bool disabled) - { - m_target = new EditorGUI.DisabledScope(disabled); - } - - public void Dispose() - { - m_target.Dispose(); - } - } -#else - class DisabledScopeCompat : IDisposable - { - public DisabledScopeCompat(bool disabled) - { - EditorGUI.BeginDisabledGroup(disabled); - } - - public void Dispose() - { - EditorGUI.EndDisabledGroup(); - } - } -#endif -} diff --git a/Assets/LunarConsole/Editor/EditorConstants.cs b/Assets/LunarConsole/Editor/EditorConstants.cs deleted file mode 100644 index 21910a4..0000000 --- a/Assets/LunarConsole/Editor/EditorConstants.cs +++ /dev/null @@ -1,115 +0,0 @@ -// -// EditorConstants.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using UnityEditor; - -using System; -using System.Collections; -using System.IO; - -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - static class EditorConstants - { - private static string pluginRootDirectory; - - public static string PrefabPath - { - get - { - var pluginRoot = PluginRootDirectory; - return pluginRoot != null ? FileUtils.GetAssetPath(pluginRoot, "Scripts", Constants.PluginName + ".prefab") : null; - } - } - - public static string EditorPathIOS - { - get - { - var pluginEditorRoot = PluginEditorRootDirectory; - return pluginEditorRoot != null ? FileUtils.GetAssetPath(pluginEditorRoot, "iOS") : null; - } - } - - public static string EditorPathAndroidAAR - { - get - { - var pluginEditorRoot = PluginEditorRootDirectory; - return pluginEditorRoot != null ? FileUtils.GetAssetPath(pluginEditorRoot, "Android", "lunar-console.aar") : null; - } - } - - private static string PluginEditorRootDirectory - { - get - { - var pluginRoot = PluginRootDirectory; - return pluginRoot != null ? Path.Combine(pluginRoot, "Editor") : null; - } - } - - private static string PluginRootDirectory - { - get - { - if (pluginRootDirectory == null) - { - pluginRootDirectory = ResolvePluginRootDirectory(); - if (pluginRootDirectory == null) - { - Debug.LogErrorFormat("Unable to resolve plugin root directory. Re-install {0} to fix the issue", Constants.PluginDisplayName); - return null; - } - } - return pluginRootDirectory; - } - } - - private static string ResolvePluginRootDirectory() - { - try - { - string currentFile = new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileName(); - if (currentFile != null && File.Exists(currentFile)) - { - var currentDirectory = new FileInfo(currentFile).Directory; - if (currentDirectory.Name != "Editor") - { - return null; - } - - return currentDirectory.Parent.FullName; - } - } - catch (Exception e) - { - Log.e(e, "Exception while resolving plugin files location"); - } - - return null; - } - } -} diff --git a/Assets/LunarConsole/Editor/EditorHelper.cs b/Assets/LunarConsole/Editor/EditorHelper.cs deleted file mode 100644 index 16aaa6b..0000000 --- a/Assets/LunarConsole/Editor/EditorHelper.cs +++ /dev/null @@ -1,63 +0,0 @@ -// -// EditorHelper.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using UnityEditor; - -namespace LunarConsoleEditorInternal -{ - public static class EditorHelper - { - public static void DelayCallOnce(Action action) - { - new EditorCallback(action).ScheduleDelayCall(); - } - - private sealed class EditorCallback - { - private readonly Action action; - - public EditorCallback(Action action) - { - this.action = action; - } - - public void ScheduleDelayCall() - { - EditorApplication.delayCall += Invoke; - } - - private void Invoke() - { - try - { - action(); - } - finally - { - // ReSharper disable once DelegateSubtraction - EditorApplication.delayCall -= Invoke; - } - } - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/EditorHelper.cs.meta b/Assets/LunarConsole/Editor/EditorHelper.cs.meta deleted file mode 100644 index 68ca790..0000000 --- a/Assets/LunarConsole/Editor/EditorHelper.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: bde7b8f949d44b7baaa14326ee01ee45 -timeCreated: 1589413651 \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Installer.cs b/Assets/LunarConsole/Editor/Installer.cs deleted file mode 100644 index f0592a6..0000000 --- a/Assets/LunarConsole/Editor/Installer.cs +++ /dev/null @@ -1,130 +0,0 @@ -// -// Installer.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using UnityEditor; - -using System.Collections; -using System.IO; - -using LunarConsolePlugin; -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - public static class Installer - { - public static void Install(bool silent = true) - { - string prefabPath = EditorConstants.PrefabPath; - string messageTitle = Constants.PluginDisplayName; - - string objectName = Path.GetFileNameWithoutExtension(prefabPath); - - if (!silent && !Utils.ShowDialog(messageTitle, "This will create " + objectName + " (" + prefabPath + ") game object in your scene.\n\nYou only need to do it once for the very first scene of your game\n\nContinue?")) - { - return; - } - - LunarConsole[] existing = GameObject.FindObjectsOfType(); - if (existing != null) - { - foreach (LunarConsole c in existing) - { - GameObject.DestroyImmediate(c.gameObject); - } - } - - GameObject lunarConsolePrefab = AssetDatabase.LoadAssetAtPath(prefabPath, typeof(GameObject)) as GameObject; - if (lunarConsolePrefab == null) - { - if (!silent) - { - Utils.ShowDialog(messageTitle, "Can't instantiate " + prefabPath + ": asset not found"); - } - return; - } - - GameObject lunarConsole = PrefabUtility.InstantiatePrefab(lunarConsolePrefab) as GameObject; - lunarConsole.name = objectName; - - // starting Unity 5.3 we need to add an undo operation or the scene would not be marked dirty - #if UNITY_5_3_OR_NEWER - Undo.RegisterCreatedObjectUndo(lunarConsole, "Install Lunar Console"); - #endif - - if (!silent) - { - Utils.ShowDialog(messageTitle, objectName + " game object created!\n\nDon't forget to save your scene changes!", "OK"); - } - } - - public static void EnablePlugin() - { - SetLunarConsoleEnabled(true); - } - - public static void DisablePlugin() - { - SetLunarConsoleEnabled(false); - } - - public static void SetLunarConsoleEnabled(bool enabled) - { - if (LunarConsoleConfig.consoleEnabled == enabled) - return; - - AndroidPlugin.SetEnabled(enabled); - - string pluginFile = LunarConsolePluginEditorHelper.ResolvePluginFile(); - if (pluginFile == null) - { - PrintError(enabled, "can't resolve plugin file"); - return; - } - - string sourceCode = File.ReadAllText(pluginFile); - - string oldToken = "#define " + (enabled ? "LUNAR_CONSOLE_DISABLED" : "LUNAR_CONSOLE_ENABLED"); - string newToken = "#define " + (enabled ? "LUNAR_CONSOLE_ENABLED" : "LUNAR_CONSOLE_DISABLED"); - - string newSourceCode = sourceCode.Replace(oldToken, newToken); - if (newSourceCode == sourceCode) - { - PrintError(enabled, "can't find '" + oldToken + "' token"); - return; - } - - File.WriteAllText(pluginFile, newSourceCode); - - // re-import asset to apply changes - AssetDatabase.ImportAsset(FileUtils.GetAssetPath(pluginFile)); - - LunarConsoleConfig.consoleEnabled = enabled; - } - - static void PrintError(bool flag, string message) - { - Debug.LogError("Can't " + (flag ? "enable" : "disable") + " Lunar Console: " + message); - } - } -} diff --git a/Assets/LunarConsole/Editor/Installer.cs.meta b/Assets/LunarConsole/Editor/Installer.cs.meta deleted file mode 100644 index 973f399..0000000 --- a/Assets/LunarConsole/Editor/Installer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8d39b05e5cc394c1da275a35ca037084 -timeCreated: 1439415353 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Legacy/LunarConsoleLegacyActionsEditor.cs b/Assets/LunarConsole/Editor/Legacy/LunarConsoleLegacyActionsEditor.cs deleted file mode 100644 index b6526c4..0000000 --- a/Assets/LunarConsole/Editor/Legacy/LunarConsoleLegacyActionsEditor.cs +++ /dev/null @@ -1,282 +0,0 @@ -// -// LunarConsoleLegacyActionsEditor.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; -using UnityEditor; - -using LunarConsolePlugin; -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - #pragma warning disable 0618 - [CustomEditor(typeof(LunarConsoleLegacyActions))] - #pragma warning restore 0618 - class LunarConsoleLegacyActionsEditor : Editor - { - struct Functions - { - public string[] names; - public Type[] componentTypes; - public MethodInfo[] componentMethods; - } - - private static readonly string[] kIgnoredMethods = { - "Awake", - "FixedUpdate", - "LateUpdate", - "OnAnimatorIK", - "OnAnimatorMove", - "OnApplicationFocus", - "OnApplicationPause", - "OnApplicationQuit", - "OnAudioFilterRead", - "OnBecameInvisible", - "OnBecameVisible", - "OnCollisionEnter", - "OnCollisionEnter2D", - "OnCollisionExit", - "OnCollisionExit2D", - "OnCollisionStay", - "OnCollisionStay2D", - "OnConnectedToServer", - "OnControllerColliderHit", - "OnDestroy", - "OnDisable", - "OnDisconnectedFromServer", - "OnDrawGizmos", - "OnDrawGizmosSelected", - "OnEnable", - "OnFailedToConnect", - "OnFailedToConnectToMasterServer", - "OnGUI", - "OnJointBreak", - "OnJointBreak2D", - "OnMasterServerEvent", - "OnMouseDown", - "OnMouseDrag", - "OnMouseEnter", - "OnMouseExit", - "OnMouseOver", - "OnMouseUp", - "OnMouseUpAsButton", - "OnNetworkInstantiate", - "OnParticleCollision", - "OnParticleTrigger", - "OnPlayerConnected", - "OnPlayerDisconnected", - "OnPostRender", - "OnPreCull", - "OnPreRender", - "OnRenderImage", - "OnRenderObject", - "OnSerializeNetworkView", - "OnServerInitialized", - "OnTransformChildrenChanged", - "OnTransformParentChanged", - "OnTriggerEnter", - "OnTriggerEnter2D", - "OnTriggerExit", - "OnTriggerExit2D", - "OnTriggerStay", - "OnTriggerStay2D", - "OnValidate", - "OnWillRenderObject", - "Reset", - "Start", - "Update", - }; - - private const string kPropActions = "m_actions"; - private const string kPropActionsSize = kPropActions + ".Array.size"; - - private int m_selectedIndex = -1; - private SerializedProperty m_actionsPropertry; - private SerializedProperty m_actionsCountProperty; - - private void OnEnable() - { - m_actionsPropertry = serializedObject.FindProperty(kPropActions); - m_actionsCountProperty = serializedObject.FindProperty(kPropActionsSize); - } - - public override void OnInspectorGUI() - { - base.OnInspectorGUI(); - - const float height = 45; - - EditorGUILayout.Space(); - var selectedRect = GUILayoutUtility.GetLastRect(); - selectedRect.y += selectedRect.height; - selectedRect.height = height + EditorGUIUtility.standardVerticalSpacing; - - serializedObject.Update(); - - EditorGUILayout.BeginVertical(); - { - for (int i = 0; i < m_actionsPropertry.arraySize; ++i) - { - if (i == m_selectedIndex) - { - EditorGUI.DrawRect(selectedRect, GUI.skin.settings.selectionColor); - } - - EditorGUILayout.BeginVertical(GUILayout.Height(height)); - { - EditorGUI.BeginChangeCheck(); - - var nameProperty = serializedObject.FindProperty("m_actions.Array.data[" + i + "].m_name"); - var targetProperty = serializedObject.FindProperty("m_actions.Array.data[" + i + "].m_target"); - var componentTypeProperty = serializedObject.FindProperty("m_actions.Array.data[" + i + "].m_componentTypeName"); - var componentMethodProperty = serializedObject.FindProperty("m_actions.Array.data[" + i + "].m_componentMethodName"); - - EditorGUILayout.PropertyField(nameProperty, new GUIContent("Display Name")); - - EditorGUILayout.BeginHorizontal(); - { - EditorGUILayout.PropertyField(targetProperty, GUIContent.none, GUILayout.Width(EditorGUIUtility.labelWidth)); - var target = targetProperty.objectReferenceValue as GameObject; - - var functions = ListFunctions(target); - - int oldIndex = ResolveFuntionIndex(functions, componentTypeProperty.stringValue, componentMethodProperty.stringValue); - int newIndex = EditorGUILayout.Popup(oldIndex, functions.names); - if (oldIndex != newIndex) - { - if (newIndex >= 2) - { - var typeName = functions.componentTypes[newIndex - 2].AssemblyQualifiedName; - var methodName = functions.componentMethods[newIndex - 2].Name; - - componentTypeProperty.stringValue = typeName; - componentMethodProperty.stringValue = methodName; - nameProperty.stringValue = StringUtils.ToDisplayName(methodName); - } - else - { - componentTypeProperty.stringValue = null; - componentMethodProperty.stringValue = null; - nameProperty.stringValue = ""; - } - } - } - EditorGUILayout.EndHorizontal(); - } - EditorGUILayout.EndVertical(); - - if (Event.current.type == EventType.MouseDown) - { - if (selectedRect.Contains(Event.current.mousePosition)) - { - m_selectedIndex = i; - Repaint(); - } - } - - selectedRect.y += selectedRect.height; - } - } - EditorGUILayout.EndVertical(); - - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("Add")) - { - m_actionsCountProperty.intValue++; - } - if (GUILayout.Button("Remove")) - { - if (m_selectedIndex >= 0 && m_selectedIndex < m_actionsCountProperty.intValue) - { - m_actionsPropertry.DeleteArrayElementAtIndex(m_selectedIndex); - } - } - EditorGUILayout.EndHorizontal(); - - serializedObject.ApplyModifiedProperties(); - } - - int ResolveFuntionIndex(Functions functions, string typeName, string methodName) - { - if (typeName == null || methodName == null) - { - return 0; - } - - var type = Type.GetType(typeName); - if (type == null) - { - return 0; - } - - var functionName = type.Name + "/" + methodName; - - var index = Array.IndexOf(functions.names, functionName); - return Mathf.Max(0, index); - } - - Functions ListFunctions(GameObject obj) - { - List functions = new List(); - List componentTypes = new List(); - List componentMethods = new List(); - functions.Add("No Function"); - - if (obj != null) - { - foreach (var component in obj.GetComponents()) - { - var type = component.GetType(); - var methods = ClassUtils.ListInstanceMethods(type, delegate(MethodInfo method) { - return Array.IndexOf(kIgnoredMethods, method.Name) == -1 && // not forbidden name - method.ReturnType == typeof(void) && // with no return type - method.GetParameters().Length == 0; // and no parameters - }); - - if (functions.Count == 1) - { - functions.Add("/"); - } - - foreach (var method in methods) - { - functions.Add(type.Name + "/" + method.Name); - componentTypes.Add(type); - componentMethods.Add(method); - } - } - } - - Functions result; - result.names = functions.ToArray(); - result.componentTypes = componentTypes.ToArray(); - result.componentMethods = componentMethods.ToArray(); - - return result; - } - } -} diff --git a/Assets/LunarConsole/Editor/Legacy/LunarConsoleLegacyActionsEditor.cs.meta b/Assets/LunarConsole/Editor/Legacy/LunarConsoleLegacyActionsEditor.cs.meta deleted file mode 100644 index d8a24d1..0000000 --- a/Assets/LunarConsole/Editor/Legacy/LunarConsoleLegacyActionsEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8ee2594af279d40b7a9b5df24bca99b9 -timeCreated: 1484262633 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Log.cs b/Assets/LunarConsole/Editor/Log.cs deleted file mode 100644 index e88e370..0000000 --- a/Assets/LunarConsole/Editor/Log.cs +++ /dev/null @@ -1,63 +0,0 @@ -// -// Log.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; - -using System; -using System.Collections; - -namespace LunarConsoleEditorInternal -{ - static class Log - { - [System.Diagnostics.Conditional("LUNAR_CONSOLE_DEVELOPMENT")] - public static void d(string format, params object[] args) - { - Debug.Log(TryFormat(format, args)); - } - - [System.Diagnostics.Conditional("LUNAR_CONSOLE_DEVELOPMENT")] - public static void e(string format, params object[] args) - { - Debug.LogError(TryFormat(format, args)); - } - - [System.Diagnostics.Conditional("LUNAR_CONSOLE_DEVELOPMENT")] - public static void e(Exception e, string format, params object[] args) - { - Log.e(format, args); - Debug.LogException(e); - } - - private static string TryFormat(string format, object[] args) - { - try - { - return string.Format(format, args); - } - catch (Exception) - { - return format; - } - } - } -} diff --git a/Assets/LunarConsole/Editor/Log.cs.meta b/Assets/LunarConsole/Editor/Log.cs.meta deleted file mode 100644 index 0ff7285..0000000 --- a/Assets/LunarConsole/Editor/Log.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 4b80e26d23d9647789671185f4ded259 -timeCreated: 1439245991 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/LunarConsoleActionEditor.cs b/Assets/LunarConsole/Editor/LunarConsoleActionEditor.cs deleted file mode 100644 index bfcae9a..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleActionEditor.cs +++ /dev/null @@ -1,370 +0,0 @@ -// -// LunarConsoleActionEditor.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; -using UnityEditor; -using UnityEditorInternal; - -using LunarConsolePlugin; -using LunarConsolePluginInternal; -using System.Text; - -namespace LunarConsoleEditorInternal -{ - [CustomEditor(typeof(LunarConsoleAction))] - class LunarConsoleActionEditor : Editor - { - private const string kPropCalls = "m_calls"; - private const string kPropMode = "m_mode"; - private const string kPropTarget = "m_target"; - private const string kPropMethod = "m_methodName"; - private const string kPropArguments = "m_arguments"; - - private const string kPropObjectArgumentAssemblyTypeName = "m_objectArgumentAssemblyTypeName"; - ReorderableList list; - - struct Function - { - public readonly UnityEngine.Object target; - public readonly MethodInfo method; - - public Function(UnityEngine.Object target, MethodInfo method) - { - this.target = target; - this.method = method; - } - - public bool isProperty - { - get { return method.IsSpecialName && method.Name.StartsWith("set_"); } - } - - public string simpleName - { - get { return isProperty ? method.Name.Substring("set_".Length) : method.Name; } - } - - public Type paramType - { - get - { - var methodParams = method.GetParameters(); - return methodParams.Length > 0 ? methodParams[0].ParameterType : null; - } - } - - public string displayName - { - get - { - var functionParamType = paramType; - if (functionParamType != null) - { - var typeName = ClassUtils.TypeShortName(functionParamType); - return isProperty ? - string.Format("{0} {1}", typeName, simpleName) : - string.Format("{0} ({1})", simpleName, typeName); - } - return string.Format("{0} ()", simpleName); - } - } - } - - private void OnEnable() - { - list = new ReorderableList(serializedObject, serializedObject.FindProperty(kPropCalls), false, true, true, true); - list.drawHeaderCallback = DrawListHeader; - list.drawElementCallback = DrawListElement; - list.elementHeight = 43; - } - - public override void OnInspectorGUI() - { - base.OnInspectorGUI(); - - serializedObject.Update(); - list.DoLayoutList(); - serializedObject.ApplyModifiedProperties(); - } - - void DrawListHeader(Rect rect) - { - EditorGUI.LabelField(rect, "On Click ()"); - } - - void DrawListElement(Rect rect, int index, bool isActive, bool isFocused) - { - SerializedProperty arrayElementAtIndex = list.serializedProperty.GetArrayElementAtIndex(index); - rect.y += 1f; - Rect[] rowRects = GetRowRects(rect); - Rect runtimeModeRect = rowRects[0]; - Rect targetRect = rowRects[1]; - Rect methodRect = rowRects[2]; - Rect argumentRect = rowRects[3]; - SerializedProperty modeProperty = arrayElementAtIndex.FindPropertyRelative(kPropMode); - SerializedProperty targetProperty = arrayElementAtIndex.FindPropertyRelative(kPropTarget); - SerializedProperty methodProperty = arrayElementAtIndex.FindPropertyRelative(kPropMethod); - SerializedProperty argumentsProperty = arrayElementAtIndex.FindPropertyRelative(kPropArguments); - - Color backgroundColor = GUI.backgroundColor; - GUI.backgroundColor = Color.white; - - var oldFlag = GUI.enabled; - GUI.enabled = false; - GUI.Box(runtimeModeRect, "Runtime Only", EditorStyles.popup); - GUI.enabled = oldFlag; - - EditorGUI.BeginChangeCheck(); - GUI.Box(targetRect, GUIContent.none); - EditorGUI.PropertyField(targetRect, targetProperty, GUIContent.none); - if (EditorGUI.EndChangeCheck()) - { - methodProperty.stringValue = null; - } - LunarPersistentListenerMode persistentListenerMode = (LunarPersistentListenerMode) modeProperty.enumValueIndex; - if (targetProperty.objectReferenceValue == null || string.IsNullOrEmpty(methodProperty.stringValue)) - { - persistentListenerMode = LunarPersistentListenerMode.Void; - } - SerializedProperty argumentProperty; - switch (persistentListenerMode) - { - case LunarPersistentListenerMode.Object: - argumentProperty = argumentsProperty.FindPropertyRelative("m_objectArgument"); - break; - case LunarPersistentListenerMode.Int: - argumentProperty = argumentsProperty.FindPropertyRelative("m_intArgument"); - break; - case LunarPersistentListenerMode.Float: - argumentProperty = argumentsProperty.FindPropertyRelative("m_floatArgument"); - break; - case LunarPersistentListenerMode.String: - argumentProperty = argumentsProperty.FindPropertyRelative("m_stringArgument"); - break; - case LunarPersistentListenerMode.Bool: - argumentProperty = argumentsProperty.FindPropertyRelative("m_boolArgument"); - break; - default: - argumentProperty = argumentsProperty.FindPropertyRelative("m_intArgument"); - break; - } - string argumentAssemblyTypeName = argumentsProperty.FindPropertyRelative(kPropObjectArgumentAssemblyTypeName).stringValue; - Type argumentType = typeof(UnityEngine.Object); - if (!string.IsNullOrEmpty(argumentAssemblyTypeName)) - { - argumentType = (Type.GetType(argumentAssemblyTypeName, false) ?? typeof(UnityEngine.Object)); - } - if (persistentListenerMode == LunarPersistentListenerMode.Object) - { - EditorGUI.BeginChangeCheck(); - UnityEngine.Object objectReferenceValue = EditorGUI.ObjectField(argumentRect, GUIContent.none, argumentProperty.objectReferenceValue, argumentType, true); - if (EditorGUI.EndChangeCheck()) - { - argumentProperty.objectReferenceValue = objectReferenceValue; - } - } - else if (persistentListenerMode != LunarPersistentListenerMode.Void) - { - EditorGUI.PropertyField(argumentRect, argumentProperty, GUIContent.none); - } - using (new DisabledScopeCompat(targetProperty.objectReferenceValue == null)) - { - EditorGUI.BeginProperty(methodRect, GUIContent.none, methodProperty); - GUIContent content; - { - StringBuilder stringBuilder = new StringBuilder(); - if (targetProperty.objectReferenceValue == null || string.IsNullOrEmpty(methodProperty.stringValue)) - { - stringBuilder.Append("No Function"); - } - else if (!LunarConsoleActionCall.IsPersistantListenerValid(targetProperty.objectReferenceValue, methodProperty.stringValue, persistentListenerMode)) - { - string componentName = "UnknownComponent"; - UnityEngine.Object target = targetProperty.objectReferenceValue; - if (target != null) - { - componentName = target.GetType().Name; - } - stringBuilder.Append(string.Format("", componentName, methodProperty.stringValue)); - } - else - { - stringBuilder.Append(targetProperty.objectReferenceValue.GetType().Name); - if (!string.IsNullOrEmpty(methodProperty.stringValue)) - { - stringBuilder.Append("."); - if (methodProperty.stringValue.StartsWith("set_")) - { - stringBuilder.Append(methodProperty.stringValue.Substring(4)); - } - else - { - stringBuilder.Append(methodProperty.stringValue); - } - } - } - content = new GUIContent(stringBuilder.ToString()); - } - if (GUI.Button(methodRect, content, EditorStyles.popup)) - { - BuildPopupList(arrayElementAtIndex).DropDown(methodRect); - } - EditorGUI.EndProperty(); - } - GUI.backgroundColor = backgroundColor; - } - - private GenericMenu BuildPopupList(SerializedProperty serializedProperty) - { - SerializedProperty targetProperty = serializedProperty.FindPropertyRelative(kPropTarget); - SerializedProperty methodProperty = serializedProperty.FindPropertyRelative(kPropMethod); - - var menu = new GenericMenu(); - menu.AddItem(new GUIContent("No Function"), methodProperty.stringValue == null, delegate() { - methodProperty.stringValue = null; - serializedObject.ApplyModifiedProperties(); - }); - - var target = targetProperty.objectReferenceValue; - if (target != null) - { - menu.AddSeparator("/"); - - var functions = ListFunctions(target); - foreach (var function in functions) - { - var selected = target == function.target && methodProperty.stringValue == function.method.Name; - menu.AddItem(new GUIContent(function.target.GetType().Name + "/" + function.displayName), selected, delegate () { - targetProperty.objectReferenceValue = function.target; - methodProperty.stringValue = function.method.Name; - UpdateParamProperty(serializedProperty, function.paramType); - serializedObject.ApplyModifiedProperties(); - }); - } - } - - return menu; - } - - void UpdateParamProperty(SerializedProperty serializedProperty, Type paramType) - { - SerializedProperty modeProperty = serializedProperty.FindPropertyRelative(kPropMode); - SerializedProperty argumentsProperty = serializedProperty.FindPropertyRelative(kPropArguments); - SerializedProperty typeAssemblyProperty = argumentsProperty.FindPropertyRelative(kPropObjectArgumentAssemblyTypeName); - - LunarPersistentListenerMode mode = LunarPersistentListenerMode.Void; - if (paramType != null) - { - if (paramType.IsSubclassOf(typeof(UnityEngine.Object))) - { - mode = LunarPersistentListenerMode.Object; - } - else if (paramType == typeof(int)) - { - mode = LunarPersistentListenerMode.Int; - } - else if (paramType == typeof(float)) - { - mode = LunarPersistentListenerMode.Float; - } - else if (paramType == typeof(string)) - { - mode = LunarPersistentListenerMode.String; - } - else if (paramType == typeof(bool)) - { - mode = LunarPersistentListenerMode.Bool; - } - else - { - Log.e("Unexpected param type: {0}", paramType); - } - } - modeProperty.enumValueIndex = (int)mode; - typeAssemblyProperty.stringValue = paramType != null ? paramType.AssemblyQualifiedName : null; - } - - private Rect[] GetRowRects(Rect rect) - { - Rect[] array = new Rect[4]; - rect.height = 16f; - rect.y += 2f; - Rect rect2 = rect; - rect2.width *= 0.3f; - Rect rect3 = rect2; - rect3.y += EditorGUIUtility.singleLineHeight + 2f; - Rect rect4 = rect; - rect4.xMin = rect3.xMax + 5f; - Rect rect5 = rect4; - rect5.y += EditorGUIUtility.singleLineHeight + 2f; - array[0] = rect2; - array[1] = rect3; - array[2] = rect4; - array[3] = rect5; - return array; - } - - Function[] ListFunctions(UnityEngine.Object obj) - { - if (obj is Component) - { - obj = ((Component)obj).gameObject; - } - - List functions = new List(); - if (obj != null) - { - List targets = new List(); - targets.Add(obj); - - if (obj is GameObject) - { - var gameObject = obj as GameObject; - foreach (var component in gameObject.GetComponents()) - { - targets.Add(component); - } - } - - foreach (var target in targets) - { - List methods = LunarConsoleActionCall.ListActionMethods(target); - methods.Sort(delegate (MethodInfo a, MethodInfo b) { - return a.IsSpecialName == b.IsSpecialName ? a.Name.CompareTo(b.Name) : (a.IsSpecialName ? -1 : 1); - }); - - foreach (var method in methods) - { - functions.Add(new Function(target, method)); - } - } - } - - return functions.ToArray(); - } - } -} diff --git a/Assets/LunarConsole/Editor/LunarConsoleActionEditor.cs.meta b/Assets/LunarConsole/Editor/LunarConsoleActionEditor.cs.meta deleted file mode 100644 index 6c1ca84..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleActionEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: a5fd869406f94a64a95346d768888609 -timeCreated: 1484262633 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/LunarConsoleEditor.asmdef b/Assets/LunarConsole/Editor/LunarConsoleEditor.asmdef deleted file mode 100644 index fafc227..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleEditor.asmdef +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "LunarConsoleEditor", - "references": [ - "LunarConsole" - ], - "includePlatforms": [ - "Editor" - ] -} diff --git a/Assets/LunarConsole/Editor/LunarConsoleEditor.cs b/Assets/LunarConsole/Editor/LunarConsoleEditor.cs deleted file mode 100644 index d601c2d..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleEditor.cs +++ /dev/null @@ -1,57 +0,0 @@ -// -// LunarConsoleEditor.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System.Collections; -using System.Collections.Generic; - -using UnityEngine; -using UnityEditor; - -using LunarConsolePlugin; -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - [CustomEditor(typeof(LunarConsole))] - class LunarConsoleEditor : Editor - { - private GUIStyle m_buttonStyle; - - public override void OnInspectorGUI() - { - base.OnInspectorGUI(); - - if (LunarConsoleConfig.freeVersion) - { - if (m_buttonStyle == null) - { - m_buttonStyle = new GUIStyle("LargeButton"); - } - - if (GUILayout.Button("Get PRO version", m_buttonStyle)) - { - Application.OpenURL("https://goo.gl/jvJzr7"); - } - } - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/LunarConsoleEditor.cs.meta b/Assets/LunarConsole/Editor/LunarConsoleEditor.cs.meta deleted file mode 100644 index 14d48a0..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 72aa95937955643f38d2aa18bc8898c2 -timeCreated: 1487129549 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/LunarConsoleEditorAnalytics.cs b/Assets/LunarConsole/Editor/LunarConsoleEditorAnalytics.cs deleted file mode 100644 index 27a0aa4..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleEditorAnalytics.cs +++ /dev/null @@ -1,83 +0,0 @@ -// -// LunarConsoleEditorAnalytics.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; - -using UnityEngine; -using UnityEditor; - -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - static class LunarConsoleEditorAnalytics - { - private static readonly string kPrefsLastKnownVersion = Constants.EditorPrefsKeyBase + ".LastKnownVersion"; - - /// - /// Notifies the server about plugin update. - /// - public static void TrackPluginVersionUpdate() - { -#if !LUNAR_CONSOLE_ANALYTICS_DISABLED - if (LunarConsoleConfig.consoleEnabled && LunarConsoleConfig.consoleSupported) - { - var lastKnownVersion = EditorPrefs.GetString(kPrefsLastKnownVersion); - if (lastKnownVersion != Constants.Version) - { - EditorPrefs.SetString(kPrefsLastKnownVersion, Constants.Version); - TrackEvent("Version", "updated_version"); - } - } -#endif - } - - public static void TrackEvent(string category, string action, int value = LunarConsoleAnalytics.kUndefinedValue) - { -#if !LUNAR_CONSOLE_ANALYTICS_DISABLED - if (LunarConsoleConfig.consoleEnabled && LunarConsoleConfig.consoleSupported) - { - var payloadStr = LunarConsoleAnalytics.CreatePayload(category, action, value); - if (payloadStr != null) - { - Log.d("Event track payload: " + payloadStr); - - LunarConsoleHttpClient downloader = new LunarConsoleHttpClient(LunarConsoleAnalytics.TrackingURL); - downloader.UploadData(payloadStr, delegate (string result, Exception error) - { - if (error != null) - { - Log.e("Event track failed: " + error); - } - else - { - Log.d("Event track result: " + result); - } - }); - } - } -#endif - } - } -} diff --git a/Assets/LunarConsole/Editor/LunarConsoleEditorAnalytics.cs.meta b/Assets/LunarConsole/Editor/LunarConsoleEditorAnalytics.cs.meta deleted file mode 100644 index 2aeebbb..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleEditorAnalytics.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 9bb9dfa143d1c43a887c29800eafed8d -timeCreated: 1486846615 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/LunarConsoleHttpClient.cs b/Assets/LunarConsole/Editor/LunarConsoleHttpClient.cs deleted file mode 100644 index 3d439b6..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleHttpClient.cs +++ /dev/null @@ -1,189 +0,0 @@ -// -// LunarConsoleHttpClient.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Net; - -using UnityEngine; -using UnityEditor; - -#if UNITY_EDITOR_WIN -using System.Security.Cryptography.X509Certificates; -using System.Net.Security; -#endif - -namespace LunarConsoleEditorInternal -{ - delegate void LunarConsoleHttpDownloaderCallback(string result, Exception error); - - class LunarConsoleHttpClient - { - private Uri m_uri; - private WebClient m_client; - - #if UNITY_EDITOR_WIN - - static LunarConsoleHttpClient() - { - ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback; - } - - private static bool MyRemoteCertificateValidationCallback(System.Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) - { - if (sslPolicyErrors != SslPolicyErrors.None) - { - for (int i = 0; i < chain.ChainStatus.Length; i++) - { - if (chain.ChainStatus[i].Status != X509ChainStatusFlags.RevocationStatusUnknown) - { - chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain; - chain.ChainPolicy.RevocationMode = X509RevocationMode.Online; - chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 1, 0); - chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags; - bool chainIsValid = chain.Build((X509Certificate2)certificate); - if (!chainIsValid) - { - return false; - } - } - } - } - return true; - } - - #endif // UNITY_EDITOR_WIN - - public LunarConsoleHttpClient(string uri) - : this(new Uri(uri)) - { - } - - public LunarConsoleHttpClient(Uri uri) - { - if (uri == null) - { - throw new ArgumentNullException("uri"); - } - - m_uri = uri; - m_client = new WebClient(); - } - - public void UploadData(string data, LunarConsoleHttpDownloaderCallback callback) - { - if (callback == null) - { - throw new ArgumentNullException("callback"); - } - - if (m_client == null) - { - throw new InvalidOperationException("Already downloading something"); - } - - m_client.UploadStringCompleted += delegate(object sender, UploadStringCompletedEventArgs e) - { - Utils.DispatchOnMainThread(delegate() - { - if (this.IsShowingProgress) - { - EditorUtility.ClearProgressBar(); - } - - if (!e.Cancelled) - { - callback(e.Result, e.Error); - } - }); - }; - - if (this.IsShowingProgress && EditorUtility.DisplayCancelableProgressBar("Lunar Mobile Console", "Connecting...", 1.0f)) - { - Cancel(); - } - - m_client.UploadStringAsync(m_uri, data); - } - - public void DownloadString(LunarConsoleHttpDownloaderCallback callback) - { - if (callback == null) - { - throw new ArgumentNullException("callback"); - } - - if (m_client == null) - { - throw new InvalidOperationException("Already downloading something"); - } - - m_client.DownloadStringCompleted += delegate(object sender, DownloadStringCompletedEventArgs e) - { - Utils.DispatchOnMainThread(delegate() - { - if (this.IsShowingProgress) - { - EditorUtility.ClearProgressBar(); - } - - if (!e.Cancelled) - { - callback(e.Result, e.Error); - } - }); - }; - - if (this.IsShowingProgress && EditorUtility.DisplayCancelableProgressBar("Lunar Mobile Console", "Connecting...", 1.0f)) - { - Cancel(); - } - - m_client.DownloadStringAsync(m_uri); - } - - public void Cancel() - { - m_client.CancelAsync(); - } - - private static string ToHumanReadableLength(long bytes, bool addPrefix = true) - { - if (bytes < 1024) - { - return addPrefix ? string.Format("{0} bytes", bytes) : bytes.ToString(); - } - - if (bytes < 1024 * 1024) - { - float kbytes = bytes / 1024.0f; - return addPrefix ? string.Format("{0} kb", kbytes.ToString("F1")) : kbytes.ToString("F1"); - } - - float mbytes = bytes / 1024.0f / 1024.0f; - return addPrefix ? string.Format("{0} Mb", mbytes.ToString("F1")) : mbytes.ToString("F1"); - } - - public bool IsShowingProgress { get; set; } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/LunarConsoleHttpClient.cs.meta b/Assets/LunarConsole/Editor/LunarConsoleHttpClient.cs.meta deleted file mode 100644 index 8f89e6b..0000000 --- a/Assets/LunarConsole/Editor/LunarConsoleHttpClient.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8f2c6c905518146f59ce8bdbb6620c98 -timeCreated: 1486868224 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/MenuItems.cs b/Assets/LunarConsole/Editor/MenuItems.cs deleted file mode 100644 index cf22f3d..0000000 --- a/Assets/LunarConsole/Editor/MenuItems.cs +++ /dev/null @@ -1,121 +0,0 @@ -// -// MenuItems.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -// -// MenuItems.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2019 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -using UnityEngine; -using UnityEditor; -using UnityEditorInternal; - -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - static class MenuItems - { - private const string DisableMenuItem = "Window/Lunar Mobile Console/Disable"; - private const string EnableMenuItem = "Window/Lunar Mobile Console/Enable"; - - [MenuItem(DisableMenuItem)] - static void DisablePlugin() - { - Installer.SetLunarConsoleEnabled(false); - } - - [MenuItem(DisableMenuItem, true)] - static bool DisablePluginValidation() - { - return LunarConsoleConfig.consoleEnabled; - } - - [MenuItem(EnableMenuItem)] - static void EnablePlugin() - { - Installer.SetLunarConsoleEnabled(true); - } - - [MenuItem(EnableMenuItem, true)] - static bool EnablePluginValidation() - { - return !LunarConsoleConfig.consoleEnabled; - } - - [MenuItem("Window/Lunar Mobile Console/Install...")] - static void Install() - { - bool silent = !InternalEditorUtility.isHumanControllingUs; - Installer.Install(silent); - } - - [MenuItem("Window/Lunar Mobile Console/Actions and Variables", true)] - static bool ShowActionsAndWariablesFunc() - { - return LunarConsoleConfig.fullVersion && LunarConsoleConfig.consoleEnabled; - } - - [MenuItem("Window/Lunar Mobile Console/Actions and Variables")] - static void ShowActionsAndWariables() - { - ActionsAndVariablesWindow.ShowWindow(); - } - - [MenuItem("Window/Lunar Mobile Console/Check for updates...")] - static void CheckForUpdates() - { - LunarConsoleEditorAnalytics.TrackEvent("Version", "updater_check"); - Updater.CheckForUpdates(false); - } - - [MenuItem("Window/Lunar Mobile Console/Report bug...")] - static void RequestFeature() - { - Application.OpenURL("https://github.com/SpaceMadness/lunar-unity-console/issues/new"); - } - - #if LUNAR_CONSOLE_DEVELOPMENT - [MenuItem("Window/Lunar Mobile Console/Reset")] - static void Reset() - { - Updater.Reset(); - } - #endif - } -} diff --git a/Assets/LunarConsole/Editor/MenuItems.cs.meta b/Assets/LunarConsole/Editor/MenuItems.cs.meta deleted file mode 100644 index 3fef2ba..0000000 --- a/Assets/LunarConsole/Editor/MenuItems.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 53e8ba43fbbea400f916d010d10d395e -timeCreated: 1439248097 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/SimpleJSON.cs b/Assets/LunarConsole/Editor/SimpleJSON.cs deleted file mode 100644 index 78f9d7f..0000000 --- a/Assets/LunarConsole/Editor/SimpleJSON.cs +++ /dev/null @@ -1,1070 +0,0 @@ -//#define USE_SharpZipLib -#if !UNITY_WEBPLAYER -#define USE_FileIO -#endif - -/* * * * * - * A simple JSON Parser / builder - * ------------------------------ - * - * It mainly has been written as a simple JSON parser. It can build a JSON string - * from the node-tree, or generate a node tree from any valid JSON string. - * - * If you want to use compression when saving to file / stream / B64 you have to include - * SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) in your project and - * define "USE_SharpZipLib" at the top of the file - * - * Written by Bunny83 - * 2012-06-09 - * - * Features / attributes: - * - provides strongly typed node classes and lists / dictionaries - * - provides easy access to class members / array items / data values - * - the parser ignores data types. Each value is a string. - * - only double quotes (") are used for quoting strings. - * - values and names are not restricted to quoted strings. They simply add up and are trimmed. - * - There are only 3 types: arrays(JSONArray), objects(JSONClass) and values(JSONData) - * - provides "casting" properties to easily convert to / from those types: - * int / float / double / bool - * - provides a common interface for each node so no explicit casting is required. - * - the parser try to avoid errors, but if malformed JSON is parsed the result is undefined - * - * - * 2012-12-17 Update: - * - Added internal JSONLazyCreator class which simplifies the construction of a JSON tree - * Now you can simple reference any item that doesn't exist yet and it will return a JSONLazyCreator - * The class determines the required type by it's further use, creates the type and removes itself. - * - Added binary serialization / deserialization. - * - Added support for BZip2 zipped binary format. Requires the SharpZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) - * The usage of the SharpZipLib library can be disabled by removing or commenting out the USE_SharpZipLib define at the top - * - The serializer uses different types when it comes to store the values. Since my data values - * are all of type string, the serializer will "try" which format fits best. The order is: int, float, double, bool, string. - * It's not the most efficient way but for a moderate amount of data it should work on all platforms. - * - * * * * */ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; - - -namespace LunarConsoleEditorInternal -{ - public enum JSONBinaryTag - { - Array = 1, - Class = 2, - Value = 3, - IntValue = 4, - DoubleValue = 5, - BoolValue = 6, - FloatValue = 7, - } - - public class JSONNode - { - #region common interface - public virtual void Add(string aKey, JSONNode aItem){ } - public virtual JSONNode this[int aIndex] { get { return null; } set { } } - public virtual JSONNode this[string aKey] { get { return null; } set { } } - public virtual string Value { get { return ""; } set { } } - public virtual int Count { get { return 0; } } - - public virtual void Add(JSONNode aItem) - { - Add("", aItem); - } - - public virtual JSONNode Remove(string aKey) { return null; } - public virtual JSONNode Remove(int aIndex) { return null; } - public virtual JSONNode Remove(JSONNode aNode) { return aNode; } - - public virtual IEnumerable Childs { get { yield break;} } - public IEnumerable DeepChilds - { - get - { - foreach (var C in Childs) - foreach (var D in C.DeepChilds) - yield return D; - } - } - - public override string ToString() - { - return "JSONNode"; - } - public virtual string ToString(string aPrefix) - { - return "JSONNode"; - } - - #endregion common interface - - #region typecasting properties - public virtual int AsInt - { - get - { - int v = 0; - if (int.TryParse(Value,out v)) - return v; - return 0; - } - set - { - Value = value.ToString(); - } - } - public virtual float AsFloat - { - get - { - float v = 0.0f; - if (float.TryParse(Value,out v)) - return v; - return 0.0f; - } - set - { - Value = value.ToString(); - } - } - public virtual double AsDouble - { - get - { - double v = 0.0; - if (double.TryParse(Value,out v)) - return v; - return 0.0; - } - set - { - Value = value.ToString(); - } - } - public virtual bool AsBool - { - get - { - bool v = false; - if (bool.TryParse(Value,out v)) - return v; - return !string.IsNullOrEmpty(Value); - } - set - { - Value = (value)?"true":"false"; - } - } - public virtual JSONArray AsArray - { - get - { - return this as JSONArray; - } - } - public virtual JSONClass AsObject - { - get - { - return this as JSONClass; - } - } - - - #endregion typecasting properties - - #region operators - public static implicit operator JSONNode(string s) - { - return new JSONData(s); - } - public static implicit operator string(JSONNode d) - { - return (d == null)?null:d.Value; - } - public static bool operator ==(JSONNode a, object b) - { - if (b == null && a is JSONLazyCreator) - return true; - return System.Object.ReferenceEquals(a,b); - } - - public static bool operator !=(JSONNode a, object b) - { - return !(a == b); - } - public override bool Equals (object obj) - { - return System.Object.ReferenceEquals(this, obj); - } - public override int GetHashCode () - { - return base.GetHashCode(); - } - - - #endregion operators - - internal static string Escape(string aText) - { - string result = ""; - foreach(char c in aText) - { - switch(c) - { - case '\\' : result += "\\\\"; break; - case '\"' : result += "\\\""; break; - case '\n' : result += "\\n" ; break; - case '\r' : result += "\\r" ; break; - case '\t' : result += "\\t" ; break; - case '\b' : result += "\\b" ; break; - case '\f' : result += "\\f" ; break; - default : result += c ; break; - } - } - return result; - } - - public static JSONNode Parse(string aJSON) - { - Stack stack = new Stack(); - JSONNode ctx = null; - int i = 0; - string Token = ""; - string TokenName = ""; - bool QuoteMode = false; - while (i < aJSON.Length) - { - switch (aJSON[i]) - { - case '{': - if (QuoteMode) - { - Token += aJSON[i]; - break; - } - stack.Push(new JSONClass()); - if (ctx != null) - { - TokenName = TokenName.Trim(); - if (ctx is JSONArray) - ctx.Add(stack.Peek()); - else if (TokenName != "") - ctx.Add(TokenName,stack.Peek()); - } - TokenName = ""; - Token = ""; - ctx = stack.Peek(); - break; - - case '[': - if (QuoteMode) - { - Token += aJSON[i]; - break; - } - - stack.Push(new JSONArray()); - if (ctx != null) - { - TokenName = TokenName.Trim(); - if (ctx is JSONArray) - ctx.Add(stack.Peek()); - else if (TokenName != "") - ctx.Add(TokenName,stack.Peek()); - } - TokenName = ""; - Token = ""; - ctx = stack.Peek(); - break; - - case '}': - case ']': - if (QuoteMode) - { - Token += aJSON[i]; - break; - } - if (stack.Count == 0) - throw new Exception("JSON Parse: Too many closing brackets"); - - stack.Pop(); - if (Token != "") - { - TokenName = TokenName.Trim(); - if (ctx is JSONArray) - ctx.Add(Token); - else if (TokenName != "") - ctx.Add(TokenName,Token); - } - TokenName = ""; - Token = ""; - if (stack.Count>0) - ctx = stack.Peek(); - break; - - case ':': - if (QuoteMode) - { - Token += aJSON[i]; - break; - } - TokenName = Token; - Token = ""; - break; - - case '"': - QuoteMode ^= true; - break; - - case ',': - if (QuoteMode) - { - Token += aJSON[i]; - break; - } - if (Token != "") - { - if (ctx is JSONArray) - ctx.Add(Token); - else if (TokenName != "") - ctx.Add(TokenName, Token); - } - TokenName = ""; - Token = ""; - break; - - case '\r': - case '\n': - break; - - case ' ': - case '\t': - if (QuoteMode) - Token += aJSON[i]; - break; - - case '\\': - ++i; - if (QuoteMode) - { - char C = aJSON[i]; - switch (C) - { - case 't' : Token += '\t'; break; - case 'r' : Token += '\r'; break; - case 'n' : Token += '\n'; break; - case 'b' : Token += '\b'; break; - case 'f' : Token += '\f'; break; - case 'u': - { - string s = aJSON.Substring(i+1,4); - Token += (char)int.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier); - i += 4; - break; - } - default : Token += C; break; - } - } - break; - - default: - Token += aJSON[i]; - break; - } - ++i; - } - if (QuoteMode) - { - throw new Exception("JSON Parse: Quotation marks seems to be messed up."); - } - return ctx; - } - - public virtual void Serialize(System.IO.BinaryWriter aWriter) {} - - public void SaveToStream(System.IO.Stream aData) - { - var W = new System.IO.BinaryWriter(aData); - Serialize(W); - } - - #if USE_SharpZipLib - public void SaveToCompressedStream(System.IO.Stream aData) - { - using (var gzipOut = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(aData)) - { - gzipOut.IsStreamOwner = false; - SaveToStream(gzipOut); - gzipOut.Close(); - } - } - - public void SaveToCompressedFile(string aFileName) - { - #if USE_FileIO - System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName); - using(var F = System.IO.File.OpenWrite(aFileName)) - { - SaveToCompressedStream(F); - } - #else - throw new Exception("Can't use File IO stuff in webplayer"); - #endif - } - public string SaveToCompressedBase64() - { - using (var stream = new System.IO.MemoryStream()) - { - SaveToCompressedStream(stream); - stream.Position = 0; - return System.Convert.ToBase64String(stream.ToArray()); - } - } - - #else - public void SaveToCompressedStream(System.IO.Stream aData) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - public void SaveToCompressedFile(string aFileName) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - public string SaveToCompressedBase64() - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - #endif - - public void SaveToFile(string aFileName) - { - #if USE_FileIO - System.IO.Directory.CreateDirectory((new System.IO.FileInfo(aFileName)).Directory.FullName); - using(var F = System.IO.File.OpenWrite(aFileName)) - { - SaveToStream(F); - } - #else - throw new Exception("Can't use File IO stuff in webplayer"); - #endif - } - public string SaveToBase64() - { - using (var stream = new System.IO.MemoryStream()) - { - SaveToStream(stream); - stream.Position = 0; - return System.Convert.ToBase64String(stream.ToArray()); - } - } - public static JSONNode Deserialize(System.IO.BinaryReader aReader) - { - JSONBinaryTag type = (JSONBinaryTag)aReader.ReadByte(); - switch(type) - { - case JSONBinaryTag.Array: - { - int count = aReader.ReadInt32(); - JSONArray tmp = new JSONArray(); - for(int i = 0; i < count; i++) - tmp.Add(Deserialize(aReader)); - return tmp; - } - case JSONBinaryTag.Class: - { - int count = aReader.ReadInt32(); - JSONClass tmp = new JSONClass(); - for(int i = 0; i < count; i++) - { - string key = aReader.ReadString(); - var val = Deserialize(aReader); - tmp.Add(key, val); - } - return tmp; - } - case JSONBinaryTag.Value: - { - return new JSONData(aReader.ReadString()); - } - case JSONBinaryTag.IntValue: - { - return new JSONData(aReader.ReadInt32()); - } - case JSONBinaryTag.DoubleValue: - { - return new JSONData(aReader.ReadDouble()); - } - case JSONBinaryTag.BoolValue: - { - return new JSONData(aReader.ReadBoolean()); - } - case JSONBinaryTag.FloatValue: - { - return new JSONData(aReader.ReadSingle()); - } - - default: - { - throw new Exception("Error deserializing JSON. Unknown tag: " + type); - } - } - } - - #if USE_SharpZipLib - public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) - { - var zin = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(aData); - return LoadFromStream(zin); - } - public static JSONNode LoadFromCompressedFile(string aFileName) - { - #if USE_FileIO - using(var F = System.IO.File.OpenRead(aFileName)) - { - return LoadFromCompressedStream(F); - } - #else - throw new Exception("Can't use File IO stuff in webplayer"); - #endif - } - public static JSONNode LoadFromCompressedBase64(string aBase64) - { - var tmp = System.Convert.FromBase64String(aBase64); - var stream = new System.IO.MemoryStream(tmp); - stream.Position = 0; - return LoadFromCompressedStream(stream); - } - #else - public static JSONNode LoadFromCompressedFile(string aFileName) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - public static JSONNode LoadFromCompressedStream(System.IO.Stream aData) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - public static JSONNode LoadFromCompressedBase64(string aBase64) - { - throw new Exception("Can't use compressed functions. You need include the SharpZipLib and uncomment the define at the top of SimpleJSON"); - } - #endif - - public static JSONNode LoadFromStream(System.IO.Stream aData) - { - using(var R = new System.IO.BinaryReader(aData)) - { - return Deserialize(R); - } - } - public static JSONNode LoadFromFile(string aFileName) - { - #if USE_FileIO - using(var F = System.IO.File.OpenRead(aFileName)) - { - return LoadFromStream(F); - } - #else - throw new Exception("Can't use File IO stuff in webplayer"); - #endif - } - public static JSONNode LoadFromBase64(string aBase64) - { - var tmp = System.Convert.FromBase64String(aBase64); - var stream = new System.IO.MemoryStream(tmp); - stream.Position = 0; - return LoadFromStream(stream); - } - } // End of JSONNode - - public class JSONArray : JSONNode, IEnumerable - { - private List m_List = new List(); - public override JSONNode this[int aIndex] - { - get - { - if (aIndex<0 || aIndex >= m_List.Count) - return new JSONLazyCreator(this); - return m_List[aIndex]; - } - set - { - if (aIndex<0 || aIndex >= m_List.Count) - m_List.Add(value); - else - m_List[aIndex] = value; - } - } - public override JSONNode this[string aKey] - { - get{ return new JSONLazyCreator(this);} - set{ m_List.Add(value); } - } - public override int Count - { - get { return m_List.Count; } - } - public override void Add(string aKey, JSONNode aItem) - { - m_List.Add(aItem); - } - public override JSONNode Remove(int aIndex) - { - if (aIndex < 0 || aIndex >= m_List.Count) - return null; - JSONNode tmp = m_List[aIndex]; - m_List.RemoveAt(aIndex); - return tmp; - } - public override JSONNode Remove(JSONNode aNode) - { - m_List.Remove(aNode); - return aNode; - } - public override IEnumerable Childs - { - get - { - foreach(JSONNode N in m_List) - yield return N; - } - } - public IEnumerator GetEnumerator() - { - foreach(JSONNode N in m_List) - yield return N; - } - public override string ToString() - { - string result = "[ "; - foreach (JSONNode N in m_List) - { - if (result.Length > 2) - result += ", "; - result += N.ToString(); - } - result += " ]"; - return result; - } - public override string ToString(string aPrefix) - { - string result = "[ "; - foreach (JSONNode N in m_List) - { - if (result.Length > 3) - result += ", "; - result += "\n" + aPrefix + " "; - result += N.ToString(aPrefix+" "); - } - result += "\n" + aPrefix + "]"; - return result; - } - public override void Serialize (System.IO.BinaryWriter aWriter) - { - aWriter.Write((byte)JSONBinaryTag.Array); - aWriter.Write(m_List.Count); - for(int i = 0; i < m_List.Count; i++) - { - m_List[i].Serialize(aWriter); - } - } - } // End of JSONArray - - public class JSONClass : JSONNode, IEnumerable - { - private Dictionary m_Dict = new Dictionary(); - public override JSONNode this[string aKey] - { - get - { - if (m_Dict.ContainsKey(aKey)) - return m_Dict[aKey]; - else - return new JSONLazyCreator(this, aKey); - } - set - { - if (m_Dict.ContainsKey(aKey)) - m_Dict[aKey] = value; - else - m_Dict.Add(aKey,value); - } - } - public override JSONNode this[int aIndex] - { - get - { - if (aIndex < 0 || aIndex >= m_Dict.Count) - return null; - return m_Dict.ElementAt(aIndex).Value; - } - set - { - if (aIndex < 0 || aIndex >= m_Dict.Count) - return; - string key = m_Dict.ElementAt(aIndex).Key; - m_Dict[key] = value; - } - } - public override int Count - { - get { return m_Dict.Count; } - } - - - public override void Add(string aKey, JSONNode aItem) - { - if (!string.IsNullOrEmpty(aKey)) - { - if (m_Dict.ContainsKey(aKey)) - m_Dict[aKey] = aItem; - else - m_Dict.Add(aKey, aItem); - } - else - m_Dict.Add(Guid.NewGuid().ToString(), aItem); - } - - public override JSONNode Remove(string aKey) - { - if (!m_Dict.ContainsKey(aKey)) - return null; - JSONNode tmp = m_Dict[aKey]; - m_Dict.Remove(aKey); - return tmp; - } - public override JSONNode Remove(int aIndex) - { - if (aIndex < 0 || aIndex >= m_Dict.Count) - return null; - var item = m_Dict.ElementAt(aIndex); - m_Dict.Remove(item.Key); - return item.Value; - } - public override JSONNode Remove(JSONNode aNode) - { - try - { - var item = m_Dict.Where(k => k.Value == aNode).First(); - m_Dict.Remove(item.Key); - return aNode; - } - catch - { - return null; - } - } - - public override IEnumerable Childs - { - get - { - foreach(KeyValuePair N in m_Dict) - yield return N.Value; - } - } - - public IEnumerator GetEnumerator() - { - foreach(KeyValuePair N in m_Dict) - yield return N; - } - public override string ToString() - { - string result = "{"; - foreach (KeyValuePair N in m_Dict) - { - if (result.Length > 2) - result += ", "; - result += "\"" + Escape(N.Key) + "\":" + N.Value.ToString(); - } - result += "}"; - return result; - } - public override string ToString(string aPrefix) - { - string result = "{ "; - foreach (KeyValuePair N in m_Dict) - { - if (result.Length > 3) - result += ", "; - result += "\n" + aPrefix + " "; - result += "\"" + Escape(N.Key) + "\" : " + N.Value.ToString(aPrefix+" "); - } - result += "\n" + aPrefix + "}"; - return result; - } - public override void Serialize (System.IO.BinaryWriter aWriter) - { - aWriter.Write((byte)JSONBinaryTag.Class); - aWriter.Write(m_Dict.Count); - foreach(string K in m_Dict.Keys) - { - aWriter.Write(K); - m_Dict[K].Serialize(aWriter); - } - } - } // End of JSONClass - - public class JSONData : JSONNode - { - private string m_Data; - public override string Value - { - get { return m_Data; } - set { m_Data = value; } - } - public JSONData(string aData) - { - m_Data = aData; - } - public JSONData(float aData) - { - AsFloat = aData; - } - public JSONData(double aData) - { - AsDouble = aData; - } - public JSONData(bool aData) - { - AsBool = aData; - } - public JSONData(int aData) - { - AsInt = aData; - } - - public override string ToString() - { - return "\"" + Escape(m_Data) + "\""; - } - public override string ToString(string aPrefix) - { - return "\"" + Escape(m_Data) + "\""; - } - public override void Serialize (System.IO.BinaryWriter aWriter) - { - var tmp = new JSONData(""); - - tmp.AsInt = AsInt; - if (tmp.m_Data == this.m_Data) - { - aWriter.Write((byte)JSONBinaryTag.IntValue); - aWriter.Write(AsInt); - return; - } - tmp.AsFloat = AsFloat; - if (tmp.m_Data == this.m_Data) - { - aWriter.Write((byte)JSONBinaryTag.FloatValue); - aWriter.Write(AsFloat); - return; - } - tmp.AsDouble = AsDouble; - if (tmp.m_Data == this.m_Data) - { - aWriter.Write((byte)JSONBinaryTag.DoubleValue); - aWriter.Write(AsDouble); - return; - } - - tmp.AsBool = AsBool; - if (tmp.m_Data == this.m_Data) - { - aWriter.Write((byte)JSONBinaryTag.BoolValue); - aWriter.Write(AsBool); - return; - } - aWriter.Write((byte)JSONBinaryTag.Value); - aWriter.Write(m_Data); - } - } // End of JSONData - - internal class JSONLazyCreator : JSONNode - { - private JSONNode m_Node = null; - private string m_Key = null; - - public JSONLazyCreator(JSONNode aNode) - { - m_Node = aNode; - m_Key = null; - } - public JSONLazyCreator(JSONNode aNode, string aKey) - { - m_Node = aNode; - m_Key = aKey; - } - - private void Set(JSONNode aVal) - { - if (m_Key == null) - { - m_Node.Add(aVal); - } - else - { - m_Node.Add(m_Key, aVal); - } - m_Node = null; // Be GC friendly. - } - - public override JSONNode this[int aIndex] - { - get - { - return new JSONLazyCreator(this); - } - set - { - var tmp = new JSONArray(); - tmp.Add(value); - Set(tmp); - } - } - - public override JSONNode this[string aKey] - { - get - { - return new JSONLazyCreator(this, aKey); - } - set - { - var tmp = new JSONClass(); - tmp.Add(aKey, value); - Set(tmp); - } - } - public override void Add (JSONNode aItem) - { - var tmp = new JSONArray(); - tmp.Add(aItem); - Set(tmp); - } - public override void Add (string aKey, JSONNode aItem) - { - var tmp = new JSONClass(); - tmp.Add(aKey, aItem); - Set(tmp); - } - public static bool operator ==(JSONLazyCreator a, object b) - { - if (b == null) - return true; - return System.Object.ReferenceEquals(a,b); - } - - public static bool operator !=(JSONLazyCreator a, object b) - { - return !(a == b); - } - public override bool Equals (object obj) - { - if (obj == null) - return true; - return System.Object.ReferenceEquals(this, obj); - } - public override int GetHashCode () - { - return base.GetHashCode(); - } - - public override string ToString() - { - return ""; - } - public override string ToString(string aPrefix) - { - return ""; - } - - public override int AsInt - { - get - { - JSONData tmp = new JSONData(0); - Set(tmp); - return 0; - } - set - { - JSONData tmp = new JSONData(value); - Set(tmp); - } - } - public override float AsFloat - { - get - { - JSONData tmp = new JSONData(0.0f); - Set(tmp); - return 0.0f; - } - set - { - JSONData tmp = new JSONData(value); - Set(tmp); - } - } - public override double AsDouble - { - get - { - JSONData tmp = new JSONData(0.0); - Set(tmp); - return 0.0; - } - set - { - JSONData tmp = new JSONData(value); - Set(tmp); - } - } - public override bool AsBool - { - get - { - JSONData tmp = new JSONData(false); - Set(tmp); - return false; - } - set - { - JSONData tmp = new JSONData(value); - Set(tmp); - } - } - public override JSONArray AsArray - { - get - { - JSONArray tmp = new JSONArray(); - Set(tmp); - return tmp; - } - } - public override JSONClass AsObject - { - get - { - JSONClass tmp = new JSONClass(); - Set(tmp); - return tmp; - } - } - } // End of JSONLazyCreator - - public static class JSON - { - public static JSONNode Parse(string aJSON) - { - return JSONNode.Parse(aJSON); - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/SimpleJSON.cs.meta b/Assets/LunarConsole/Editor/SimpleJSON.cs.meta deleted file mode 100644 index 95bcad8..0000000 --- a/Assets/LunarConsole/Editor/SimpleJSON.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: f4e0e5bf8ad4d4d898f4be565775b3b8 -timeCreated: 1439244873 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/UI/ActionsAndVariablesWindow.cs b/Assets/LunarConsole/Editor/UI/ActionsAndVariablesWindow.cs deleted file mode 100644 index 5447d9c..0000000 --- a/Assets/LunarConsole/Editor/UI/ActionsAndVariablesWindow.cs +++ /dev/null @@ -1,257 +0,0 @@ -// -// ActionsAndVariablesWindow.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using UnityEngine; -using UnityEditor; - -using LunarConsolePlugin; -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - class ActionsAndVariablesWindow : EditorWindow - { - static readonly string PrefsKeyFilterText = "com.spacemadness.LunarMobileConsole.Editor.FilterText"; - - string m_filterText; - Vector2 m_scrollPosition; - - GUIStyle m_filterTextStyle; - GUIStyle m_filterButtonStyle; - GUIStyle m_headerLabelStyle; - GUIStyle m_resetButtonStyle; - - public ActionsAndVariablesWindow() - { - #if UNITY_5_0 - this.title = "Actions & Vars"; - #else - this.titleContent = new GUIContent("Actions & Vars"); - #endif - } - - void OnEnable() - { - m_filterText = EditorPrefs.GetString(PrefsKeyFilterText, ""); - } - - void OnGUI() - { - if (Application.isPlaying) - { - var instance = LunarConsole.instance; - if (instance != null && instance.registry != null) - { - OnRegistryGUI(instance.registry); - } - else - { - GUILayout.Label("Instance is not initialized"); - } - } - else - { - GUILayout.Label("Only available in Play Mode"); - } - } - - void OnRegistryGUI(CRegistry registry) - { - GUILayout.BeginVertical(); - { - GUILayout.BeginHorizontal(); - { - var oldFilterText = m_filterText; - m_filterText = GUILayout.TextField(m_filterText, filterTextStyle); - if (GUILayout.Button(GUIContent.none, filterButtonStyle)) - { - m_filterText = ""; - } - if (oldFilterText != m_filterText) - { - EditorPrefs.SetString(PrefsKeyFilterText, m_filterText); - } - } - GUILayout.EndHorizontal(); - - m_scrollPosition = GUILayout.BeginScrollView(m_scrollPosition); - { - var filterText = m_filterText.ToLower(); - - GUILayout.Label("Actions", headerLabelStyle); - foreach (var action in registry.actions) - { - if (m_filterText.Length == 0 || action.Name.ToLower().Contains(filterText)) - { - OnActionGUI(action); - } - } - - GUILayout.Label("Variables", headerLabelStyle); - foreach (var cvar in registry.cvars) - { - if (m_filterText.Length == 0 || cvar.Name.ToLower().Contains(filterText)) - { - OnVariableGUI(cvar); - } - } - } - GUILayout.EndScrollView(); - } - GUILayout.EndVertical(); - } - - void OnActionGUI(CAction action) - { - if (GUILayout.Button(action.Name)) - { - action.Execute(); - } - } - - void OnVariableGUI(CVar cvar) - { - if (cvar.IsHidden) - { - return; - } - - if (cvar.IsDefault) - { - OnVariableFieldGUI(cvar); - } - else - { - GUILayout.BeginHorizontal(); - { - OnVariableFieldGUI(cvar); - - GUI.SetNextControlName("Reset Button"); - if (GUILayout.Button("Reset", resetButtonStyle, GUILayout.Width(60))) - { - cvar.Value = cvar.DefaultValue; - GUI.FocusControl("Reset Button"); - LunarConsole.instance.MarkVariablesDirty(); - } - } - GUILayout.EndHorizontal(); - } - } - - static void OnVariableFieldGUI(CVar cvar) - { - EditorGUI.BeginChangeCheck(); - switch (cvar.Type) - { - case CVarType.Boolean: - cvar.BoolValue = EditorGUILayout.Toggle(cvar.Name, cvar.BoolValue); - break; - case CVarType.Float: - if (cvar.HasRange) - { - cvar.FloatValue = EditorGUILayout.Slider(cvar.Name, cvar.FloatValue, cvar.Range.min, cvar.Range.max); - } - else - { - cvar.FloatValue = EditorGUILayout.FloatField(cvar.Name, cvar.FloatValue); - } - break; - case CVarType.Integer: - cvar.IntValue = EditorGUILayout.IntField(cvar.Name, cvar.IntValue); - break; - case CVarType.String: - cvar.Value = EditorGUILayout.TextField(cvar.Name, cvar.Value); - break; - case CVarType.Enum: - var selectedIndex = Array.IndexOf(cvar.AvailableValues, cvar.Value); - var newSelectedIndex = EditorGUILayout.Popup(cvar.Name, selectedIndex, cvar.AvailableValues); - if (selectedIndex != newSelectedIndex) - { - cvar.Value = cvar.AvailableValues[newSelectedIndex]; - } - break; - default: - EditorGUILayout.LabelField(cvar.Name, cvar.Value); - break; - } - var changed = EditorGUI.EndChangeCheck(); - if (changed) - { - LunarConsole.instance.MarkVariablesDirty(); - } - } - - public static void ShowWindow() - { - EditorWindow.GetWindow(); - } - - private GUIStyle filterTextStyle - { - get - { - if (m_filterTextStyle == null) - { - m_filterTextStyle = new GUIStyle("SearchTextField"); - } - return m_filterTextStyle; - } - } - - private GUIStyle filterButtonStyle - { - get - { - if (m_filterButtonStyle == null) - { - m_filterButtonStyle = new GUIStyle("SearchCancelButton"); - } - return m_filterButtonStyle; - } - } - - private GUIStyle headerLabelStyle - { - get - { - if (m_headerLabelStyle == null) - { - m_headerLabelStyle = new GUIStyle("HeaderLabel"); - } - return m_headerLabelStyle; - } - } - - private GUIStyle resetButtonStyle - { - get - { - if (m_resetButtonStyle == null) - { - m_resetButtonStyle = new GUIStyle("minibutton"); - } - return m_resetButtonStyle; - } - } - } -} diff --git a/Assets/LunarConsole/Editor/UI/ActionsAndVariablesWindow.cs.meta b/Assets/LunarConsole/Editor/UI/ActionsAndVariablesWindow.cs.meta deleted file mode 100644 index d102982..0000000 --- a/Assets/LunarConsole/Editor/UI/ActionsAndVariablesWindow.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 89dfa70a569d141ed914e17534c3744a -timeCreated: 1493260830 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Updater.cs b/Assets/LunarConsole/Editor/Updater.cs deleted file mode 100644 index 9418335..0000000 --- a/Assets/LunarConsole/Editor/Updater.cs +++ /dev/null @@ -1,406 +0,0 @@ -// -// Updater.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using UnityEditor; - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text; -using System.Threading; - -using LunarConsolePluginInternal; - -namespace LunarConsoleEditorInternal -{ - static class Updater - { - private static readonly string kMessageBoxTitle = "Lunar Mobile Console"; - - struct UpdateInfo - { - public readonly string version; - public readonly string url; - public readonly string message; - - public UpdateInfo(string version, string url, string message) - { - this.version = version; - this.url = url; - this.message = message; - } - - public override string ToString() - { - return string.Format("UpdateInfo:\n\tversion={0}\n\turl={1}\n\tmessage={2}", version, url, message); - } - } - - struct VersionInfo - { - public readonly int major; - public readonly int minor; - public readonly int maintenance; - - public VersionInfo(int major, int minor, int maintenace) - { - this.major = major; - this.minor = minor; - this.maintenance = maintenace; - } - - public static bool TryParse(string value, out VersionInfo info) - { - if (value.Length > 1 && value.EndsWith("b")) - { - value = value.Substring(0, value.Length - 1); - } - - if (string.IsNullOrEmpty(value)) - { - info = default(VersionInfo); - return false; - } - - string[] tokens = value.Split('.'); - if (tokens.Length != 3) - { - info = default(VersionInfo); - return false; - } - - int major; - if (!int.TryParse(tokens[0], out major)) - { - info = default(VersionInfo); - return false; - } - - int minor; - if (!int.TryParse(tokens[1], out minor)) - { - info = default(VersionInfo); - return false; - } - - int maintenance; - if (!int.TryParse(tokens[2], out maintenance)) - { - info = default(VersionInfo); - return false; - } - - info = new VersionInfo(major, minor, maintenance); - return true; - } - - public int CompareTo(ref VersionInfo other) - { - int majorCmp = this.major.CompareTo(other.major); - if (majorCmp != 0) return majorCmp; - - int minorCmd = this.minor.CompareTo(other.minor); - if (minorCmd != 0) return minorCmd; - - return this.maintenance.CompareTo(other.maintenance); - } - } - - #pragma warning disable 0649 - private static LastCheckDate s_lastInstallCheckDate; - #pragma warning restore 0649 - - public static void TryCheckForUpdates() - { -#if !LUNAR_CONSOLE_UPDATER_DISABLED - s_lastInstallCheckDate = new LastCheckDate(kPrefsKeyLastUpdateCheckDate); - if (s_lastInstallCheckDate.CanCheckNow()) - { - s_lastInstallCheckDate.SetToday(); - CheckForUpdates(); - } - else - { - Log.d("Skipping update check. Next check: {0}", s_lastInstallCheckDate); - } -#endif - } - - public static void CheckForUpdates(bool silent = true) - { - LunarConsoleHttpClient downloader = new LunarConsoleHttpClient(LunarConsoleConfig.fullVersion ? Constants.UpdateJsonURLFull : Constants.UpdateJsonURLFree); - downloader.DownloadString(delegate (string response, Exception error) - { - if (error != null) - { - Log.e(error, "Can't get updater info"); - if (!silent) - { - Utils.ShowDialog(kMessageBoxTitle, "Update info is not available.\n\nTry again later.", "OK"); - } - return; - } - - UpdateInfo info; - if (response != null && TryParseUpdateInfo(response, out info)) - { - if (IsShouldSkipVersion(info.version)) - { - Log.d("User decided to skip version {0}", info.version); - return; - } - - if (PluginVersionChecker.IsNewerVersion(info.version)) - { - StringBuilder message = new StringBuilder(); - message.AppendFormat("A new version {0} is available!\n\n", info.version); - if (info.message != null && info.message.Length > 0) - { - message.Append(info.message); - message.AppendLine(); - } - - Utils.ShowDialog(kMessageBoxTitle, message.ToString(), - new DialogButton("Details...", delegate (string obj) - { - Application.OpenURL(info.url); - LunarConsoleEditorAnalytics.TrackEvent("Version", "updater_details"); - }), - new DialogButton("Remind me later", delegate (string obj) - { - LunarConsoleEditorAnalytics.TrackEvent("Version", "updater_later"); - }), - new DialogButton("Skip this version", delegate (string obj) - { - SetShouldSkipVersion(info.version); - LunarConsoleEditorAnalytics.TrackEvent("Version", "updater_skip"); - }) - ); - } - else - { - if (!silent) - { - Utils.ShowMessageDialog(kMessageBoxTitle, "Everything is up to date"); - } - Debug.Log("Everything is up to date"); - } - } - else - { - Log.e("Unable to parse response: '{0}'", response); - if (!silent) - { - Utils.ShowDialog(kMessageBoxTitle, "Update info is not available.\n\nTry again later.", "OK"); - } - } - }); - } - - public static void Reset() - { - s_lastInstallCheckDate.Reset(); - } - - private static bool TryParseUpdateInfo(string response, out UpdateInfo updateInfo) - { - try - { - JSONNode node = JSON.Parse(response); - - JSONClass root = node.AsObject; - if (root != null) - { - return TryParseUpdateInfo(root, out updateInfo); - } - } - catch (Exception e) - { - Log.e(e, "Unable to parse plugin update info"); - } - - updateInfo = default(UpdateInfo); - return false; - } - - private static bool TryParseUpdateInfo(JSONClass response, out UpdateInfo updateInfo) - { - string status = response["status"]; - if (status != "OK") - { - Log.e("Unexpected response 'status': {0}", status); - - updateInfo = default(UpdateInfo); - return false; - } - - string version = response["version"]; - if (version == null) - { - Log.e("Missing response 'version' string"); - - updateInfo = default(UpdateInfo); - return false; - } - - string url = response["url"]; - if (url == null) - { - Log.e("Missing response 'url' string"); - - updateInfo = default(UpdateInfo); - return false; - } - - string message = response["message"]; - if (message == null) - { - Log.e("Missing response 'message'"); - - updateInfo = default(UpdateInfo); - return false; - } - - updateInfo = new UpdateInfo(version, url, message); - return true; - } - - static class PluginVersionChecker - { - public static bool IsNewerVersion(string version) - { - VersionInfo newVersion; - if (!VersionInfo.TryParse(version, out newVersion)) - { - throw new ArgumentException("Bad version number: " + version); - } - - string oldVersionStr = ResolvePluginVersion(); - VersionInfo oldVersion; - - if (oldVersionStr != null && VersionInfo.TryParse(oldVersionStr, out oldVersion)) - { - return oldVersion.CompareTo(ref newVersion) < 0; - } - - return true; - } - - private static string ResolvePluginVersion() - { - return Constants.Version; - } - } - - #region Preferences - - private static readonly string kPrefsKeySkipVersion = Constants.EditorPrefsKeyBase + ".SkipVersion"; - private static readonly string kPrefsKeyLastUpdateCheckDate = Constants.EditorPrefsKeyBase + ".LastUpdateCheckDate"; - - private static bool IsShouldSkipVersion(string version) - { - string skipVersion = EditorPrefs.GetString(kPrefsKeySkipVersion); - return skipVersion == version; - } - - private static void SetShouldSkipVersion(string version) - { - EditorPrefs.SetString(kPrefsKeySkipVersion, version); - } - - private static bool GetPrefsFlag(string key) - { - return EditorPrefs.GetInt(key, 0) != 0; - } - - private static void SetPrefsFlag(string key, bool flag) - { - EditorPrefs.SetInt(key, flag ? 1 : 0); - } - - #endregion - - #region Last date checker - - class LastCheckDate - { - private string m_key; - - public LastCheckDate(string key) - { - if (key == null) - { - throw new ArgumentNullException("key"); - } - - m_key = key; - } - - public bool CanCheckNow() - { - DateTime lastCheckDate = GetDate(); - int totalDays = (int)(DateTime.Now - lastCheckDate).TotalDays; - return totalDays > 0; - } - - public void SetToday() - { - SetDate(DateTime.Now); - } - - public void SetNever() - { - SetDate(DateTime.MaxValue); - } - - public void Reset() - { - EditorPrefs.DeleteKey(m_key); - } - - private void SetDate(DateTime date) - { - EditorPrefs.SetString(m_key, date.ToShortDateString()); - } - - private DateTime GetDate() - { - string value = EditorPrefs.GetString(m_key); - - DateTime date; - if (value != null && DateTime.TryParse(value, out date)) - { - return date; - } - return DateTime.MinValue; - } - - public override string ToString() - { - return GetDate().ToString(); - } - } - - #endregion - } -} diff --git a/Assets/LunarConsole/Editor/Updater.cs.meta b/Assets/LunarConsole/Editor/Updater.cs.meta deleted file mode 100644 index c5d5c5f..0000000 --- a/Assets/LunarConsole/Editor/Updater.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: fb51c0db153dd4064a9cdb951f7cbcc9 -timeCreated: 1439244620 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Utils.cs b/Assets/LunarConsole/Editor/Utils.cs deleted file mode 100644 index 5e9c8db..0000000 --- a/Assets/LunarConsole/Editor/Utils.cs +++ /dev/null @@ -1,155 +0,0 @@ -// -// Utils.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using UnityEditor; - -using System; -using System.Collections.Generic; -using System.Reflection; - -namespace LunarConsoleEditorInternal -{ - struct DialogButton - { - public readonly string title; - public readonly Action action; - - public DialogButton(string title, Action action) - { - this.title = title; - this.action = action != null ? (Action)(delegate(string obj) { action(); }) : null; - } - - public DialogButton(string title, Action action = null) - { - this.title = title; - this.action = action; - } - - internal void PerformAction() - { - try - { - if (action != null) - { - action(title); - } - } - catch (Exception e) - { - Debug.LogException(e); - } - } - } - - static class Utils - { - #region Dialogs - - internal static bool ShowDialog(string title, string message) - { - return EditorUtility.DisplayDialog(title, message, "Ok", "Cancel"); - } - - internal static bool ShowDialog(string title, string message, string ok) - { - return EditorUtility.DisplayDialog(title, message, ok); - } - - internal static void ShowDialog(string title, string message, DialogButton buttonOk) - { - if (EditorUtility.DisplayDialog(title, message, buttonOk.title)) - { - buttonOk.PerformAction(); - } - } - - internal static void ShowDialog(string title, string message, DialogButton buttonOk, DialogButton buttonCancel) - { - if (EditorUtility.DisplayDialog(title, message, buttonOk.title, buttonCancel.title)) - { - buttonOk.PerformAction(); - } - else - { - buttonCancel.PerformAction(); - } - } - - internal static void ShowDialog(string title, string message, DialogButton buttonOk, DialogButton buttonCancel, DialogButton buttonAlt) - { - int choice = EditorUtility.DisplayDialogComplex(title, message, buttonOk.title, buttonCancel.title, buttonAlt.title); - switch (choice) - { - case 0: - buttonOk.PerformAction(); - break; - case 1: - buttonCancel.PerformAction(); - break; - case 2: - buttonAlt.PerformAction(); - break; - } - } - - internal static void ShowMessageDialog(string title, string message) - { - EditorUtility.DisplayDialog(title, message, "OK"); - } - - #endregion - - #region Dispatcher - - private static Queue s_dispatchQueue = new Queue(); - - public static void DispatchOnMainThread(Action action) - { - lock (s_dispatchQueue) - { - s_dispatchQueue.Enqueue(action); - if (s_dispatchQueue.Count == 1) - { - EditorApplication.update += RunDispatch; - } - } - } - - private static void RunDispatch() - { - lock (s_dispatchQueue) - { - while (s_dispatchQueue.Count > 0) - { - Action action = s_dispatchQueue.Dequeue(); - action(); - } - - EditorApplication.update -= RunDispatch; - } - } - - #endregion - } -} diff --git a/Assets/LunarConsole/Editor/Utils.cs.meta b/Assets/LunarConsole/Editor/Utils.cs.meta deleted file mode 100644 index 4d10b44..0000000 --- a/Assets/LunarConsole/Editor/Utils.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 1cabf23b0ba0747f0b6be238bfa69080 -timeCreated: 1439247737 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS.meta b/Assets/LunarConsole/Editor/iOS.meta deleted file mode 100644 index 75b13a9..0000000 --- a/Assets/LunarConsole/Editor/iOS.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: acac5893e92d8409bb8a6d5256f472ce -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console.meta b/Assets/LunarConsole/Editor/iOS/Common/Console.meta deleted file mode 100644 index adcec4b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 95e0f3895fc814ba98e47bcd8a2c63e1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries.meta deleted file mode 100644 index 3ebd4d2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 16b8006fca7a642ddad098538178ac22 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.h deleted file mode 100644 index b561285..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// LUEntry.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUEntry : NSObject - -@property (nonatomic, readonly) int actionId; // FIXME: rename -@property (nonatomic, readonly) NSString *name; - -- (instancetype)initWithId:(int)actionId name:(NSString *)name; - -- (UITableViewCell *)tableView:(UITableView *)tableView cellAtIndex:(NSUInteger)index; -- (CGSize)cellSizeForTableView:(UITableView *)tableView; - -- (NSComparisonResult)compare:(LUEntry *)other; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.h.meta deleted file mode 100644 index 996d1db..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: f7fc75680bec84d28afec20b0bc02a8f -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.m deleted file mode 100644 index 0ce3b31..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.m +++ /dev/null @@ -1,93 +0,0 @@ -// -// LUEntry.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUEntry.h" - -#import "Lunar.h" - -@implementation LUEntry - -- (instancetype)initWithId:(int)actionId name:(NSString *)name -{ - self = [super init]; - if (self) - { - if (name.length == 0) - { - NSLog(@"Can't create an entry: name is nil or empty"); - self = nil; - return nil; - } - - _actionId = actionId; - _name = name; - } - return self; -} - - -#pragma mark - -#pragma mark NSComparisonMethods - -- (NSComparisonResult)compare:(LUEntry *)other -{ - return [_name compare:other.name]; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if ([object isKindOfClass:[LUEntry class]]) - { - LUEntry *entry = object; - return self.actionId == entry.actionId && [self.name isEqualToString:entry.name]; - } - - return NO; -} - -#pragma mark - -#pragma mark Description - -- (NSString *)description -{ - return [NSString stringWithFormat:@"%d: %@", self.actionId, self.name]; -} - -#pragma mark - -#pragma mark UITableView - -- (UITableViewCell *)tableView:(UITableView *)tableView cellAtIndex:(NSUInteger)index -{ - LU_SHOULD_IMPLEMENT_METHOD - return nil; -} - -- (CGSize)cellSizeForTableView:(UITableView *)tableView -{ - LU_SHOULD_IMPLEMENT_METHOD - return CGSizeMake(CGRectGetWidth(tableView.bounds), 44); -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.m.meta deleted file mode 100644 index 3cc4f9d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntry.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 1a687b52187ce4716b60b95e65c81019 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.h deleted file mode 100644 index be081a9..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// LUEntryTableViewCell.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUEntryTableViewCell : UITableViewCell - -+ (instancetype)cellWithFrame:(CGRect)frame cellIdentifier:(NSString *)cellIdentifier; -- (instancetype)initWithFrame:(CGRect)frame cellIdentifier:(NSString *)cellIdentifier; - -- (void)setSize:(CGSize)size; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.h.meta deleted file mode 100644 index a9d17d7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: ba040e2b1a79c466e8faf6ff3cc9cbe0 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.m deleted file mode 100644 index 8378bd5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.m +++ /dev/null @@ -1,52 +0,0 @@ -// -// LUEntryTableViewCell.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "Lunar.h" - -#import "LUEntryTableViewCell.h" - -@implementation LUEntryTableViewCell - -+ (instancetype)cellWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier -{ - return [[[self class] alloc] initWithFrame:frame cellIdentifier:cellIdentifier]; -} - -- (instancetype)initWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier -{ - self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; - if (self) - { - self.contentView.bounds = frame; - } - return self; -} - -#pragma mark - -#pragma mark Size - -- (void)setSize:(CGSize)size -{ - self.contentView.bounds = CGRectMake(0, 0, size.width, size.height); -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.m.meta deleted file mode 100644 index 0894ea6..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Entries/LUEntryTableViewCell.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 8ce4c8f8268e44fedae917712e81380e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.h b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.h deleted file mode 100644 index 17b97c5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.h +++ /dev/null @@ -1,64 +0,0 @@ -// -// LUConsole.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUConsoleLogEntry.h" - -@class LUConsole; -@class LUConsoleLogEntryList; -@class LULogMessage; - -@protocol LunarConsoleDelegate - -@required -- (void)lunarConsole:(LUConsole *)console didAddEntryAtIndex:(NSInteger)index trimmedCount:(NSUInteger)trimmedCount; -- (void)lunarConsole:(LUConsole *)console didUpdateEntryAtIndex:(NSInteger)index trimmedCount:(NSUInteger)trimmedCount; - -@optional -- (void)lunarConsole:(LUConsole *)console didRemoveRange:(NSRange )range; -- (void)lunarConsoleDidClearEntries:(LUConsole *)console; - -@end - -@interface LUConsole : NSObject - -@property (nonatomic, weak) id delegate; -@property (nonatomic, assign, getter=isCollapsed) BOOL collapsed; - -@property (nonatomic, readonly) LUConsoleLogEntryList * entries; -@property (nonatomic, readonly) NSUInteger capacity; -@property (nonatomic, readonly) NSUInteger entriesCount; -@property (nonatomic, readonly) NSUInteger trimmedCount; -@property (nonatomic, readonly) NSUInteger trimCount; -@property (nonatomic, readonly) BOOL isTrimmed; - -- (instancetype)initWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount; - -- (LUConsoleLogEntry *)entryAtIndex:(NSUInteger)index; - -- (void)logMessage:(LULogMessage *)message stackTrace:(NSString *)stackTrace type:(LUConsoleLogType)type; -- (void)clear; - -- (NSString *)getText; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.h.meta deleted file mode 100644 index 845d298..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 44853f98f632549f0a5d0d0da54dc0cf -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.m b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.m deleted file mode 100644 index fbdf312..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.m +++ /dev/null @@ -1,135 +0,0 @@ -// -// LUConsole.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsole.h" - -#import "Lunar.h" - -@interface LUConsole () -{ - LUConsoleLogEntryList * _entries; -} - -@end - -@implementation LUConsole - -- (instancetype)initWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount -{ - self = [super init]; - if (self) - { - _entries = [[LUConsoleLogEntryList alloc] initWithCapacity:capacity trimCount:trimCount]; - } - return self; -} - - -#pragma mark - -#pragma mark Entries - -- (LUConsoleLogEntry *)entryAtIndex:(NSUInteger)index -{ - return [_entries entryAtIndex:index]; -} - -- (void)logMessage:(LULogMessage *)message stackTrace:(NSString *)stackTrace type:(LUConsoleLogType)type -{ - NSUInteger oldTotalCount = _entries.totalCount; // total count before we added a new item - NSUInteger oldTrimmedCount = _entries.trimmedCount; // trimmed count before we added a new item - - LUConsoleLogEntry *entry = [[LUConsoleLogEntry alloc] initWithType:type message:message stackTrace:stackTrace]; - NSInteger index = [_entries addEntry:entry]; - - NSInteger trimmed = _entries.trimmedCount - oldTrimmedCount; - if (trimmed > 0) // more items are trimmed - { - if ([_delegate respondsToSelector:@selector(lunarConsole:didRemoveRange:)]) - { - [_delegate lunarConsole:self didRemoveRange:NSMakeRange(0, trimmed)]; - } - } - - if (oldTotalCount != _entries.totalCount) - { - [_delegate lunarConsole:self didAddEntryAtIndex:index trimmedCount:trimmed]; - } - else if (index != -1) - { - [_delegate lunarConsole:self didUpdateEntryAtIndex:index trimmedCount:trimmed]; - } - -} - -- (void)clear -{ - [_entries clear]; - if ([_delegate respondsToSelector:@selector(lunarConsoleDidClearEntries:)]) - { - [_delegate lunarConsoleDidClearEntries:self]; - } -} - -- (NSString *)getText -{ - return [_entries getText]; -} - -#pragma mark - -#pragma mark Properties - -- (NSUInteger)capacity -{ - return _entries.capacity; -} - -- (NSUInteger)entriesCount -{ - return _entries.count; -} - -- (NSUInteger)trimmedCount -{ - return _entries.trimmedCount; -} - -- (NSUInteger)trimCount -{ - return _entries.trimCount; -} - -- (BOOL)isTrimmed -{ - return _entries.isTrimmed; -} - -- (void)setCollapsed:(BOOL)collapsed -{ - _entries.collapsed = collapsed; -} - -- (BOOL)isCollapsed -{ - return _entries.isCollapsed; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.m.meta deleted file mode 100644 index 2a4c728..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsole.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 324fc3f90e9744b70900cf60419bad88 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.h b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.h deleted file mode 100644 index ae6fe51..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.h +++ /dev/null @@ -1,54 +0,0 @@ -// -// LUConsoleController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUViewController.h" -#import "LUSerializableObject.h" - -@class LUConsolePlugin; -@class LUConsoleController; - -extern NSString * const LUConsoleControllerDidResizeNotification; - -@protocol LUConsoleControllerDelegate - -@optional -- (void)consoleControllerDidOpen:(LUConsoleController *)controller; -- (void)consoleControllerDidClose:(LUConsoleController *)controller; - -@end - -@interface LUConsoleControllerState : LUSerializableObject - -@property (nonatomic, assign) UIEdgeInsets controllerInsets; - -@end - -@interface LUConsoleController : LUViewController - -@property (nonatomic, assign) BOOL scrollEnabled; -@property (nonatomic, strong) NSArray *emails; -@property (nonatomic, weak) id delegate; - -+ (instancetype)controllerWithPlugin:(LUConsolePlugin *)plugin; -- (instancetype)initWithPlugin:(LUConsolePlugin *)plugin; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.h.meta deleted file mode 100644 index 7c51e6b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 981e16c0d82dc4e49ac57e3664f5e636 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.m b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.m deleted file mode 100644 index f4e7928..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.m +++ /dev/null @@ -1,368 +0,0 @@ -// -// LUConsoleController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsoleController.h" - -#import "Lunar.h" - -static NSString *const kStateFilename = @"com.spacemadness.lunarmobileconsole.state.bin"; - -NSString *const LUConsoleControllerDidResizeNotification = @"LUConsoleControllerDidResizeNotification"; - -@interface LUConsoleController () - -@property (nonatomic, weak) IBOutlet UIScrollView *scrollView; // we need to be able to use "paging" scrolling between differenct controllers - -@property (nonatomic, weak) IBOutlet UIView *contentView; // the container view for controllers and "button" bar at the bottom - -// we need to keep constraints in order to properly resize content view with auto layout (can't just set frames) -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentTrailingConstraint; -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentBottomConstraint; -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentLeadingConstraint; -@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentTopConstraint; - -@property (nonatomic, weak) LUConsolePlugin *plugin; -@property (nonatomic, strong) NSArray *pageControllers; -@property (nonatomic, strong) LUConsoleControllerState *state; - -@end - -@implementation LUConsoleController - -+ (instancetype)controllerWithPlugin:(LUConsolePlugin *)plugin -{ - return [[self alloc] initWithPlugin:plugin]; -} - -- (instancetype)initWithPlugin:(LUConsolePlugin *)plugin -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) { - _plugin = plugin; - _state = [LUConsoleControllerState loadFromFile:kStateFilename]; - } - return self; -} - -- (void)dealloc -{ - [self unregisterNotifications]; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // background - self.view.opaque = YES; - self.view.backgroundColor = [UIColor clearColor]; - - // controllers - LUConsoleLogController *logController = [LUConsoleLogController controllerWithPlugin:_plugin]; - logController.version = _plugin.version; - logController.emails = _emails; - logController.resizeDelegate = self; - - LUActionController *actionController = [LUActionController controllerWithActionRegistry:_plugin.actionRegistry]; - - _pageControllers = @[ logController, actionController ]; - [self setPageControllers:_pageControllers]; - - // notify delegate - if ([_delegate respondsToSelector:@selector(consoleControllerDidOpen:)]) { - [_delegate consoleControllerDidOpen:self]; - } - - self.contentView.translatesAutoresizingMaskIntoConstraints = NO; - self.scrollView.translatesAutoresizingMaskIntoConstraints = NO; - - [self setControllerInsets:_state.controllerInsets]; - - [self registerNotifications]; -} - -- (void)viewDidLayoutSubviews -{ - [super viewDidLayoutSubviews]; - - // set paging - CGSize pageSize = _scrollView.bounds.size; - CGSize contentSize = CGSizeMake(_pageControllers.count * pageSize.width, pageSize.height); - _scrollView.contentSize = contentSize; -} - -- (void)setPageControllers:(NSArray *)controllers -{ - NSMutableArray *constraints = [NSMutableArray new]; - - for (NSUInteger idx = 0; idx < controllers.count; ++idx) { - UIViewController *controller = controllers[idx]; - UIViewController *prevController = idx > 0 ? controllers[idx - 1] : nil; - UIViewController *nextController = idx < controllers.count - 1 ? controllers[idx + 1] : nil; - - controller.view.translatesAutoresizingMaskIntoConstraints = NO; - - // add child controller - [self addChildViewController:controller]; - - // add view - [_scrollView addSubview:controller.view]; - - // call notification - [controller didMoveToParentViewController:controller]; - - // width - [constraints addObject:[NSLayoutConstraint constraintWithItem:controller.view - attribute:NSLayoutAttributeWidth - relatedBy:NSLayoutRelationEqual - toItem:_scrollView - attribute:NSLayoutAttributeWidth - multiplier:1.0 - constant:0]]; - - // height - [constraints addObject:[NSLayoutConstraint constraintWithItem:controller.view - attribute:NSLayoutAttributeHeight - relatedBy:NSLayoutRelationEqual - toItem:_scrollView - attribute:NSLayoutAttributeHeight - multiplier:1.0 - constant:0]]; - - // vertical center - [constraints addObject:[NSLayoutConstraint constraintWithItem:controller.view - attribute:NSLayoutAttributeCenterY - relatedBy:NSLayoutRelationEqual - toItem:_scrollView - attribute:NSLayoutAttributeCenterY - multiplier:1.0 - constant:0]]; - - // left - if (prevController) { - [constraints addObject:[NSLayoutConstraint constraintWithItem:controller.view - attribute:NSLayoutAttributeLeft - relatedBy:NSLayoutRelationEqual - toItem:prevController.view - attribute:NSLayoutAttributeRight - multiplier:1.0 - constant:0]]; - } else { - [constraints addObject:[NSLayoutConstraint constraintWithItem:controller.view - attribute:NSLayoutAttributeLeft - relatedBy:NSLayoutRelationEqual - toItem:_scrollView - attribute:NSLayoutAttributeLeft - multiplier:1.0 - constant:0]]; - } - - // right - if (nextController) { - [constraints addObject:[NSLayoutConstraint constraintWithItem:controller.view - attribute:NSLayoutAttributeRight - relatedBy:NSLayoutRelationEqual - toItem:nextController.view - attribute:NSLayoutAttributeLeft - multiplier:1.0 - constant:0]]; - } else { - [constraints addObject:[NSLayoutConstraint constraintWithItem:controller.view - attribute:NSLayoutAttributeRight - relatedBy:NSLayoutRelationEqual - toItem:_scrollView - attribute:NSLayoutAttributeRight - multiplier:1.0 - constant:0]]; - } - } - - [NSLayoutConstraint activateConstraints:constraints]; -} - -#pragma mark - -#pragma mark Notifications - -- (void)registerNotifications -{ - [LUNotificationCenter addObserver:self - selector:@selector(consolePopupControllerWillAppearNotification:) - name:LUConsolePopupControllerWillAppearNotification - object:nil]; - - [LUNotificationCenter addObserver:self - selector:@selector(consolePopupControllerWillDisappearNotification:) - name:LUConsolePopupControllerWillDisappearNotification - object:nil]; -} - -- (void)unregisterNotifications -{ - [LUNotificationCenter removeObserver:self]; -} - -- (void)consolePopupControllerWillAppearNotification:(NSNotification *)notification -{ - self.scrollEnabled = NO; -} - -- (void)consolePopupControllerWillDisappearNotification:(NSNotification *)notification -{ - self.scrollEnabled = YES; -} - -#pragma mark - -#pragma mark Helpers - -- (void)setContentHidden:(BOOL)hidden -{ - self.contentView.hidden = hidden; -} - -- (void)setControllerInsets:(UIEdgeInsets)insets -{ - self.contentTopConstraint.constant = insets.top; - self.contentBottomConstraint.constant = insets.bottom; - self.contentLeadingConstraint.constant = insets.left; - self.contentTrailingConstraint.constant = insets.right; -} - -#pragma mark - -#pragma mark Actions - -- (IBAction)onClose:(id)sender -{ - if ([_delegate respondsToSelector:@selector(consoleControllerDidClose:)]) { - [_delegate consoleControllerDidClose:self]; - } -} - -#pragma mark - -#pragma mark LUConsoleLogControllerResizeDelegate - -- (void)consoleLogControllerDidRequestResize:(LUConsoleLogController *)controller -{ - [self setContentHidden:YES]; - - CGSize maxSize = [LUUIHelper safeAreaRect].size; - LUConsoleResizeController *resizeController = [[LUConsoleResizeController alloc] initWithMaxSize:maxSize - topConstraint:self.contentTopConstraint - leadingConstraint:self.contentLeadingConstraint - bottomConstraint:self.contentBottomConstraint - trailingConstraint:self.contentTrailingConstraint]; - resizeController.delegate = self; - [self addChildController:resizeController withFrame:self.contentView.frame]; - - [LUUIHelper view:resizeController.view centerInParent:self.contentView]; -} - -#pragma mark - -#pragma mark LUConsoleResizeControllerDelegate - -- (void)consoleResizeControllerDidClose:(LUConsoleResizeController *)controller -{ - [self removeChildController:controller]; - [self setContentHidden:NO]; - - _state.controllerInsets = UIEdgeInsetsMake( - self.contentTopConstraint.constant, - self.contentLeadingConstraint.constant, - self.contentBottomConstraint.constant, - self.contentTrailingConstraint.constant - ); - - // post notification - [LUNotificationCenter postNotificationName:LUConsoleControllerDidResizeNotification object:nil]; -} - -#pragma mark - -#pragma mark Properties - -- (BOOL)scrollEnabled -{ - return _scrollView.scrollEnabled; -} - -- (void)setScrollEnabled:(BOOL)scrollEnabled -{ - _scrollView.scrollEnabled = scrollEnabled; -} - -@end - -@implementation LUConsoleControllerState - -#pragma mark - -#pragma mark Loading - -+ (void)initialize -{ - if ([self class] == [LUConsoleControllerState class]) { - [self setVersion:1]; - - if (LU_IOS_MIN_VERSION_AVAILABLE) - { - // force linker to add these classes for Interface Builder - [LUButton class]; - [LUConsoleLogTypeButton class]; - [LUSlider class]; - [LUSwitch class]; - [LUTableView class]; - [LUPassTouchView class]; - [LUTextField class]; - } - } -} - -#pragma mark - -#pragma mark Inheritance - -- (void)initDefaults -{ - if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { - CGSize screenSize = LUGetScreenBounds().size; - _controllerInsets = UIEdgeInsetsMake(0, 0, 0.5 * screenSize.height, 0); - } else { - _controllerInsets = UIEdgeInsetsZero; - } -} - -- (void)serializeWithCoder:(NSCoder *)coder -{ - [coder encodeUIEdgeInsets:_controllerInsets forKey:@"controllerInsets"]; -} - -- (void)deserializeWithDecoder:(NSCoder *)decoder -{ - _controllerInsets = [decoder decodeUIEdgeInsetsForKey:@"controllerInsets"]; -} - -#pragma mark - -#pragma mark Properties - -- (void)setControllerInsets:(UIEdgeInsets)controllerInsets -{ - _controllerInsets = controllerInsets; - [self save]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.m.meta deleted file mode 100644 index 49fa3fb..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: c3c32411589f74f83bfb5137d46b6c21 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.xib b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.xib deleted file mode 100644 index 3264799..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.xib +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.xib.meta deleted file mode 100644 index 04e8417..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/LUConsoleController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 05034a8140d75412e92b9168baa9a9a2 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log.meta deleted file mode 100644 index d17e9ec..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b368541b6a0a1449aa2ab3042913628b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.h deleted file mode 100644 index d4a8701..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// LUConsoleLogController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUViewController.h" - -@class LUConsolePlugin; -@class LUConsoleLogController; - -@protocol LUConsoleLogControllerResizeDelegate - -- (void)consoleLogControllerDidRequestResize:(LUConsoleLogController *)controller; - -@end - -@interface LUConsoleLogController : LUViewController - -@property (nonatomic, strong) NSString *version; -@property (nonatomic, strong) NSArray *emails; -@property (nonatomic, weak) id resizeDelegate; - -+ (instancetype)controllerWithPlugin:(LUConsolePlugin *)plugin; -- (instancetype)initWithPlugin:(LUConsolePlugin *)plugin; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.h.meta deleted file mode 100644 index 215fd42..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: e29f73a7b805448089e6df5cd255e9d5 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.m deleted file mode 100644 index 9477985..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.m +++ /dev/null @@ -1,762 +0,0 @@ -// -// LUConsoleLogController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUConsoleLogController.h" - -#import "Lunar.h" - -static const CGFloat kMinWidthToResizeSearchBar = 480; - -@interface LUConsoleLogController () { - LU_WEAK LUConsolePlugin *_plugin; -} - -@property (weak, nonatomic, readonly) LUConsole *console; - -@property (nonatomic, weak) IBOutlet UILabel *statusBar; -@property (nonatomic, weak) IBOutlet UILabel *overflowWarningLabel; - -@property (nonatomic, weak) IBOutlet LUTableView *tableView; -@property (nonatomic, weak) IBOutlet UISearchBar *filterBar; -@property (nonatomic, weak) IBOutlet UIView *controlButtonsView; - -@property (nonatomic, weak) IBOutlet LUConsoleLogTypeButton *logButton; -@property (nonatomic, weak) IBOutlet LUConsoleLogTypeButton *warningButton; -@property (nonatomic, weak) IBOutlet LUConsoleLogTypeButton *errorButton; - -@property (nonatomic, weak) IBOutlet LUToggleButton *scrollLockButton; - -@property (nonatomic, assign) BOOL scrollLocked; - -@end - -@implementation LUConsoleLogController - -+ (instancetype)controllerWithPlugin:(LUConsolePlugin *)plugin -{ - return [[[self class] alloc] initWithPlugin:plugin]; -} - -- (instancetype)initWithPlugin:(LUConsolePlugin *)plugin -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) { - _plugin = plugin; // weak variable: no retain here - [self registerNotifications]; - } - return self; -} - -- (void)dealloc -{ - [self unregisterNotifications]; - - if (self.console.delegate == self) { - self.console.delegate = nil; - } -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.console.delegate = self; - - // scroll lock - self.scrollLocked = YES; // scroll is locked by default - self.scrollLockButton.on = self.scrollLocked; - self.scrollLockButton.delegate = self; - - LUTheme *theme = [self theme]; - - // title - self.title = @"Logs"; - - // background - self.view.opaque = YES; - self.view.backgroundColor = theme.tableColor; - - // table view - self.tableView.dataSource = self; - self.tableView.delegate = self; - self.tableView.touchDelegate = self; - self.tableView.backgroundColor = theme.tableColor; - - // "status bar" view - UITapGestureRecognizer *statusBarTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self - action:@selector(onStatusBarTap:)]; - [self.statusBar addGestureRecognizer:statusBarTapGestureRecognizer]; - - self.statusBar.backgroundColor = theme.statusBarColor; - self.statusBar.textColor = theme.statusBarTextColor; - self.statusBar.text = [NSString stringWithFormat:@"Lunar Console v%@", _version ? _version : @"?.?.?"]; - - // log type buttons - self.logButton.on = ![self.console.entries isFilterLogTypeEnabled:LUConsoleLogTypeLog]; - self.logButton.delegate = self; - - self.warningButton.on = ![self.console.entries isFilterLogTypeEnabled:LUConsoleLogTypeWarning]; - self.warningButton.delegate = self; - - self.errorButton.on = ![self.console.entries isFilterLogTypeEnabled:LUConsoleLogTypeError]; - self.errorButton.delegate = self; - - // control buttons - self.controlButtonsView.backgroundColor = theme.tableColor; - - // filter text - self.filterBar.text = self.console.entries.filterText; - self.filterBar.delegate = self; - - // log entries count - [self updateEntriesCount]; - - // overflow warning - dispatch_async(dispatch_get_main_queue(), ^{ - // give the table a chance to layout - [self updateOverflowWarning]; - - // scroll to the end - if (self.scrollLocked) { - [self scrollToBottomAnimated:NO]; - } - }); -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - [self.navigationController setNavigationBarHidden:YES animated:animated]; -} - -- (void)viewWillDisappear:(BOOL)animated -{ - [super viewWillDisappear:animated]; - [self.navigationController setNavigationBarHidden:NO animated:animated]; -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - - // TODO: clean up cells -} - -#pragma mark - -#pragma mark Notifications - -- (void)registerNotifications -{ - [LUNotificationCenter addObserver:self - selector:@selector(consoleControllerDidResizeNotification:) - name:LUConsoleControllerDidResizeNotification - object:nil]; -} - -- (void)unregisterNotifications -{ - [LUNotificationCenter removeObserver:self]; -} - -- (void)consoleControllerDidResizeNotification:(NSNotification *)notification -{ - [_tableView reloadRowsAtIndexPaths:_tableView.indexPathsForVisibleRows withRowAnimation:UITableViewRowAnimationNone]; -} - -#pragma mark - -#pragma mark Filtering - -- (void)filterByText:(NSString *)text -{ - BOOL shouldReload = [self.console.entries setFilterByText:text]; - if (shouldReload) { - [self reloadData]; - } -} - -- (void)setFilterByLogTypeMask:(LUConsoleLogTypeMask)logTypeMask disabled:(BOOL)disabled -{ - BOOL shouldReload = [self.console.entries setFilterByLogTypeMask:logTypeMask disabled:disabled]; - if (shouldReload) { - [self reloadData]; - } -} - -#pragma mark - -#pragma mark Collapsing - -- (void)setCollapsed:(BOOL)collapsed -{ - self.console.collapsed = !self.console.isCollapsed; - [self reloadData]; -} - -#pragma mark - -#pragma mark Actions - -- (IBAction)onClear:(id)sender -{ - // clear entries - [self.console clear]; - - // update entries count - [self updateEntriesCount]; -} - -- (IBAction)onCopy:(id)sender -{ - NSString *text = [self.console getText]; - [self copyTextToClipboard:text]; -} - -- (IBAction)onEmail:(id)sender -{ - if (![MFMailComposeViewController canSendMail]) { - LUDisplayAlertView(@"Lunar Mobile Console", @"Log email cannot be sent.\nMake sure your device is set up for sending email."); - return; - } - - NSString *bundleName = [[NSBundle mainBundle].infoDictionary objectForKey:@"CFBundleName"]; - NSString *text = [self.console getText]; - - MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; - [controller setMailComposeDelegate:self]; - [controller setSubject:[NSString stringWithFormat:@"%@ console log", bundleName]]; - [controller setMessageBody:text isHTML:NO]; - if (_emails.count > 0) { - [controller setToRecipients:_emails]; - } - if (controller) { - [self presentViewController:controller animated:YES completion:nil]; - } -} - -- (IBAction)onSettings:(id)sender -{ - LUConsoleSettingsController *controller = [[LUConsoleSettingsController alloc] initWithSettings:_plugin.settings]; - LUConsolePopupController *popupController = [[LUConsolePopupController alloc] initWithContentController:controller]; - popupController.popupDelegate = self; - [popupController presentFromController:self.parentViewController animated:YES]; -} - -- (void)onStatusBarTap:(UITapGestureRecognizer *)recognizer -{ - _scrollLockButton.on = NO; - [self scrollToTopAnimated:YES]; -} - -- (IBAction)onMoreButton:(id)sender -{ - LUConsoleLogMenuController *controller = [LUConsoleLogMenuController new]; - - // toggle collapse button - if (self.console.isCollapsed) { - [controller addButtonTitle:@"Expand" target:self action:@selector(onExpandButton:)]; - } else { - [controller addButtonTitle:@"Collapse" target:self action:@selector(onCollapseButton:)]; - } - - // resize button - [controller addButtonTitle:@"Move/Resize" target:self action:@selector(onResizeButton:)]; - - // help - [controller addButtonTitle:@"Help" target:self action:@selector(onHelpButton:)]; - - // PRO version - if (LUConsoleIsFreeVersion) { - LUConsoleLogMenuControllerButton *button = [controller addButtonTitle:@"Get PRO Version" target:self action:@selector(onGetProButton:)]; - button.textColor = [LUTheme mainTheme].contextMenuTextProColor; - button.textHighlightedColor = [LUTheme mainTheme].contextMenuTextProHighlightColor; - } - - [controller setDelegate:self]; - - // add as child view controller - [self addChildOverlayController:controller animated:NO]; -} - -#pragma mark - -#pragma mark LunarConsoleDelegate - -- (void)lunarConsole:(LUConsole *)console didAddEntryAtIndex:(NSInteger)index trimmedCount:(NSUInteger)trimmedCount -{ - if (trimmedCount > 0) { - // show warning - [self showOverflowCount:console.trimmedCount]; - - // update cells - [_tableView beginUpdates]; - - [self removeCellsCount:trimmedCount]; - - if (index != -1) { - [self insertCellAt:index]; - } - - [_tableView endUpdates]; - } else if (index != -1) { - [self insertCellAt:index]; - } - - // update entries count - [self updateEntriesCount]; -} - -- (void)lunarConsole:(LUConsole *)console didUpdateEntryAtIndex:(NSInteger)index trimmedCount:(NSUInteger)trimmedCount -{ - if (trimmedCount > 0) { - // show warning - [self showOverflowCount:console.trimmedCount]; - - // update cells - [_tableView beginUpdates]; - - [self removeCellsCount:trimmedCount]; - - if (index != -1) { - [self reloadCellAt:index]; - } - - [_tableView endUpdates]; - } else if (index != -1) { - [self reloadCellAt:index]; - } - - // update entries count - [self updateEntriesCount]; -} - -- (void)lunarConsoleDidClearEntries:(LUConsole *)console -{ - [self reloadData]; - [self updateOverflowWarning]; -} - -#pragma mark - -#pragma mark LUToggleButtonDelegate - -- (void)toggleButtonStateChanged:(LUToggleButton *)button -{ - if (button == _scrollLockButton) { - self.scrollLocked = button.isOn; - } else { - LUConsoleLogTypeMask mask = 0; - if (button == _logButton) { - mask |= LU_CONSOLE_LOG_TYPE_MASK(LUConsoleLogTypeLog); - } else if (button == _warningButton) { - mask |= LU_CONSOLE_LOG_TYPE_MASK(LUConsoleLogTypeWarning); - } else if (button == _errorButton) { - mask |= LU_CONSOLE_LOG_TYPE_MASK(LUConsoleLogTypeException) | - LU_CONSOLE_LOG_TYPE_MASK(LUConsoleLogTypeError) | - LU_CONSOLE_LOG_TYPE_MASK(LUConsoleLogTypeAssert); - } - - [self setFilterByLogTypeMask:mask disabled:button.isOn]; - } -} - -#pragma mark - -#pragma mark Scrolling - -- (void)scrollToBottomAnimated:(BOOL)animated -{ - if (self.console.entriesCount > 0) { - NSIndexPath *path = [NSIndexPath indexPathForRow:self.console.entriesCount - 1 inSection:0]; - [_tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:animated]; - } -} - -- (void)scrollToTopAnimated:(BOOL)animated -{ - if (self.console.entriesCount > 0) { - NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:0]; - [_tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:animated]; - } -} - -#pragma mark - -#pragma mark UITableViewDataSource - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return self.console.entriesCount; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - LUConsoleLogEntry *entry = [self entryForRowAtIndexPath:indexPath]; - return [entry tableView:tableView cellAtIndex:indexPath.row]; -} - -#pragma mark - -#pragma mark UITableViewDelegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - LUConsoleLogEntry *entry = [self entryForRowAtIndexPath:indexPath]; - - LUConsoleLogDetailsController *controller = [[LUConsoleLogDetailsController alloc] initWithEntry:entry]; - LUConsolePopupController *popupController = [[LUConsolePopupController alloc] initWithContentController:controller]; - popupController.popupDelegate = self; - [popupController presentFromController:self.parentViewController animated:YES]; - - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - LUConsoleLogEntry *entry = [self entryForRowAtIndexPath:indexPath]; - return [entry cellSizeForTableView:tableView].height; -} - -- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath -{ - return YES; -} - -- (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender -{ - return action == @selector(copy:); -} - -- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender -{ - LUConsoleLogEntry *entry = [self entryForRowAtIndexPath:indexPath]; - [self copyTextToClipboard:entry.message.text]; -} - -#pragma mark - -#pragma mark UISearchBarDelegate - -- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar -{ - [searchBar setShowsCancelButton:YES animated:YES]; - - if (CGRectGetWidth(self.view.bounds) < kMinWidthToResizeSearchBar) { - [self setLogButtonsVisible:NO animated:YES]; - } - - return YES; -} - -- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar -{ - [searchBar setShowsCancelButton:NO animated:YES]; - - if (CGRectGetWidth(self.view.bounds) < kMinWidthToResizeSearchBar) { - [self setLogButtonsVisible:YES animated:YES]; - } - - return YES; -} - -- (void)setLogButtonsVisible:(BOOL)visible animated:(BOOL)animated -{ - if (animated) { - [UIView animateWithDuration:0.4 - animations:^{ - [self setLogButtonsVisible:visible]; - }]; - } else { - [self setLogButtonsVisible:visible]; - } -} - -- (void)setLogButtonsVisible:(BOOL)visible -{ - self.logButton.hidden = self.errorButton.hidden = self.warningButton.hidden = !visible; -} - -- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar -{ - [searchBar setShowsCancelButton:NO animated:YES]; - [searchBar resignFirstResponder]; -} - -- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText -{ - [self filterByText:searchText]; - - if (searchText.length == 0) { - dispatch_async(dispatch_get_main_queue(), ^{ - [searchBar resignFirstResponder]; - }); - } -} - -- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar -{ - [searchBar resignFirstResponder]; -} - -#pragma mark - -#pragma mark MFMailComposeViewControllerDelegate - -- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(nullable NSError *)error -{ - if (error != nil) { - LUDisplayAlertView(@"Lunar Mobile Console", [NSString stringWithFormat:@"Log was not sent: %@", error]); - } else if (result != MFMailComposeResultSent) { - LUDisplayAlertView(@"Lunar Mobile Console", @"Log was not sent"); - } - - [controller dismissViewControllerAnimated:YES completion:nil]; -} - -#pragma mark - -#pragma mark LUTableViewTouchDelegate - -- (void)tableView:(LUTableView *)tableView touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event -{ - _scrollLockButton.on = NO; -} - -#pragma mark - -#pragma mark LUConsoleLogMenuControllerDelegate - -- (void)menuControllerDidRequestClose:(LUConsoleLogMenuController *)controller -{ - [self removeChildOverlayController:controller animated:NO]; -} - -#pragma mark - -#pragma mark LUConsolePopupControllerDelegate - -- (void)popupControllerDidDismiss:(LUConsolePopupController *)controller -{ - [controller dismissAnimated:YES]; -} - -#pragma mark - -#pragma mark UIScrollViewDelegate - -- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView -{ - _scrollLockButton.on = NO; -} - -#pragma mark - -#pragma mark Actions - -- (void)onCollapseButton:(id)sender -{ - [self setCollapsed:YES]; -} - -- (void)onExpandButton:(id)sender -{ - [self setCollapsed:NO]; -} - -- (void)onResizeButton:(id)sender -{ - if ([_resizeDelegate respondsToSelector:@selector(consoleLogControllerDidRequestResize:)]) { - [_resizeDelegate consoleLogControllerDidRequestResize:self]; - } -} - -- (void)onHelpButton:(id)sender -{ - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://goo.gl/5Z8ovV"]]; -} - -- (void)onLearnAboutProButton:(id)sender -{ - [[NSNotificationCenter defaultCenter] postNotificationName:LUConsoleCheckFullVersionNotification - object:nil - userInfo:@{ LUConsoleCheckFullVersionNotificationSource : @"settings" }]; - - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://goo.gl/TMnxBe"]]; -} - -- (void)onGetProButton:(id)sender -{ - [[NSNotificationCenter defaultCenter] postNotificationName:LUConsoleCheckFullVersionNotification - object:nil - userInfo:@{ LUConsoleCheckFullVersionNotificationSource : @"menu" }]; - - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://goo.gl/TMnxBe"]]; -} - -#pragma mark - -#pragma mark Overflow - -- (void)updateOverflowWarning -{ - NSUInteger trimmedCount = self.console.trimmedCount; - if (trimmedCount > 0) { - [self showOverflowCount:trimmedCount]; - } else { - [self hideOverflowCount]; - } -} - -- (void)showOverflowCount:(NSUInteger)count -{ - NSString *text = count > 999 ? @"Too much output: 999+ items trimmed" : [NSString stringWithFormat:@"Too much output: %d item(s) trimmed", (int)count]; - - self.overflowWarningLabel.text = text; - self.overflowWarningLabel.hidden = NO; -} - -- (void)hideOverflowCount -{ - self.overflowWarningLabel.hidden = YES; -} - -#pragma mark - -#pragma mark Cell manipulations - -- (void)removeCellsCount:(NSInteger)count -{ - if (count == 1) { - NSArray *deleteIndices = [[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:0 inSection:0], nil]; - [_tableView deleteRowsAtIndexPaths:deleteIndices withRowAnimation:UITableViewRowAnimationNone]; - } else if (count > 1) { - NSMutableArray *deleteIndices = [[NSMutableArray alloc] initWithCapacity:count]; - for (NSInteger rowIndex = 0; rowIndex < count; ++rowIndex) { - [deleteIndices addObject:[NSIndexPath indexPathForRow:rowIndex inSection:0]]; - } - [_tableView deleteRowsAtIndexPaths:deleteIndices withRowAnimation:UITableViewRowAnimationNone]; - } -} - -- (void)insertCellAt:(NSInteger)index -{ - LUAssert(index >= 0 && index < self.console.entriesCount); - - NSArray *indices = [[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:index inSection:0], nil]; - [_tableView insertRowsAtIndexPaths:indices withRowAnimation:UITableViewRowAnimationNone]; - - // scroll to the end - if (_scrollLocked) { - [self scrollToBottomAnimated:NO]; - } -} - -- (void)reloadCellAt:(NSInteger)index -{ - LUAssert(index >= 0 && index < self.console.entriesCount); - - NSArray *indices = [[NSArray alloc] initWithObjects:[NSIndexPath indexPathForRow:index inSection:0], nil]; - [_tableView reloadRowsAtIndexPaths:indices withRowAnimation:UITableViewRowAnimationNone]; -} - -- (void)updateEntriesCount -{ - LUConsoleLogEntryList *entries = self.console.entries; - _logButton.count = entries.logCount; - _warningButton.count = entries.warningCount; - _errorButton.count = entries.errorCount; -} - -#pragma mark - -#pragma mark Helpers - -- (LUConsoleLogEntry *)entryForRowAtIndexPath:(NSIndexPath *)indexPath -{ - return [self.console entryAtIndex:indexPath.row]; -} - -- (LUConsoleLogEntry *)entryForRowAtIndex:(NSUInteger)index -{ - return [self.console entryAtIndex:index]; -} - -- (void)reloadData -{ - [_tableView reloadData]; -} - -- (void)copyTextToClipboard:(NSString *)text -{ - UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; - [pasteboard setString:text]; -} - -#pragma mark - -#pragma mark Controllers - -- (void)addChildOverlayController:(UIViewController *)controller animated:(BOOL)animated -{ - [self parentController:self addChildOverlayController:controller animated:animated]; -} - -- (void)parentController:(UIViewController *)parentController addChildOverlayController:(UIViewController *)controller animated:(BOOL)animated -{ - // add as child view controller - [parentController addChildViewController:controller]; - controller.view.frame = parentController.view.bounds; - [parentController.view addSubview:controller.view]; - [controller didMoveToParentViewController:parentController]; - - // animate - if (animated) { - controller.view.alpha = 0; - [UIView animateWithDuration:0.4 - animations:^{ - controller.view.alpha = 1; - }]; - } -} - -- (void)removeChildOverlayController:(UIViewController *)controller animated:(BOOL)animated -{ - if (animated) { - [UIView animateWithDuration:0.4 - animations:^{ - controller.view.alpha = 0; - } - completion:^(BOOL finished) { - [controller willMoveToParentViewController:nil]; - [controller.view removeFromSuperview]; - [controller removeFromParentViewController]; - }]; - } else { - [controller willMoveToParentViewController:self]; - [controller.view removeFromSuperview]; - [controller removeFromParentViewController]; - } -} - -#pragma mark - -#pragma mark Properties - -- (LUConsole *)console -{ - return _plugin.console; -} - -- (LUTheme *)theme -{ - return [LUTheme mainTheme]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.m.meta deleted file mode 100644 index 7fd75bc..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 288669c0267a94acc887984eeda8db36 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.xib b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.xib deleted file mode 100644 index 8499dcf..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.xib +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.xib.meta deleted file mode 100644 index d7519e3..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 91b6ff03a574e4d6ea4bdbcf26f781a5 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.h deleted file mode 100644 index 3cc85f5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// LUConsoleLogDetailsController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUViewController.h" - -@class LUConsoleLogEntry; - -@interface LUConsoleLogDetailsController : LUViewController - -- (instancetype)initWithEntry:(LUConsoleLogEntry *)entry; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.h.meta deleted file mode 100644 index e626f63..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: be6a85afac95a492ab8bd414153e740b -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.m deleted file mode 100644 index 346a8a7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.m +++ /dev/null @@ -1,101 +0,0 @@ -// -// LUConsoleLogDetailsController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsoleLogDetailsController.h" - -#import "Lunar.h" - -#define NO_STACK_TRACE_WARNING @"No stack trace found.\n\nMake sure \"Development Build\" checkbox is checked under \"Build Settings\" (File ▶ Build Settings...)" - -@interface LUConsoleLogDetailsController () -{ - LUConsoleLogEntry * _entry; -} - -@property (nonatomic, weak) IBOutlet UITextView * stackTraceView; - -@end - -@implementation LUConsoleLogDetailsController - -- (instancetype)initWithEntry:(LUConsoleLogEntry *)entry -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) - { - _entry = entry; - - self.popupIcon = _entry.icon; - self.popupTitle = @"Message Details"; - self.popupButtons = @[ - [LUConsolePopupButton buttonWithIcon:LUGetImage(@"lunar_console_icon_button_clipboard") target:self action:@selector(onCopyToClipboard:)] - ]; - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - LUTheme *theme = [LUTheme mainTheme]; - - NSString *stackTrace = [_entry hasStackTrace] ? - [LUStacktrace optimizeStacktrace:_entry.stackTrace] : NO_STACK_TRACE_WARNING; - - NSDictionary *attributes = @{ - NSFontAttributeName : theme.fontSmall, - NSForegroundColorAttributeName : theme.logMessageStacktraceColor - }; - - NSString *text = [NSString stringWithFormat:@"%@\n\n%@", _entry.message, stackTrace]; - NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:attributes]; - [attributedText addAttribute:NSFontAttributeName - value:theme.logMessageDetailFont - range:NSMakeRange(0, _entry.message.length)]; - [attributedText addAttribute:NSForegroundColorAttributeName - value:theme.cellLog.textColor - range:NSMakeRange(0, _entry.message.length)]; - _stackTraceView.backgroundColor = theme.tableColor; - _stackTraceView.attributedText = attributedText; - self.view.backgroundColor = theme.tableColor; - - // update layout - [self.view layoutIfNeeded]; -} - -#pragma mark - -#pragma mark Copy to clipboard - -- (void)onCopyToClipboard:(id)sender -{ - UIPasteboard *pastboard = [UIPasteboard generalPasteboard]; - - NSString *text = _entry.message.text; - if ([_entry hasStackTrace]) - { - text = [text stringByAppendingFormat:@"\n\n%@", _entry.stackTrace]; - } - [pastboard setString:text]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.m.meta deleted file mode 100644 index cc7367c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: f647e6138c6cd41ca9c8be34de125fd4 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.xib b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.xib deleted file mode 100644 index c86fdf8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda. - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.xib.meta deleted file mode 100644 index 2963565..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogDetailsController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 4fba31e28939445a48d4a03089c7831f -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.h deleted file mode 100644 index ccacce7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.h +++ /dev/null @@ -1,85 +0,0 @@ -// -// LUConsoleLogEntry.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -typedef enum : uint8_t { - LUConsoleLogTypeError, - LUConsoleLogTypeAssert, - LUConsoleLogTypeWarning, - LUConsoleLogTypeLog, - LUConsoleLogTypeException -} LUConsoleLogType; - -typedef uint8_t LUConsoleLogTypeMask; - -#define LU_CONSOLE_LOG_TYPE_COUNT 5 -#define LU_CONSOLE_LOG_TYPE_MASK(TYPE) (1 << (TYPE)) - -#define LU_IS_CONSOLE_LOG_TYPE_VALID(TYPE) ((TYPE) >= 0 && (TYPE) < LU_CONSOLE_LOG_TYPE_COUNT) -#define LU_IS_CONSOLE_LOG_TYPE_ERROR(TYPE) ((TYPE) == LUConsoleLogTypeException || \ - (TYPE) == LUConsoleLogTypeError || \ - (TYPE) == LUConsoleLogTypeAssert) - -@class LULogMessage; - -@interface LUConsoleLogEntry : NSObject - -@property (nonatomic, readonly) LUConsoleLogType type; -@property (nonatomic, readonly) LULogMessage * message; -@property (nonatomic, readonly) NSString * stackTrace; -@property (nonatomic, readonly) UIImage * icon; -@property (nonatomic, readonly) BOOL hasStackTrace; - -+ (instancetype)entryWithType:(LUConsoleLogType)type message:(LULogMessage *)message stackTrace:(NSString *)stackTrace; -- (instancetype)initWithType:(LUConsoleLogType)type message:(LULogMessage *)message stackTrace:(NSString *)stackTrace; - -- (UITableViewCell *)tableView:(UITableView *)tableView cellAtIndex:(NSUInteger)index; -- (CGSize)cellSizeForTableView:(UITableView *)tableView; - -@end - -/// Console entry for holding collapsed items -@interface LUConsoleCollapsedLogEntry : LUConsoleLogEntry - -/// Index in the entry list -@property (nonatomic, assign) NSInteger index; - -/// Total amount of encounters -@property (nonatomic, assign) NSInteger count; - -+ (instancetype)entryWithEntry:(LUConsoleLogEntry *)entry; -- (instancetype)initWithEntry:(LUConsoleLogEntry *)entry; - -- (void)increaseCount; - -@end - -/// Console entry for displaying in overlay view -@interface LUConsoleOverlayLogEntry : LUConsoleLogEntry - -/// Scheduled removal date (after becoming visible) -@property (nonatomic, strong) NSDate *removalDate; - -- (instancetype)initWithEntry:(LUConsoleLogEntry *)entry; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.h.meta deleted file mode 100644 index 7b9bce2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 8f5e6ab4c855e40ccab9ad2e1a8de999 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.m deleted file mode 100644 index 96b8298..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.m +++ /dev/null @@ -1,246 +0,0 @@ -// -// LUConsoleLogEntry.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsoleLogEntry.h" - -#import "Lunar.h" - -static NSArray *_cellSkinLookup; - -@interface LUConsoleLogEntry () - -@property (nonatomic, assign) CGFloat cachedHeight; -@property (nonatomic, assign) CGFloat cachedWidth; - -@end - -@implementation LUConsoleLogEntry - -+ (void)initialize -{ - if (!LU_IOS_MIN_VERSION_AVAILABLE) { - return; - } - - if (_cellSkinLookup == nil) // initialize can be called multiple times - { - LUTheme *theme = [LUTheme mainTheme]; - - _cellSkinLookup = [[NSArray alloc] initWithObjects: - theme.cellError, // error - theme.cellError, // assert, - theme.cellWarning, // warning, - theme.cellLog, // log, - theme.cellError, // exception - nil]; - - LUAssert(_cellSkinLookup.count == LU_CONSOLE_LOG_TYPE_COUNT); - } -} - -+ (instancetype)entryWithType:(LUConsoleLogType)type message:(LULogMessage *)message stackTrace:(NSString *)stackTrace -{ - return [[[self class] alloc] initWithType:type message:message stackTrace:stackTrace]; -} - -- (instancetype)initWithType:(LUConsoleLogType)type message:(LULogMessage *)message stackTrace:(NSString *)stackTrace -{ - self = [super init]; - if (self) { - _type = type; - _message = message; - _stackTrace = stackTrace; - } - return self; -} - - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if ([object isKindOfClass:[self class]]) { - LUConsoleLogEntry *other = object; - return other.type == _type && [other.message isEqual:_message]; - } - - return false; -} - -#pragma mark - -#pragma mark Cells - -- (UITableViewCell *)tableView:(UITableView *)tableView cellAtIndex:(NSUInteger)index -{ - CGSize cellSize = [self cellSizeForTableView:tableView]; - CGRect cellBounds = CGRectMake(0, 0, cellSize.width, cellSize.height); - - LUConsoleLogEntryTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"log"]; - if (cell == nil) { - cell = [LUConsoleLogEntryTableViewCell cellWithFrame:cellBounds cellIdentifier:@"log"]; - } else { - [cell setSize:cellSize]; - } - - LUCellSkin *cellSkin = [self cellSkinForLogType:_type]; - - cell.messageColor = cellSkin.textColor; - cell.cellColor = index % 2 == 0 ? cellSkin.backgroundColorDark : cellSkin.backgroundColorLight; - cell.icon = cellSkin.icon; - [cell setMessage:_message]; - - return cell; -} - -- (CGSize)cellSizeForTableView:(UITableView *)tableView -{ - CGFloat cellWidth = CGRectGetWidth(tableView.bounds); - if (!LUFloatApprox(_cachedWidth, cellWidth)) { - _cachedWidth = cellWidth; - _cachedHeight = [LUConsoleLogEntryTableViewCell heightForCellWithText:_message.text width:cellWidth]; - } - - return CGSizeMake(cellWidth, _cachedHeight); -} - -#pragma mark - -#pragma mark Helpers - -- (LUCellSkin *)cellSkinForLogType:(LUConsoleLogType)type -{ - if (type >= 0 && type < _cellSkinLookup.count) { - return _cellSkinLookup[type]; - } - - LUAssert(type >= 0 && type < _cellSkinLookup.count); - return nil; -} - -#pragma mark - -#pragma mark Properties - -- (UIImage *)icon -{ - return [self cellSkinForLogType:_type].icon; -} - -- (BOOL)hasStackTrace -{ - return _stackTrace.length > 0; -} - -@end - -@implementation LUConsoleCollapsedLogEntry - -+ (instancetype)entryWithEntry:(LUConsoleLogEntry *)entry -{ - return [[self alloc] initWithEntry:entry]; -} - -- (instancetype)initWithEntry:(LUConsoleLogEntry *)entry -{ - self = [super initWithType:entry.type message:entry.message stackTrace:entry.stackTrace]; - if (self) { - _count = 1; - _index = -1; - } - return self; -} - -#pragma mark - -#pragma mark Cells - -- (UITableViewCell *)tableView:(UITableView *)tableView cellAtIndex:(NSUInteger)index -{ - CGSize cellSize = [self cellSizeForTableView:tableView]; - CGRect cellBounds = CGRectMake(0, 0, cellSize.width, cellSize.height); - - LUConsoleCollapsedLogEntryTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"collapse"]; - if (cell == nil) { - cell = [LUConsoleCollapsedLogEntryTableViewCell cellWithFrame:cellBounds cellIdentifier:@"collapse"]; - } - - LUCellSkin *cellSkin = [self cellSkinForLogType:self.type]; - - [cell setMessage:self.message]; - cell.messageColor = cellSkin.textColor; - cell.cellColor = index % 2 == 0 ? cellSkin.backgroundColorDark : cellSkin.backgroundColorLight; - cell.icon = cellSkin.icon; - cell.collapsedCount = self.count; - - [cell setSize:cellSize]; - - return cell; -} - -#pragma mark - -#pragma mark Properties - -- (void)increaseCount -{ - ++_count; -} - -@end - -@implementation LUConsoleOverlayLogEntry - -- (instancetype)initWithEntry:(LUConsoleLogEntry *)entry -{ - self = [super initWithType:entry.type message:entry.message stackTrace:nil]; // we don't need stack trace - if (self) { - } - return self; -} - -#pragma mark - -#pragma mark Cells - -- (UITableViewCell *)tableView:(UITableView *)tableView cellAtIndex:(NSUInteger)index -{ - CGSize cellSize = [self cellSizeForTableView:tableView]; - CGRect cellBounds = CGRectMake(0, 0, cellSize.width, cellSize.height); - - LUConsoleOverlayLogEntryTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"overlay"]; - if (cell == nil) { - cell = [LUConsoleOverlayLogEntryTableViewCell cellWithFrame:cellBounds cellIdentifier:@"overlay"]; - } - // cell.message = self.message; this will be done upper in the call chain - [cell setSize:cellSize]; - - return cell; -} - -- (CGSize)cellSizeForTableView:(UITableView *)tableView -{ - CGFloat cellWidth = CGRectGetWidth(tableView.bounds); - if (!LUFloatApprox(self.cachedWidth, cellWidth)) { - self.cachedWidth = cellWidth; - self.cachedHeight = [LUConsoleOverlayLogEntryTableViewCell heightForCellWithText:self.message.text width:cellWidth]; - } - - return CGSizeMake(cellWidth, self.cachedHeight); -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.m.meta deleted file mode 100644 index c815e2a..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntry.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: fd271cff280f1452589ecca5377b4f06 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.h deleted file mode 100644 index 1b021c2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// LUConsoleLogEntryList.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUConsoleLogEntry.h" - -@interface LUConsoleLogEntryList : NSObject - -@property (nonatomic, readonly) NSUInteger capacity; -@property (nonatomic, readonly) NSUInteger count; -@property (nonatomic, readonly) NSUInteger totalCount; -@property (nonatomic, readonly) NSUInteger trimmedCount; -@property (nonatomic, readonly) NSUInteger trimCount; -@property (nonatomic, readonly) BOOL isTrimmed; - -@property (nonatomic, readonly) NSString *filterText; -@property (nonatomic, readonly) BOOL isFiltering; - -@property (nonatomic, readonly) NSUInteger logCount; -@property (nonatomic, readonly) NSUInteger warningCount; -@property (nonatomic, readonly) NSUInteger errorCount; - -@property (nonatomic, assign, getter=isCollapsed) BOOL collapsed; - -+ (instancetype)listWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount; -- (instancetype)initWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount; - -/// Adds entry to the list. Return the entry index or -1 if the entry was filtered out -- (NSInteger)addEntry:(LUConsoleLogEntry *)entry; -- (LUConsoleLogEntry *)entryAtIndex:(NSUInteger)index; -- (void)clear; - -- (BOOL)setFilterByText:(NSString *)filterText; -- (BOOL)setFilterByLogType:(LUConsoleLogType)logType disabled:(BOOL)disabled; -- (BOOL)setFilterByLogTypeMask:(LUConsoleLogTypeMask)logTypeMask disabled:(BOOL)disabled; - -- (BOOL)isFilterLogTypeEnabled:(LUConsoleLogType)type; - -- (NSString *)getText; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.h.meta deleted file mode 100644 index 213eca4..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 509d758834a6f48139c0dc675922ef42 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.m deleted file mode 100644 index f155215..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.m +++ /dev/null @@ -1,381 +0,0 @@ -// -// LUConsoleLogEntryList.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsoleLogEntryList.h" - -#import "Lunar.h" - -@interface LUConsoleLogEntryList () -{ - LUMutableArray * _entries; // all entries - LUMutableArray * _filteredEntries; // filtered entries - LUMutableArray * _currentEntries; // current reference to entries (either all entries or filtered) - LUConsoleLogEntryLookupTable * _entryLookup; // lookup table for collapsed entries - LUConsoleLogType _logDisabledTypesMask; -} - -@end - -@implementation LUConsoleLogEntryList - -+ (instancetype)listWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount -{ - return [[[self class] alloc] initWithCapacity:capacity trimCount:trimCount]; -} - -- (instancetype)initWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount -{ - self = [super init]; - if (self) - { - _entries = [[LUMutableArray alloc] initWithCapacity:capacity trimCount:trimCount]; - _currentEntries = _entries; - _logDisabledTypesMask = 0; - } - return self; -} - - -#pragma mark - -#pragma mark Entries - -- (NSInteger)addEntry:(LUConsoleLogEntry *)entry -{ - LUAssert(entry); - if (entry != nil) - { - // count types - LUConsoleLogType entryType = entry.type; - if (entryType == LUConsoleLogTypeLog) - { - ++_logCount; - } - else if (entryType == LUConsoleLogTypeWarning) - { - ++_warningCount; - } - else if (LU_IS_CONSOLE_LOG_TYPE_ERROR(entryType)) - { - ++_errorCount; - } - - // add entry - [_entries addObject:entry]; - - // filter entry - if (self.isFiltering) - { - if ([self filterEntry:entry]) - { - if (_collapsed) - { - LUConsoleCollapsedLogEntry *collapsedEntry = [_entryLookup addEntry:entry]; - if (collapsedEntry.index < _filteredEntries.trimmedCount) // first encounter or trimmed? - { - collapsedEntry.index = _filteredEntries.totalCount; // we use total count in case if list overflows - [_filteredEntries addObject:collapsedEntry]; - } - - return collapsedEntry.index - _filteredEntries.trimmedCount; - } - - [_filteredEntries addObject:entry]; - return _filteredEntries.count - 1; - } - - return -1; // if item was rejected - we don't need to update table cells - } - - return _entries.count - 1; // entry was added at the end of the list - } - - return -1; -} - -- (LUConsoleLogEntry *)entryAtIndex:(NSUInteger)index -{ - LUAssert(index >= 0 && index < _currentEntries.count); - return [_currentEntries objectAtIndex:index]; -} - -- (void)clear -{ - [_entries removeAllObjects]; - [_filteredEntries removeAllObjects]; - [_entryLookup clear]; - - _logCount = 0; - _warningCount = 0; - _errorCount = 0; -} - -#pragma mark - -#pragma mark Collapsing - -- (void)setCollapsed:(BOOL)collapsed -{ - _collapsed = collapsed; - if (collapsed) - { - LUAssert(_entryLookup == nil); - _entryLookup = [LUConsoleLogEntryLookupTable new]; - } - else - { - _entryLookup = nil; - } - - [self applyFilter]; // collapsed entries are just a special case of filtered items -} - -#pragma mark - -#pragma mark Filtering - -- (BOOL)setFilterByText:(NSString *)filterText -{ - if (_filterText != filterText) // filter text has changed - { - NSString *oldFilterText = _filterText; - - _filterText = filterText; - - if (filterText.length > oldFilterText.length && (oldFilterText.length == 0 || [filterText hasPrefix:oldFilterText])) // added more characters - { - return [self appendFilter]; - } - - return [self applyFilter]; - } - - return NO; -} - -- (BOOL)setFilterByLogType:(LUConsoleLogType)logType disabled:(BOOL)disabled -{ - return [self setFilterByLogTypeMask:LU_CONSOLE_LOG_TYPE_MASK(logType) disabled:disabled]; -} - -- (BOOL)setFilterByLogTypeMask:(LUConsoleLogTypeMask)logTypeMask disabled:(BOOL)disabled -{ - LUConsoleLogType oldDisabledTypesMask = _logDisabledTypesMask; - if (disabled) - { - _logDisabledTypesMask |= logTypeMask; - } - else - { - _logDisabledTypesMask &= ~logTypeMask; - } - - if (oldDisabledTypesMask != _logDisabledTypesMask) - { - return disabled ? [self appendFilter] : [self applyFilter]; - } - - return NO; -} - -- (BOOL)isFilterLogTypeEnabled:(LUConsoleLogType)type -{ - return (_logDisabledTypesMask & LU_CONSOLE_LOG_TYPE_MASK(type)) == 0; -} - -/// applies filter to already filtered items -- (BOOL)appendFilter -{ - if (self.isFiltering) - { - [self useFilteredFromEntries:_filteredEntries]; - return YES; - } - - return [self applyFilter]; -} - -/// setup filtering for the list -- (BOOL)applyFilter -{ - BOOL needsFiltering = _collapsed || _filterText.length > 0 || [self hasLogTypeFilters]; - if (needsFiltering) - { - [_entryLookup clear]; // if we have collapsed items - we need to rebuild the lookup - - [self useFilteredFromEntries:_entries]; - return YES; - } - - return [self removeFilter]; -} - -- (BOOL)removeFilter -{ - if (self.isFiltering) - { - _currentEntries = _entries; - - _filteredEntries = nil; - - return YES; - } - - return NO; -} - -- (void)useFilteredFromEntries:(LUMutableArray *)entries -{ - LUMutableArray *filteredEntries = [self filterEntries:entries]; - - // use filtered items - _currentEntries = filteredEntries; - - // store filtered items - _filteredEntries = filteredEntries; -} - -- (LUMutableArray *)filterEntries:(LUMutableArray *)entries -{ - LUMutableArray *list = [LUMutableArray listWithCapacity:entries.capacity // same capacity - trimCount:entries.trimCount]; // and trim policy as original - - if (_collapsed) - { - for (id entry in entries) - { - if ([self filterEntry:entry]) - { - if ([entry isKindOfClass:[LUConsoleCollapsedLogEntry class]]) - { - LUConsoleCollapsedLogEntry *collapsedEntry = entry; - collapsedEntry.index = list.totalCount; // update item's position - [list addObject:collapsedEntry]; - } - else - { - LUConsoleCollapsedLogEntry *collapsedEntry = [_entryLookup addEntry:entry]; - if (collapsedEntry.count == 1) // first encounter - { - collapsedEntry.index = list.totalCount; - [list addObject:collapsedEntry]; - } - } - } - } - } - else - { - for (LUConsoleLogEntry *entry in entries) - { - if ([self filterEntry:entry]) - { - [list addObject:entry]; - } - } - } - - return list; -} - -- (BOOL)filterEntry:(LUConsoleLogEntry *)entry -{ - // filter by log type - if (_logDisabledTypesMask & LU_CONSOLE_LOG_TYPE_MASK(entry.type)) - { - return NO; - } - - // filter by message - return _filterText.length == 0 || [entry.message.text rangeOfString:_filterText options:NSCaseInsensitiveSearch].location != NSNotFound; -} - -#pragma mark - -#pragma mark Text - -- (NSString *)getText -{ - NSMutableString *text = [NSMutableString string]; - - NSUInteger index = 0; - NSUInteger count = _entries.count; - for (LUConsoleLogEntry *entry in _entries) - { - [text appendString:entry.message.text]; - if (entry.type == LUConsoleLogTypeException && entry.hasStackTrace) - { - [text appendString:@"\n"]; - [text appendString:entry.stackTrace]; - } - if (++index < count) - { - [text appendString:@"\n"]; - } - } - - return text; -} - -#pragma mark - -#pragma mark Helpers - -- (BOOL)hasLogTypeFilters -{ - return _logDisabledTypesMask != 0; -} - -#pragma mark - -#pragma mark Properties - -- (NSUInteger)capacity -{ - return _currentEntries.capacity; -} - -- (NSUInteger)count -{ - return _currentEntries.count; -} - -- (NSUInteger)totalCount -{ - return _currentEntries.totalCount; -} - -- (NSUInteger)trimmedCount -{ - return _currentEntries.trimmedCount; -} - -- (NSUInteger)trimCount -{ - return _currentEntries.trimCount; -} - -- (BOOL)isTrimmed -{ - return _currentEntries.isTrimmed; -} - -- (BOOL)isFiltering -{ - return _filteredEntries != nil; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.m.meta deleted file mode 100644 index 85e1fa6..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryList.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 9c1cbe636caa84d309e41a8b69bc0ff6 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.h deleted file mode 100644 index 973960d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// LUConsoleLogEntryLookupTable.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@class LUConsoleLogEntry; -@class LUConsoleCollapsedLogEntry; - -@interface LUConsoleLogEntryLookupTable : NSObject - -- (LUConsoleCollapsedLogEntry *)addEntry:(LUConsoleLogEntry *)entry; -- (void)removeEntry:(LUConsoleCollapsedLogEntry *)entry; -- (void)clear; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.h.meta deleted file mode 100644 index 33c0e47..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 583210f53145948269f757d410edd696 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.m deleted file mode 100644 index 8873fc2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// LUConsoleLogEntryLookupTable.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsoleLogEntryLookupTable.h" - -#import "Lunar.h" - -@interface LUConsoleLogEntryLookupTable () -{ - NSMutableDictionary * _table; // TODO: replace with a search trie -} - -@end - -@implementation LUConsoleLogEntryLookupTable - -- (instancetype)init -{ - self = [super init]; - if (self) - { - _table = [[NSMutableDictionary alloc] init]; - } - return self; -} - - -- (LUConsoleCollapsedLogEntry *)addEntry:(LUConsoleLogEntry *)entry -{ - LUAssert(entry); - - NSString *message = entry.message.text; - if (message) - { - LUConsoleCollapsedLogEntry *collapsedEntry = [_table objectForKey:message]; - if (collapsedEntry == nil) - { - collapsedEntry = [LUConsoleCollapsedLogEntry entryWithEntry:entry]; - [_table setObject:collapsedEntry forKey:message]; - } - else - { - [collapsedEntry increaseCount]; - } - - return collapsedEntry; - } - - LUAssert(message); - return nil; -} - -- (void)removeEntry:(LUConsoleCollapsedLogEntry *)entry -{ - LUAssert(entry); - - NSString *message = entry.message.text; - if (message) - { - [_table removeObjectForKey:message]; - } -} - -- (void)clear -{ - [_table removeAllObjects]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.m.meta deleted file mode 100644 index 45a63da..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryLookupTable.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: cbe308afb884b4eccaa5b4f4820c0a98 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.h deleted file mode 100644 index 7567277..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.h +++ /dev/null @@ -1,59 +0,0 @@ -// -// LUConsoleLogEntryTableViewCell.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class LULogMessage; - -@interface LUConsoleLogEntryTableViewCell : UITableViewCell - -@property (nonatomic, strong, nullable) UIImage * icon; -@property (nonatomic, strong, nullable) UIColor * messageColor; -@property (nonatomic, strong, nullable) UIColor * cellColor; - -+ (nonnull instancetype)cellWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier; -- (nonnull instancetype)initWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier; - -- (void)setMessage:(LULogMessage *)message; -- (void)setSize:(CGSize)size; - -+ (CGFloat)heightForCellWithText:(nullable NSString *)text width:(CGFloat)width; - -@end - -@interface LUConsoleCollapsedLogEntryTableViewCell : LUConsoleLogEntryTableViewCell - -@property (nonatomic, assign) NSInteger collapsedCount; - -@end - -@interface LUConsoleOverlayLogEntryTableViewCell : LUConsoleLogEntryTableViewCell - -+ (CGFloat)heightForCellWithText:(nullable NSString *)text width:(CGFloat)width; - -- (void)setMessage:(LULogMessage *)message attributes:(NSDictionary *)attributes; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.h.meta deleted file mode 100644 index c92e551..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 94206fdbac7594c33b552242c23d9085 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.m deleted file mode 100644 index 4292d20..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.m +++ /dev/null @@ -1,354 +0,0 @@ -// -// LUConsoleLogEntryTableViewCell.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -// -// LUConsoleLogEntryTableViewCell.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2019 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -#import "LUConsoleLogEntryTableViewCell.h" - -#import "Lunar.h" - -static UIEdgeInsets _messageInsets; - -@interface LUConsoleLogEntryTableViewCell () - -@property (nonatomic, strong) UILabel *messageLabel; -@property (nonatomic, strong) UIImageView *iconView; - -@end - -@interface LUConsoleLogEntryTableViewCell (Inheritance) - -- (LUTheme *)theme; - -@end - -@implementation LUConsoleLogEntryTableViewCell - -+ (void)initialize -{ - if (!LU_IOS_MIN_VERSION_AVAILABLE) { - return; - } - - if (_messageInsets.left == _messageInsets.right) // initialize can be called multiple times - { - LUTheme *theme = [LUTheme mainTheme]; - - UIImage *icon = theme.cellLog.icon; - CGFloat iconWidth = icon.size.width; - CGFloat iconHeight = icon.size.height; - CGFloat iconX = 0.5 * (theme.cellHeight - iconHeight); - - _messageInsets = UIEdgeInsetsMake(theme.indentVer, iconX + iconWidth + iconX, theme.indentVer, theme.indentHor); - } -} - -+ (instancetype)cellWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier -{ - return [[[self class] alloc] initWithFrame:frame cellIdentifier:cellIdentifier]; -} - -- (instancetype)initWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier -{ - self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; - if (self) { - self.contentView.bounds = frame; - - LUTheme *theme = [self theme]; - // icon - UIImage *iconImage = theme.cellLog.icon; - - _iconView = [[UIImageView alloc] initWithImage:iconImage]; - CGFloat iconWidth = iconImage.size.width; - CGFloat iconHeight = iconImage.size.height; - CGFloat iconX = 0.5 * (theme.cellHeight - iconHeight); - CGFloat iconY = 0.5 * (CGRectGetHeight(frame) - iconHeight); - _iconView.frame = CGRectMake(iconX, iconY, iconWidth, iconHeight); - - [self.contentView addSubview:_iconView]; - - // message - CGFloat messageX = _messageInsets.left; - CGFloat messageY = _messageInsets.top; - CGFloat messageWidth = CGRectGetWidth(frame) - (_messageInsets.left + _messageInsets.right); - CGFloat messageHeight = CGRectGetHeight(frame) - (_messageInsets.top + _messageInsets.bottom); - - _messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(messageX, messageY, messageWidth, messageHeight)]; - _messageLabel.font = theme.font; - _messageLabel.lineBreakMode = theme.lineBreakMode; - _messageLabel.numberOfLines = 0; - _messageLabel.opaque = YES; - LU_SET_ACCESSIBILITY_IDENTIFIER(_messageLabel, @"Log Message Label"); - - [self.contentView addSubview:_messageLabel]; - } - return self; -} - - -- (void)setSize:(CGSize)size -{ - self.contentView.bounds = CGRectMake(0, 0, size.width, size.height); - - // icon - CGRect iconFrame = _iconView.frame; - iconFrame.origin.y = 0.5 * (size.height - CGRectGetHeight(iconFrame)); - _iconView.frame = iconFrame; - - // message - CGFloat messageX = _messageInsets.left; - CGFloat messageY = _messageInsets.top; - CGFloat messageWidth = size.width - (_messageInsets.left + _messageInsets.right); - CGFloat messageHeight = size.height - (_messageInsets.top + _messageInsets.bottom); - - _messageLabel.frame = CGRectMake(messageX, messageY, messageWidth, messageHeight); -} - -+ (CGFloat)heightForCellWithText:(nullable NSString *)text width:(CGFloat)width -{ - LUTheme *theme = [LUTheme mainTheme]; - - CGSize constraintSize = CGSizeMake(width - (_messageInsets.left + _messageInsets.right), CGFLOAT_MAX); -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - CGFloat textHeight = [text sizeWithFont:theme.font constrainedToSize:constraintSize lineBreakMode:theme.lineBreakMode].height; - CGFloat height = (int)(textHeight + (_messageInsets.top + _messageInsets.bottom) + .99); // size should not be a fracture number (or gray lines will appear) -#pragma clang diagnostic pop - return MAX(theme.cellHeight, height); -} - -#pragma mark - -#pragma mark Properties - -- (LUTheme *)theme -{ - return [LUTheme mainTheme]; -} - -- (UIColor *)cellColor -{ - return _messageLabel.backgroundColor; -} - -- (void)setCellColor:(UIColor *__nullable)cellColor -{ - _messageLabel.backgroundColor = cellColor; - self.contentView.backgroundColor = cellColor; -} - -- (UIImage *)icon -{ - return _iconView.image; -} - -- (void)setIcon:(UIImage *__nullable)icon -{ - _iconView.image = icon; -} - -- (void)setMessage:(LULogMessage *)message -{ - if (message.tags.count > 0) - { - _messageLabel.attributedText = [message createAttributedTextWithSkin:self.theme.attributedTextSkin]; - } - else - { - _messageLabel.text = message.text; - } -} - -- (UIColor *)messageColor -{ - return _messageLabel.textColor; -} - -- (void)setMessageColor:(UIColor *__nullable)messageColor -{ - _messageLabel.textColor = messageColor; -} - -@end - -@interface LUConsoleCollapsedLogEntryTableViewCell () { - UIImageView *_backgroundImageView; - UILabel *_countLabel; -} - -@end - -@implementation LUConsoleCollapsedLogEntryTableViewCell - -- (instancetype)initWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier -{ - self = [super initWithFrame:frame cellIdentifier:cellIdentifier]; - if (self) { - LUTheme *theme = [self theme]; - - // background - _backgroundImageView = [[UIImageView alloc] initWithImage:theme.collapseBackgroundImage]; - _backgroundImageView.contentMode = UIViewContentModeScaleToFill; - [self.contentView addSubview:_backgroundImageView]; - - // count - _countLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; - _countLabel.font = theme.font; - _countLabel.numberOfLines = 1; - _countLabel.lineBreakMode = NSLineBreakByClipping; - _countLabel.opaque = YES; - _countLabel.textColor = theme.collapseTextColor; - _countLabel.backgroundColor = theme.collapseBackgroundColor; - LU_SET_ACCESSIBILITY_IDENTIFIER(_countLabel, @"Log Collapse Label"); - - [self.contentView addSubview:_countLabel]; - } - return self; -} - - -- (void)setSize:(CGSize)size -{ - [super setSize:size]; - - if (_backgroundImageView.hidden || _countLabel.hidden) { - return; // no need to resize invisible elements - } - - // resize count label to fit the content - [_countLabel sizeToFit]; - - CGRect countFrame = _countLabel.frame; - CGRect backgroundImageFrame = _backgroundImageView.frame; - - CGFloat backgroundImageWidth = 9 + CGRectGetWidth(countFrame) + 9; - CGFloat backgroundImageHeight = CGRectGetHeight(backgroundImageFrame); - - backgroundImageFrame.origin.y = 0.5 * (size.height - CGRectGetHeight(backgroundImageFrame)); - backgroundImageFrame.origin.x = size.width - (backgroundImageWidth + 0.5 * ([LUTheme mainTheme].cellHeight - backgroundImageHeight)); - backgroundImageFrame.size.width = backgroundImageWidth; - _backgroundImageView.frame = backgroundImageFrame; - - countFrame.origin.x = backgroundImageFrame.origin.x + 9; - countFrame.origin.y = 0.5 * (size.height - CGRectGetHeight(countFrame)); - _countLabel.frame = countFrame; -} - -- (void)setCollapsedCount:(NSInteger)collapsedCount -{ - BOOL shouldBeHidden = collapsedCount <= 1; - _countLabel.hidden = shouldBeHidden; - _backgroundImageView.hidden = shouldBeHidden; - - _collapsedCount = collapsedCount; - _countLabel.text = collapsedCount > 999 ? @"999+" : [NSString stringWithFormat:@"%ld", (long)collapsedCount]; -} - -@end - -@implementation LUConsoleOverlayLogEntryTableViewCell - -- (instancetype)initWithFrame:(CGRect)frame cellIdentifier:(nullable NSString *)cellIdentifier -{ - self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; - if (self) { - self.contentView.bounds = frame; - self.backgroundColor = self.contentView.backgroundColor = [UIColor clearColor]; - self.opaque = self.contentView.opaque = YES; - - LUTheme *theme = [self theme]; - - // message - CGFloat messageX = theme.indentHorTiny; - CGFloat messageY = theme.indentVerTiny; - CGFloat messageWidth = CGRectGetWidth(frame) - 2 * (theme.indentHorTiny); - CGFloat messageHeight = CGRectGetHeight(frame) - 2 * (theme.indentVerTiny); - - UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(messageX, messageY, messageWidth, messageHeight)]; - messageLabel.font = theme.fontOverlay; - messageLabel.lineBreakMode = theme.lineBreakMode; - messageLabel.numberOfLines = 0; - messageLabel.opaque = YES; - LU_SET_ACCESSIBILITY_IDENTIFIER(messageLabel, @"Log Message Label"); - - [self.contentView addSubview:messageLabel]; - - self.messageLabel = messageLabel; - } - return self; -} - -// TODO: fix code duplication -+ (CGFloat)heightForCellWithText:(nullable NSString *)text width:(CGFloat)width -{ - LUTheme *theme = [LUTheme mainTheme]; - - CGSize constraintSize = CGSizeMake(width - 2 * theme.indentHorTiny, CGFLOAT_MAX); -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - CGFloat textHeight = [text sizeWithFont:theme.font constrainedToSize:constraintSize lineBreakMode:theme.lineBreakMode].height; - CGFloat height = (int)(textHeight + 2 * theme.indentVerTiny + .99); // size should not be a fracture number (or gray lines will appear) -#pragma clang diagnostic pop - return MAX(theme.cellHeightTiny, height); -} - -- (void)setSize:(CGSize)size -{ - self.contentView.bounds = CGRectMake(0, 0, size.width, size.height); - - // message - LUTheme *theme = self.theme; - CGFloat messageX = theme.indentHorTiny; - CGFloat messageY = theme.indentVerTiny; - CGFloat messageWidth = size.width - 2 * (theme.indentHorTiny); - CGFloat messageHeight = size.height - 2 * (theme.indentVerTiny); - - self.messageLabel.frame = CGRectMake(messageX, messageY, messageWidth, messageHeight); -} - -- (void)setMessage:(LULogMessage *)message attributes:(NSDictionary *)attributes -{ - self.messageLabel.attributedText = message.tags.count > 0 - ? [message createAttributedTextWithSkin:[LUTheme mainTheme].attributedTextSkin attributes:attributes] - : [[NSAttributedString alloc] initWithString:message.text attributes:attributes]; - -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.m.meta deleted file mode 100644 index e3c929f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogEntryTableViewCell.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 1376bf54dfe6140fb9f231e7ccb4886c -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.h deleted file mode 100644 index 9ce7ca9..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// LUConsoleLogMenuController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUViewController.h" - -@class LUConsoleLogMenuController; - -@interface LUConsoleLogMenuControllerButton : NSObject - -@property (nonatomic, strong) UIColor *textColor; -@property (nonatomic, strong) UIColor *textHighlightedColor; - -+ (instancetype)buttonWithTitle:(NSString *)title target:(id)target action:(SEL)action; -- (instancetype)initWithTitle:(NSString *)title target:(id)target action:(SEL)action; - -@end - -@protocol LUConsoleLogMenuControllerDelegate - -- (void)menuControllerDidRequestClose:(LUConsoleLogMenuController *)controller; - -@end - - -@interface LUConsoleLogMenuController : LUViewController - -@property (nonatomic, weak) id delegate; - -- (LUConsoleLogMenuControllerButton *)addButtonTitle:(NSString *)title target:(id)target action:(SEL)action; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.h.meta deleted file mode 100644 index a82eeff..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 096c411ccea8645319d648fb49e8c879 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.m deleted file mode 100644 index 3bfc27d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.m +++ /dev/null @@ -1,234 +0,0 @@ -// -// LUConsoleLogMenuController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "Lunar.h" - -#import "LUConsoleLogMenuController.h" - -#define kButtonBackgroundImage @"lunar_console_log_button_background.png" - -@interface LUConsoleLogMenuControllerButton () { - NSString *_title; - id _target; - SEL _action; -} - -- (UIButton *)UIButton; - -@end - -@implementation LUConsoleLogMenuControllerButton - -+ (instancetype)buttonWithTitle:(NSString *)title target:(id)target action:(SEL)action -{ - return [[self alloc] initWithTitle:title target:target action:action]; -} - -- (instancetype)initWithTitle:(NSString *)title target:(id)target action:(SEL)action -{ - self = [super init]; - if (self) { - _title = title; - _target = target; - _action = action; - } - return self; -} - - -- (UIButton *)UIButton -{ - LUTheme *theme = [LUTheme mainTheme]; - UIColor *textColor = _textColor ? _textColor : theme.contextMenuTextColor; - UIColor *textHighlightedColor = _textHighlightedColor ? _textHighlightedColor : theme.contextMenuTextHighlightColor; - - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button setTitle:_title forState:UIControlStateNormal]; - [button addTarget:_target action:_action forControlEvents:UIControlEventTouchUpInside]; - [button setBackgroundColor:theme.contextMenuBackgroundColor]; - [button setTitleColor:textColor forState:UIControlStateNormal]; - [button setTitleColor:textHighlightedColor forState:UIControlStateHighlighted]; - [button setTranslatesAutoresizingMaskIntoConstraints:NO]; - [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft]; - [button setContentEdgeInsets:UIEdgeInsetsMake(0, 15, 0, 0)]; - return button; -} - -@end - -@interface LUConsoleLogMenuController () { - NSMutableArray *_buttons; -} - -@property (nonatomic, weak) IBOutlet UIView *contentView; - -@end - -@implementation LUConsoleLogMenuController - -- (instancetype)init -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) { - _buttons = [NSMutableArray new]; - } - return self; -} - - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // background tap - UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self - action:@selector(handleBackgroundTap:)]; - [self.view addGestureRecognizer:recognizer]; - - // colors - LUTheme *theme = [LUTheme mainTheme]; - - // background - _contentView.backgroundColor = theme.contextMenuBackgroundColor; - - // border radius - _contentView.layer.borderColor = [[UIColor colorWithRed:0.37 green:0.37 blue:0.37 alpha:1.0] CGColor]; - _contentView.layer.cornerRadius = 3.0; - - // shadow - _contentView.layer.shadowColor = [UIColor blackColor].CGColor; - _contentView.layer.shadowOpacity = 0.5; - _contentView.layer.shadowRadius = 5.0; - - - // add buttons - [self addButtonsToView:_contentView]; - - // update constraints - [self updateViewConstraints]; -} - -#pragma mark - -#pragma mark Buttons - -- (LUConsoleLogMenuControllerButton *)addButtonTitle:(NSString *)title target:(id)target action:(SEL)action -{ - LUConsoleLogMenuControllerButton *button = [[LUConsoleLogMenuControllerButton alloc] initWithTitle:title target:target action:action]; - [_buttons addObject:button]; - return button; -} - -- (void)addButtonsToView:(UIView *)view -{ - UIButton *prevButton = nil; - - for (LUConsoleLogMenuControllerButton *buttonData in _buttons) { - UIButton *button = [buttonData UIButton]; - - // close controller on button - [button addTarget:self action:@selector(onButton:) forControlEvents:UIControlEventTouchUpInside]; - - // add to parent - [view addSubview:button]; - - // content hugging priority so button won't expand - [button setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical]; - - // set horizontal center - [NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeCenterX - relatedBy:NSLayoutRelationEqual - toItem:view - attribute:NSLayoutAttributeCenterX - multiplier:1.0 - constant:0] - .active = YES; - - // set equal width with a parent - [NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeWidth - relatedBy:NSLayoutRelationEqual - toItem:view - attribute:NSLayoutAttributeWidth - multiplier:1.0 - constant:0] - .active = YES; - - // set top margin - if (prevButton) { - [NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeTop - relatedBy:NSLayoutRelationEqual - toItem:prevButton - attribute:NSLayoutAttributeBottom - multiplier:1.0 - constant:8] - .active = YES; - } else { - [NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeTop - relatedBy:NSLayoutRelationEqual - toItem:view - attribute:NSLayoutAttributeTopMargin - multiplier:1.0 - constant:0] - .active = YES; - } - - prevButton = button; - } - - // set top margin - [NSLayoutConstraint constraintWithItem:prevButton - attribute:NSLayoutAttributeBottom - relatedBy:NSLayoutRelationEqual - toItem:view - attribute:NSLayoutAttributeBottomMargin - multiplier:1.0 - constant:0] - .active = YES; -} - -- (void)onButton:(id)sender -{ - [self requestClose]; -} - -#pragma mark - -#pragma mark Background tap recognizer - -- (void)handleBackgroundTap:(UIGestureRecognizer *)recognizer -{ - [self requestClose]; -} - -#pragma mark - -#pragma mark Delegate notifications - -- (void)requestClose -{ - if ([_delegate respondsToSelector:@selector(menuControllerDidRequestClose:)]) { - [_delegate menuControllerDidRequestClose:self]; - } -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.m.meta deleted file mode 100644 index a115106..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 4fa9509bccd2a4f12ab23aca3936ddde -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.xib b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.xib deleted file mode 100644 index e42e6a1..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.xib.meta deleted file mode 100644 index 99a93d1..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogMenuController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 95b75c43e321e45e194b2cf9f7e770d8 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.h deleted file mode 100644 index 0b1ca77..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// LUConsoleLogTypeButton.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUToggleButton.h" - -@interface LUConsoleLogTypeButton : LUToggleButton - -@property (nonatomic, assign) NSUInteger count; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.h.meta deleted file mode 100644 index 436e810..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: a6f30dc24a3e6459fa6b94b6ec1f406f -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.m deleted file mode 100644 index aff6e54..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// LUConsoleLogTypeButton.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsoleLogTypeButton.h" - -#import "Lunar.h" - -static const NSUInteger kCountMax = 999; - -@interface LUConsoleLogTypeButton () -{ - NSString * _initialText; -} - -@end - -@implementation LUConsoleLogTypeButton - - -- (void)awakeFromNib -{ - [super awakeFromNib]; - - _initialText = self.titleLabel.text; - _count = INT32_MAX; - - // text color - [self setTitleColor:[LUTheme mainTheme].logButtonTitleColor forState:UIControlStateNormal]; - [self setTitleColor:[LUTheme mainTheme].logButtonTitleSelectedColor forState:UIControlStateSelected]; - - // images - UIImage *normalImage = [self imageForState:UIControlStateNormal]; - UIImage *selectedImage = [self image:normalImage changeAlpha:0.1]; - [self setImage:selectedImage forState:UIControlStateSelected]; - - self.count = 0; - self.on = NO; -} - -- (void)setCount:(NSUInteger)count -{ - if (_count != count) - { - if (count < kCountMax) - { - NSString *countText = [[NSString alloc] initWithFormat:@"%ld", (unsigned long)count]; - [self setCountText:countText]; - } - else if (_count < kCountMax) - { - [self setCountText:_initialText]; - } - - _count = count; - } -} - -#pragma mark - -#pragma mark Image Helpers - -- (UIImage *)image:(UIImage *)image changeAlpha:(CGFloat)alpha -{ - UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale); - - CGContextRef ctx = UIGraphicsGetCurrentContext(); - CGRect area = CGRectMake(0, 0, image.size.width, image.size.height); - - CGContextScaleCTM(ctx, 1, -1); - CGContextTranslateCTM(ctx, 0, -area.size.height); - - CGContextSetBlendMode(ctx, kCGBlendModeMultiply); - - CGContextSetAlpha(ctx, alpha); - - CGContextDrawImage(ctx, area, image.CGImage); - - UIImage *result = UIGraphicsGetImageFromCurrentImageContext(); - - UIGraphicsEndImageContext(); - - return result; -} - -#pragma mark - -#pragma mark Properties - -- (void)setCountText:(NSString *)text -{ - [self setTitle:text forState:UIControlStateNormal]; - [self setTitle:text forState:UIControlStateSelected]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.m.meta deleted file mode 100644 index d97df51..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LUConsoleLogTypeButton.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: e479db4cd40204299bd27c222cb0978f -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.h deleted file mode 100644 index ef4b83f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// LULogMessage.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class LUAttributedTextSkin; - -@interface LURichTextTag : NSObject - -@property (nonatomic, readonly) NSRange range; - -- (instancetype)initWithRange:(NSRange)range; - -@end - -typedef enum : NSUInteger { - LURichTextStyleBold, - LURichTextStyleItalic, - LURichTextStyleBoldItalic -} LURichTextStyle; - -@interface LURichTextStyleTag : LURichTextTag - -@property (nonatomic, readonly) LURichTextStyle style; - -- (instancetype)initWithStyle:(LURichTextStyle)style range:(NSRange)range; - -@end - -@interface LURichTextColorTag : LURichTextTag - -@property (nonatomic, readonly) UIColor * color; - -- (instancetype)initWithColor:(UIColor *)color range:(NSRange)range; - -@end - -@interface LULogMessage : NSObject - -@property (nonatomic, readonly, nullable) NSString *text; -@property (nonatomic, readonly, nullable) NSArray *tags; -@property (nonatomic, readonly) NSUInteger length; - -- (instancetype)initWithText:(nullable NSString *)text tags:(NSArray * _Nullable)tags; - -+ (instancetype)fromRichText:(nullable NSString *)text; - -@end - -@interface LULogMessage (AttributedString) - -- (NSAttributedString *)createAttributedTextWithSkin:(LUAttributedTextSkin *)skin; -- (NSAttributedString *)createAttributedTextWithSkin:(LUAttributedTextSkin *)skin attributes:(nullable NSDictionary *)attrs; - - -@end - -NS_ASSUME_NONNULL_END diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.h.meta deleted file mode 100644 index a3c31cd..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: a0b58b207c19c4a14bd8d19bbef94a9b -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.m deleted file mode 100644 index ae44083..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.m +++ /dev/null @@ -1,509 +0,0 @@ -// -// LULogMessage.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LULogMessage.h" -#import "LUStringUtils.h" -#import "LUTheme.h" -#import "LUImageUtils.h" - -#import - -static NSUInteger _parseColor(NSString *value); - -@interface LURichTextTagInfo : NSObject - -@property (nonatomic, readonly) NSString *name; -@property (nonatomic, readonly) NSString *attribute; -@property (nonatomic, readonly, getter=isOpen) BOOL open; -@property (nonatomic, readonly) NSUInteger position; - -- (instancetype)initWithName:(NSString *)name attribute:(NSString *)attributes open:(BOOL)open position:(NSUInteger)position; - -@end - -@implementation LURichTextTagInfo - -- (instancetype)initWithName:(NSString *)name attribute:(NSString *)attribute open:(BOOL)open position:(NSUInteger)position -{ - self = [super init]; - if (self) - { - _name = name; - _attribute = attribute; - _open = open; - _position = position; - } - return self; -} - -@end - -static inline BOOL _isvalidTagName(NSString *name) -{ - return [name isEqualToString:@"b"] || [name isEqualToString:@"i"] || [name isEqualToString:@"color"]; -} - -static LURichTextTagInfo * _tryCaptureTag(NSString *str, NSUInteger position, NSUInteger* iterPtr) -{ - NSUInteger end = *iterPtr; - BOOL isOpen = YES; - if (end < str.length && [str characterAtIndex:end] == '/') - { - isOpen = NO; - ++end; - } - - NSUInteger start = end; - BOOL found = NO; - while (end < str.length) - { - unichar chr = [str characterAtIndex:end++]; - if (chr == '>') - { - found = YES; - break; - } - } - - if (!found) - { - return nil; - } - - NSString *capture = [str substringWithRange:NSMakeRange(start, end - 1 - start)]; - NSArray *tokens = [capture componentsSeparatedByString:@"="]; - if (tokens.count != 1 && tokens.count != 2) - { - return nil; - } - - NSString *name = tokens[0]; - if (!_isvalidTagName(name)) - { - return nil; - } - - NSString *attribute = tokens.count > 1 ? tokens[1] : nil; - - *iterPtr = end; - return [[LURichTextTagInfo alloc] initWithName:name attribute:attribute open:isOpen position:position]; -} - -@implementation LURichTextTag - -- (instancetype)initWithRange:(NSRange)range { - self = [super init]; - if (self) { - _range = range; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object { - if ([object isKindOfClass:[self class]]) { - LURichTextTag *other = object; - return NSEqualRanges(_range, other.range); - } - - return NO; -} - -#pragma mark - -#pragma mark Description - -- (NSString *)description { - return [NSString stringWithFormat:@"range=%@", NSStringFromRange(_range)]; -} - -@end - -@implementation LURichTextStyleTag - -- (instancetype)initWithStyle:(LURichTextStyle)style range:(NSRange)range { - self = [super initWithRange:range]; - if (self) { - _style = style; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object { - if ([object isKindOfClass:[self class]]) { - LURichTextStyleTag *other = object; - return _style == other.style && [super isEqual:object]; - } - - return NO; -} - -#pragma mark - -#pragma mark Description - -- (NSString *)description { - return [NSString stringWithFormat:@"style=%lu range=%@", (unsigned long)_style, NSStringFromRange(self.range)]; -} - -@end - -@implementation LURichTextColorTag - -- (instancetype)initWithColor:(UIColor *)color range:(NSRange)range { - self = [super initWithRange:range]; - if (self) { - _color = color; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object { - if ([object isKindOfClass:[self class]]) { - LURichTextColorTag *other = object; - return [_color isEqual:other.color] && [super isEqual:object]; - } - - return NO; -} - -#pragma mark - -#pragma mark Description - -- (NSString *)description { - return [NSString stringWithFormat:@"color=0x%02lx range=%@", (unsigned long)_color, NSStringFromRange(self.range)]; -} - -@end - -@implementation LULogMessage - -- (instancetype)initWithText:(nullable NSString *)text tags:(NSArray *)tags -{ - self = [super init]; - if (self) - { - _text = text; - _tags = tags; - } - return self; -} - -#pragma mark - -#pragma mark Rich Text - -+ (instancetype)fromRichText:(NSString *)text -{ - NSMutableArray *tags = nil; - NSMutableArray *stack = nil; - NSUInteger i = 0; - - unichar buffer[text.length]; - NSUInteger bufferSize = 0; - - NSUInteger boldCount = 0; - NSUInteger italicCount = 0; - - while (i < text.length) - { - unichar chr = [text characterAtIndex:i++]; - if (chr == '<') - { - LURichTextTagInfo *tag = _tryCaptureTag(text, bufferSize, &i); - if (tag) - { - if (tag.isOpen) - { - if ([tag.name isEqualToString:@"b"]) - { - boldCount++; - } - else if ([tag.name isEqualToString:@"i"]) - { - italicCount++; - } - - if (stack == nil) stack = [NSMutableArray new]; - [stack addObject:tag]; - } - else if (stack.count > 0) - { - LURichTextTagInfo *opposingTag = stack.lastObject; - [stack removeLastObject]; - - // if tags don't match - just use raw string - if (![tag.name isEqualToString:opposingTag.name]) - { - continue; - } - - if ([tag.name isEqualToString:@"b"]) - { - boldCount--; - if (boldCount > 0) - { - continue; - } - } - else if ([tag.name isEqualToString:@"i"]) - { - italicCount--; - if (italicCount > 0) - { - continue; - } - } - - // create rich text tag - NSInteger len = bufferSize - opposingTag.position; - if (len > 0) - { - NSRange range = NSMakeRange(opposingTag.position, len); - if (tags == nil) tags = [NSMutableArray new]; - if ([tag.name isEqualToString:@"b"]) - { - LURichTextStyle style = italicCount > 0 ? LURichTextStyleBoldItalic : LURichTextStyleBold; - [tags addObject:[[LURichTextStyleTag alloc] initWithStyle:style range:range]]; - } - else if ([tag.name isEqualToString:@"i"]) - { - LURichTextStyle style = boldCount > 0 ? LURichTextStyleBoldItalic : LURichTextStyleItalic; - [tags addObject:[[LURichTextStyleTag alloc] initWithStyle:style range:range]]; - } - else if ([tag.name isEqualToString:@"color"]) - { - NSString *colorValue = opposingTag.attribute; - if (colorValue != nil) - { - NSUInteger color = _parseColor(colorValue); - [tags addObject:[[LURichTextColorTag alloc] initWithColor:LUUIColorFromRGB(color) range:range]]; - } - } - } - } - } - else - { - buffer[bufferSize++] = chr; - } - } - else - { - buffer[bufferSize++] = chr; - } - } - - // "close" un-matched tags - while (stack.count > 0) - { - LURichTextTagInfo *tag = stack.lastObject; - [stack removeLastObject]; - - if ([tag.name isEqualToString:@"b"]) - { - boldCount--; - if (boldCount > 0) - { - continue; - } - } - else if ([tag.name isEqualToString:@"i"]) - { - italicCount--; - if (italicCount > 0) - { - continue; - } - } - - // create rich text tag - NSInteger len = bufferSize - tag.position; - if (len > 0) - { - NSRange range = NSMakeRange(tag.position, len); - if (tags == nil) tags = [NSMutableArray new]; - if ([tag.name isEqualToString:@"b"]) - { - LURichTextStyle style = italicCount > 0 ? LURichTextStyleBoldItalic : LURichTextStyleBold; - [tags addObject:[[LURichTextStyleTag alloc] initWithStyle:style range:range]]; - } - else if ([tag.name isEqualToString:@"i"]) - { - LURichTextStyle style = boldCount > 0 ? LURichTextStyleBoldItalic : LURichTextStyleItalic; - [tags addObject:[[LURichTextStyleTag alloc] initWithStyle:style range:range]]; - } - else if ([tag.name isEqualToString:@"color"]) - { - NSString *colorValue = tag.attribute; - if (colorValue != nil) - { - NSUInteger color = _parseColor(colorValue); - [tags addObject:[[LURichTextColorTag alloc] initWithColor:LUUIColorFromRGB(color) range:range]]; - } - } - } - } - - if (tags && bufferSize > 0) - { - NSArray *reversedTags = [[tags reverseObjectEnumerator] allObjects]; - return [[self alloc] initWithText:[[NSString alloc] initWithCharacters:buffer length:bufferSize] tags:reversedTags]; - } - - if (bufferSize < text.length) - { - text = [[NSString alloc] initWithCharacters:buffer length:bufferSize]; - } - - return [[self alloc] initWithText:text tags:nil]; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if ([object isKindOfClass:[self class]]) { - LULogMessage *other = object; - return ((_text == nil && other.text == nil) || [_text isEqual:other.text]) && - ((_tags == nil && other.tags == nil) || [_tags isEqualToArray:other.tags]); - } - - if ([object isKindOfClass:[NSString class]]) - { - NSString *other = object; - return [_text isEqualToString:other]; - } - - return false; -} - -#pragma mark - -#pragma mark Description - -- (NSString *)description -{ - return _text; -} - -#pragma mark - -#pragma mark Properties - -- (NSUInteger)length -{ - return _text.length; -} - -- (NSAttributedString *)createAttributedTextWithSkin:(LUAttributedTextSkin *)skin { - return [self createAttributedTextWithSkin:skin attributes:nil]; -} - -- (NSAttributedString *)createAttributedTextWithSkin:(LUAttributedTextSkin *)skin attributes:(nullable NSDictionary *)attrs { - if (_tags.count > 0) { - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:_text attributes:attrs]; - [attributedString addAttribute:NSFontAttributeName value:skin.regularFont range:NSMakeRange(0, _text.length)]; - for (NSInteger index = _tags.count - 1; index >= 0; --index) { - LURichTextTag *tag = _tags[index]; - if ([tag isKindOfClass:[LURichTextColorTag class]]) { - LURichTextColorTag *colorTag = (LURichTextColorTag *) tag; - [attributedString addAttribute:NSForegroundColorAttributeName value:colorTag.color range:tag.range]; - } - else if ([tag isKindOfClass:[LURichTextStyleTag class]]) { - LURichTextStyleTag *styleTag = (LURichTextStyleTag *) tag; - - UIFont *font; - if (styleTag.style == LURichTextStyleBold) - font = skin.boldFont; - else if (styleTag.style == LURichTextStyleItalic) - font = skin.italicFont; - else if (styleTag.style == LURichTextStyleBoldItalic) - font = skin.boldItalicFont; - else - font = skin.regularFont; - - [attributedString addAttribute:NSFontAttributeName value:font range:tag.range]; - } - } - return attributedString; - } - - return nil; -} - -@end - -static NSUInteger _parseColor(NSString *value) { - if (value == nil) { - return 0xff00ffff; - } - - if ([value hasPrefix:@"#"]) { - NSUInteger result; - NSString *hex = [value substringFromIndex:1]; - if (LUStringTryParseHex(hex, &result)) { - // #RRGGBB or #RRGGBBAA - return hex.length <= 6 ? ((result << 8) | 0xff) : (result | 0xff); - } - return 0xff00ffff; - } - - static NSDictionary * colorLookup = nil; - if (colorLookup == nil) { - colorLookup = @{ - @"aqua" : @0x00ffffff, - @"black" : @0x000000ff, - @"blue" : @0x0000ffff, - @"brown" : @0xa52a2aff, - @"cyan" : @0x00ffffff, - @"darkblue" : @0x0000a0ff, - @"fuchsia" : @0xff00ffff, - @"green" : @0x008000ff, - @"grey" : @0x808080ff, - @"lightblue" : @0xadd8e6ff, - @"lime" : @0x00ff00ff, - @"magenta" : @0xff00ffff, - @"maroon" : @0x800000ff, - @"navy" : @0x000080ff, - @"olive" : @0x808000ff, - @"orange" : @0xffa500ff, - @"purple" : @0x800080ff, - @"red" : @0xff0000ff, - @"silver" : @0xc0c0c0ff, - @"teal" : @0x008080ff, - @"white" : @0xffffffff, - @"yellow" : @0xffff00ff - }; - } - - NSNumber *colorNumber = colorLookup[value]; - if (colorNumber) { - return [colorNumber integerValue]; - } - - return 0xff00ffff; -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.m.meta deleted file mode 100644 index 1aa843b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Log/LULogMessage.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 7d959e3752e464913b6fab9837647230 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin.meta deleted file mode 100644 index 155956e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 75b4a622e11204c8999e9e0c30d75f46 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.h deleted file mode 100644 index 6a9d0ac..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.h +++ /dev/null @@ -1,96 +0,0 @@ -// -// LUConsolePlugin.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUObject.h" -#import "LUConsoleLogEntry.h" - -@class LUActionRegistry; -@class LUConsole; -@class LUConsolePlugin; -@class LUCVar; -@class LUPluginSettings; -@class LUWindow; - -@protocol LUConsolePluginDelegate - -@optional -- (void)consolePluginDidOpenController:(LUConsolePlugin *)plugin; -- (void)consolePluginDidCloseController:(LUConsolePlugin *)plugin; - -@end - -extern BOOL LUConsoleIsFreeVersion; -extern BOOL LUConsoleIsFullVersion; - -extern NSString * const LUConsoleCheckFullVersionNotification; -extern NSString * const LUConsoleCheckFullVersionNotificationSource; - -@interface LUConsolePlugin : LUObject - -@property (nonatomic, readonly) LUWindow * consoleWindow; -@property (nonatomic, readonly) LUWindow * actionOverlayWindow; -@property (nonatomic, readonly) LUWindow * warningWindow; -@property (nonatomic, readonly) LUConsole * console; -@property (nonatomic, readonly) LUActionRegistry * actionRegistry; -@property (nonatomic, readonly) NSString * version; - -@property (nonatomic, assign) NSInteger capacity; -@property (nonatomic, assign) NSInteger trim; - -@property (nonatomic, readonly) LUPluginSettings *settings; -@property (nonatomic, weak) id delegate; - -- (instancetype)initWithTargetName:(NSString *)targetName - methodName:(NSString *)methodName - version:(NSString *)version - settingsJson:(NSString *)settingsJson; - -- (void)start; -- (void)stop; - -- (void)showConsole; -- (void)hideConsole; - -- (void)showOverlay; -- (void)hideOverlay; - -- (void)logMessage:(NSString *)message stackTrace:(NSString *)stackTrace type:(LUConsoleLogType)type; -- (void)clearConsole; -- (void)clearState; - -- (void)registerActionWithId:(int)actionId name:(NSString *)name; -- (void)unregisterActionWithId:(int)actionId; - -- (LUCVar *)registerVariableWithId:(int)entryId name:(NSString *)name type:(NSString *)type value:(NSString *)value; -- (LUCVar *)registerVariableWithId:(int)entryId name:(NSString *)name type:(NSString *)type value:(NSString *)value defaultValue:(NSString *)defaultValue; -- (LUCVar *)registerVariableWithId:(int)entryId name:(NSString *)name type:(NSString *)type value:(NSString *)value defaultValue:(NSString *)defaultValue values:(NSArray *)values; -- (void)setValue:(NSString *)value forVariableWithId:(int)variableId; - -- (void)enableGestureRecognition; -- (void)disableGestureRecognition; - -- (void)sendScriptMessageName:(NSString *)name; -- (void)sendScriptMessageName:(NSString *)name params:(NSDictionary *)params; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.h.meta deleted file mode 100644 index a582951..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: d292f9f7e84a74864ae1d6cb05fcc502 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.m deleted file mode 100644 index 823335d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.m +++ /dev/null @@ -1,506 +0,0 @@ -// -// LUConsolePlugin.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsolePlugin.h" - -#import "Lunar.h" -#import "LUConsolePluginImp.h" -#import "LUPluginSettings.h" - -static NSString *const kSettingsFilename = @"com.spacemadness.lunarmobileconsole.settings-2.bin"; - -NSString *const LUConsoleCheckFullVersionNotification = @"LUConsoleCheckFullVersionNotification"; -NSString *const LUConsoleCheckFullVersionNotificationSource = @"source"; - -static const NSTimeInterval kWindowAnimationDuration = 0.4f; -static const CGFloat kWarningHeight = 45.0f; - -static NSString *const kScriptMessageConsoleOpen = @"console_open"; -static NSString *const kScriptMessageConsoleClose = @"console_close"; -static NSString *const kScriptMessageTrackEvent = @"track_event"; - -@interface LUConsolePlugin () { - LUConsolePluginImp *_pluginImp; - LUUnityScriptMessenger *_scriptMessenger; - UIGestureRecognizer *_gestureRecognizer; -} - -@end - -@implementation LUConsolePlugin - -- (instancetype)initWithTargetName:(NSString *)targetName - methodName:(NSString *)methodName - version:(NSString *)version - settingsJson:(NSString *)settingsJson -{ - self = [super init]; - if (self) { - if (!LU_IOS_MIN_VERSION_AVAILABLE) { - NSLog(@"Console is not initialized. Mininum iOS version required: %d", LU_SYSTEM_VERSION_MIN); - - self = nil; - return nil; - } - - NSData *settingsData = [settingsJson dataUsingEncoding:NSUTF8StringEncoding]; - NSDictionary *settingsDict = [NSJSONSerialization JSONObjectWithData:settingsData options:0 error:nil]; - - _settings = [[LUPluginSettings alloc] initWithDictionary:settingsDict]; - LUPluginSettings *existingSettings = [self loadSettings]; - if (existingSettings != nil) { - _settings = [self mergeSettings:_settings withExistingSettings:existingSettings]; - } - - _pluginImp = [[LUConsolePluginImp alloc] initWithPlugin:self]; - _scriptMessenger = [[LUUnityScriptMessenger alloc] initWithTargetName:targetName methodName:methodName]; - _version = version; - _console = [[LUConsole alloc] initWithCapacity:_settings.capacity trimCount:_settings.trim]; - _actionRegistry = [[LUActionRegistry alloc] init]; - _actionRegistry.actionSortingEnabled = _settings.sortActions; - _actionRegistry.variableSortingEnabled = _settings.sortVariables; - } - return self; -} - -- (void)dealloc -{ - [self disableGestureRecognition]; -} - -#pragma mark - -#pragma mark Public interface - -- (void)start -{ - [self enableGestureRecognition]; - - if (_settings.logOverlay.enabled) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self showOverlay]; - }); - } -} - -- (void)stop -{ - [self removeConsole]; - [self hideOverlay]; - [self hideWarning]; - [self disableGestureRecognition]; - [self unregisterNotifications]; -} - -- (void)showConsole -{ - [self hideOverlay]; - [self hideWarning]; - - if (_consoleWindow == nil) { - LUConsoleController *controller = [LUConsoleController controllerWithPlugin:self]; - controller.emails = _settings.emails; - controller.delegate = self; - - CGRect windowFrame = LUGetScreenBounds(); - CGRect windowInitialFrame = windowFrame; - windowInitialFrame.origin.y -= CGRectGetHeight(windowFrame); - - _consoleWindow = [[LUWindow alloc] initWithFrame:windowInitialFrame]; - _consoleWindow.rootViewController = controller; - _consoleWindow.opaque = YES; - _consoleWindow.backgroundColor = [UIColor clearColor]; - _consoleWindow.hidden = NO; - - [UIView animateWithDuration:kWindowAnimationDuration - animations:^{ - self->_consoleWindow.frame = windowFrame; - }]; - - [self registerNotifications]; - [self disableGestureRecognition]; - } -} - -- (void)hideConsole -{ - if (_consoleWindow != nil) { - [self unregisterNotifications]; - - CGRect windowFrame = _consoleWindow.frame; - windowFrame.origin.y -= CGRectGetHeight(windowFrame); - - LUWindow *window = _consoleWindow; // don't capture self in the block - [UIView animateWithDuration:kWindowAnimationDuration - animations:^{ - window.frame = windowFrame; - } - completion:^(BOOL finished) { - window.hidden = YES; - [self enableGestureRecognition]; - }]; - - _consoleWindow = nil; - - [_scriptMessenger sendMessageName:kScriptMessageConsoleClose]; - } - - if (_settings.logOverlay.enabled) { - [self showOverlay]; - } -} - -- (void)removeConsole -{ - _consoleWindow.hidden = YES; - _consoleWindow = nil; -} - -- (void)showOverlay -{ - [_pluginImp showOverlay]; -} - -- (void)hideOverlay -{ - [_pluginImp hideOverlay]; -} - -- (void)logMessage:(NSString *)message stackTrace:(NSString *)stackTrace type:(LUConsoleLogType)type -{ - LULogMessage *logMessage; - if (_settings.richTextTags) { - logMessage = [LULogMessage fromRichText:message]; - } - else { - logMessage = [[LULogMessage alloc] initWithText:message tags:nil]; - } - - if ([self shouldDisplayErrorType:type] && _consoleWindow == nil) { - [self showWarningWithMessage:logMessage]; - } - - // TODO: use batching - lunar_dispatch_main(^{ - [self->_console logMessage:logMessage stackTrace:stackTrace type:type]; - }); -} - -- (void)clearConsole -{ - [_console clear]; -} - -- (void)clearState -{ - NSString *documentsDir = LUGetDocumentsDir(); - NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDir error:NULL]; - for (NSString *file in files) { - NSError *error = nil; - BOOL removed = [[NSFileManager defaultManager] removeItemAtPath:[documentsDir stringByAppendingPathComponent:file] error:&error]; - if (removed) { - NSLog(@"[LUNAR] File deleted %@", file); - } else { - NSLog(@"[LUNAR] File NOT deleted %@: %@", file, [error description]); - } - } -} - -#pragma mark - -#pragma mark Quick actions - -- (void)registerActionWithId:(int)actionId name:(NSString *)name -{ - [_actionRegistry registerActionWithId:actionId name:name]; -} - -- (void)unregisterActionWithId:(int)actionId -{ - [_actionRegistry unregisterActionWithId:actionId]; -} - -- (LUCVar *)registerVariableWithId:(int)entryId name:(NSString *)name type:(NSString *)type value:(NSString *)value -{ - return [self registerVariableWithId:entryId name:name type:type value:value defaultValue:value]; -} - -- (LUCVar *)registerVariableWithId:(int)entryId name:(NSString *)name type:(NSString *)type value:(NSString *)value defaultValue:(NSString *)defaultValue -{ - return [self registerVariableWithId:entryId name:name type:type value:value defaultValue:value values:nil]; -} - -- (LUCVar *)registerVariableWithId:(int)entryId name:(NSString *)name type:(NSString *)type value:(NSString *)value defaultValue:(NSString *)defaultValue values:(NSArray *)values -{ - return [_actionRegistry registerVariableWithId:entryId name:name typeName:type value:value defaultValue:defaultValue values:values]; -} - -- (void)setValue:(NSString *)value forVariableWithId:(int)variableId -{ - [_actionRegistry setValue:value forVariableWithId:variableId]; -} - -#pragma mark - -#pragma mark Warnings - -- (BOOL)showWarningWithMessage:(LULogMessage *)message -{ - if (_warningWindow == nil) { - CGRect safeRect = [LUUIHelper safeAreaRect]; - CGRect windowFrame = CGRectMake( - CGRectGetMinX(safeRect), - CGRectGetMinY(safeRect) + CGRectGetHeight(safeRect) - kWarningHeight, - CGRectGetWidth(safeRect), - kWarningHeight - ); - _warningWindow = [[LUWindow alloc] initWithFrame:windowFrame]; - _warningWindow.clipsToBounds = YES; - - LUExceptionWarningController *controller = [[LUExceptionWarningController alloc] initWithMessage:message]; - controller.view.frame = _warningWindow.bounds; - controller.delegate = self; - _warningWindow.rootViewController = controller; - - _warningWindow.hidden = NO; - - return YES; - } - - return NO; -} - -- (void)hideWarning -{ - if (_warningWindow) { - _warningWindow.hidden = YES; - _warningWindow = nil; - } -} - -#pragma mark - -#pragma mark Notifications - -- (void)registerNotifications -{ - [self registerNotificationName:LUConsoleCheckFullVersionNotification - selector:@selector(checkFullVersionNotification:)]; - [self registerNotificationName:LUNotificationSettingsDidChange selector:@selector(settingsDidChangeNotification:)]; -} - -- (void)checkFullVersionNotification:(NSNotification *)notification -{ - NSString *source = [notification.userInfo objectForKey:LUConsoleCheckFullVersionNotificationSource]; - LUAssert(source); - - if (source) { - NSDictionary *params = @{ - @"category" : @"Full Version", - @"action" : [NSString stringWithFormat:@"full_version_%@", source] - }; - [_scriptMessenger sendMessageName:kScriptMessageTrackEvent params:params]; - } -} - -- (void)settingsDidChangeNotification:(NSNotification *)notification -{ - [self saveSettings:_settings]; -} - -#pragma mark - -#pragma mark LUConsoleLogControllerEntrySource - -- (NSInteger)consoleControllerNumberOfEntries:(LUConsoleLogController *)controller -{ - return _console.entriesCount; -} - -- (LUConsoleLogEntry *)consoleController:(LUConsoleLogController *)controller entryAtIndex:(NSUInteger)index -{ - return [_console entryAtIndex:index]; -} - -#pragma mark - -#pragma mark LUConsoleControllerDelegate - -- (void)consoleControllerDidOpen:(LUConsoleController *)controller -{ - [_scriptMessenger sendMessageName:kScriptMessageConsoleOpen]; - - if ([_delegate respondsToSelector:@selector(consolePluginDidOpenController:)]) { - [_delegate consolePluginDidOpenController:self]; - } -} - -- (void)consoleControllerDidClose:(LUConsoleController *)controller -{ - [self hideConsole]; - - if ([_delegate respondsToSelector:@selector(consolePluginDidCloseController:)]) { - [_delegate consolePluginDidCloseController:self]; - } -} - -#pragma mark - -#pragma mark LUExceptionWarningControllerDelegate - -- (void)exceptionWarningControllerDidShow:(LUExceptionWarningController *)controller -{ - [self hideWarning]; - [self showConsole]; -} - -- (void)exceptionWarningControllerDidDismiss:(LUExceptionWarningController *)controller -{ - [self hideWarning]; -} - -#pragma mark - -#pragma mark Gesture Recognition - -- (void)enableGestureRecognition -{ - LUAssert(_gestureRecognizer == nil); - if (!_gestureRecognizer && _settings.gesture == LUConsoleGestureSwipeDown) { - UISwipeGestureRecognizer *gr = [[UISwipeGestureRecognizer alloc] initWithTarget:self - action:@selector(handleGesture:)]; - gr.numberOfTouchesRequired = 2; - gr.direction = UISwipeGestureRecognizerDirectionDown; - - [[self keyWindow] addGestureRecognizer:gr]; - - _gestureRecognizer = gr; - } -} - -- (void)disableGestureRecognition -{ - if (_gestureRecognizer != nil) { - [[self keyWindow] removeGestureRecognizer:_gestureRecognizer]; - _gestureRecognizer = nil; - } -} - -- (void)handleGesture:(UIGestureRecognizer *)gr -{ - if (gr.state == UIGestureRecognizerStateEnded) { - [self showConsole]; - } -} - -- (LUConsoleGesture)gestureFromString:(NSString *)gestureName -{ - if ([gestureName isEqualToString:@"SwipeDown"]) { - return LUConsoleGestureSwipeDown; - } - - return LUConsoleGestureNone; -} - -#pragma mark - -#pragma mark Script Messanger - -- (void)sendScriptMessageName:(NSString *)name -{ - [_scriptMessenger sendMessageName:name]; -} - -- (void)sendScriptMessageName:(NSString *)name params:(NSDictionary *)params -{ - [_scriptMessenger sendMessageName:name params:params]; -} - -#pragma mark - -#pragma mark Settings - -- (nullable LUPluginSettings *)loadSettings -{ - NSString *path = LUGetDocumentsFile(kSettingsFilename); - return [NSKeyedUnarchiver unarchiveObjectWithFile:path]; -} - -- (void)saveSettings:(LUPluginSettings *)settings -{ - NSString *path = LUGetDocumentsFile(kSettingsFilename); - [NSKeyedArchiver archiveRootObject:settings toFile:path]; -} - -- (LUPluginSettings *)mergeSettings:(LUPluginSettings *)settings withExistingSettings:(LUPluginSettings *)existingSettings -{ - // TODO: make it more dynamic - settings.exceptionWarning.displayMode = existingSettings.exceptionWarning.displayMode; - settings.logOverlay.enabled = existingSettings.logOverlay.enabled; - settings.logOverlay.maxVisibleLines = existingSettings.logOverlay.maxVisibleLines; - settings.logOverlay.timeout = existingSettings.logOverlay.timeout; - return settings; -} - -#pragma mark - -#pragma mark Helpers - -- (BOOL)shouldDisplayErrorType:(LUConsoleLogType)type -{ - if (!LU_IS_CONSOLE_LOG_TYPE_ERROR(type)) { - return NO; - } - LUDisplayMode displayMode = _settings.exceptionWarning.displayMode; - switch (displayMode) { - case LUDisplayModeNone: - return NO; - case LUDisplayModeErrors: - return type == LUConsoleLogTypeError; - case LUDisplayModeExceptions: - return type == LUConsoleLogTypeException; - default: - return YES; - } -} - -#pragma mark - -#pragma mark Properties - -- (UIWindow *)keyWindow -{ - return [UIApplication sharedApplication].keyWindow; -} - -- (NSInteger)capacity -{ - return _console.capacity; -} - -- (void)setCapacity:(NSInteger)capacity -{ - NSInteger trimCount = _console.trimmedCount; - - _console = [[LUConsole alloc] initWithCapacity:capacity trimCount:trimCount]; -} - -- (NSInteger)trim -{ - return _console.trimCount; -} - -- (void)setTrim:(NSInteger)trim -{ - NSInteger capacity = _console.capacity; - _console = [[LUConsole alloc] initWithCapacity:capacity trimCount:trim]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.m.meta deleted file mode 100644 index 32a07bb..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePlugin.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: ade71e60a95864915af8db9e85815947 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePluginImp.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePluginImp.h deleted file mode 100644 index 60cfdd5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePluginImp.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// LUConsolePluginImp.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUObject.h" - -@class LUConsolePlugin; - -@interface LUConsolePluginImp : LUObject - -- (instancetype)initWithPlugin:(LUConsolePlugin *)plugin; - -- (void)showOverlay; -- (void)hideOverlay; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePluginImp.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePluginImp.h.meta deleted file mode 100644 index 1113292..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUConsolePluginImp.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 3e6c8fe4714ad45e78dc67eaa20dbd6c -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.h deleted file mode 100644 index ef1e0d2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.h +++ /dev/null @@ -1,139 +0,0 @@ -// -// LUPluginSettings.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -NS_ASSUME_NONNULL_BEGIN - -extern NSNotificationName const LUNotificationSettingsDidChange; - -typedef enum : NSUInteger { - LUDisplayModeNone, - LUDisplayModeErrors, - LUDisplayModeExceptions, - LUDisplayModeAll -} LUDisplayMode; - -@interface LUExceptionWarningSettings : NSObject - -@property (nonatomic, assign) LUDisplayMode displayMode; - -/** Constructs instance from a JSON-dictionary */ -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict; - -@end - -@interface LUColor : NSObject - -@property (nonatomic, assign) UInt8 r; -@property (nonatomic, assign) UInt8 g; -@property (nonatomic, assign) UInt8 b; -@property (nonatomic, assign) UInt8 a; -@property (nonatomic, readonly) UIColor *UIColor; - -/** Constructs instance from a JSON-dictionary */ -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict; - -@end - -@interface LULogEntryColors : NSObject - -@property (nonatomic, strong) LUColor *foreground; -@property (nonatomic, strong) LUColor *background; - -/** Constructs instance from a JSON-dictionary */ -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict; - -@end - -@interface LULogColors : NSObject - -@property (nonatomic, strong) LULogEntryColors *exception; -@property (nonatomic, strong) LULogEntryColors *error; -@property (nonatomic, strong) LULogEntryColors *warning; -@property (nonatomic, strong) LULogEntryColors *debug; - -/** Constructs instance from a JSON-dictionary */ -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict; - -@end - -@interface LULogOverlaySettings : NSObject - -/** Indicates if log overlay is enabled. */ -@property (nonatomic, assign, getter=isEnabled) BOOL enabled; - -/** Max number of simultaneously visible lines. */ -@property (nonatomic, assign) NSUInteger maxVisibleLines; - -/** Delay in seconds before each line disappears (0 means never disappear) */ -@property (nonatomic, assign) NSTimeInterval timeout; - -/** Indicates if the line background should be transparent. */ -@property (nonatomic, strong) LULogColors *colors; - -/** Constructs instance from a JSON-dictionary */ -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict; - -@end - -typedef enum : NSUInteger { - LUConsoleGestureNone, - LUConsoleGestureSwipeDown -} LUConsoleGesture; - -/** Global settings from Unity editor. */ -@interface LUPluginSettings : NSObject - -/** Exception warning settings. */ -@property (nonatomic, strong) LUExceptionWarningSettings *exceptionWarning; - -/** Log overlay settings */ -@property (nonatomic, strong) LULogOverlaySettings *logOverlay; - -/** Log output would not grow bigger than this capacity. */ -@property (nonatomic, assign) NSUInteger capacity; - -/** Log output will be trimmed this many lines when overflown. */ -@property (nonatomic, assign) NSUInteger trim; - -/** Gesture type to open the console. */ -@property (nonatomic, assign) LUConsoleGesture gesture; - -/** Indicates if reach text tags should be supported. */ -@property (nonatomic, assign) BOOL richTextTags; - -/** Indicates if actions should be sorted. */ -@property (nonatomic, assign) BOOL sortActions; - -/** Indicates if variables should be sorted. */ -@property (nonatomic, assign) BOOL sortVariables; - -/** Optional list of the email recipients for sending a report. */ -@property (nonatomic, strong) NSArray *emails; - -/** Constructs instance from a JSON-dictionary */ -- (nullable instancetype)initWithDictionary:(NSDictionary *)dict; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.h.meta deleted file mode 100644 index 3b6081d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 3e697c9fcd63c40d7b78216edeff4656 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.m deleted file mode 100644 index 4db9f36..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.m +++ /dev/null @@ -1,442 +0,0 @@ -// -// LUPluginSettings.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUPluginSettings.h" - -NSNotificationName const LUNotificationSettingsDidChange = @"SettingsDidChange"; - -static NSString *NSStringFromGesture(LUConsoleGesture gesture) -{ - switch (gesture) { - case LUConsoleGestureSwipeDown: - return @"swipe_down"; - case LUConsoleGestureNone: - return @"none"; - } -} - -static LUConsoleGesture parseGesture(id value) -{ - if ([value isKindOfClass:[NSString class]]) { - if ([value isEqualToString:@"swipe_down"]) { - return LUConsoleGestureSwipeDown; - } - if ([value isEqualToString:@"none"]) { - return LUConsoleGestureNone; - } - - return LUConsoleGestureSwipeDown; - } - return (LUConsoleGesture)[value intValue]; -} - -static NSString *NSStringFromDisplayMode(LUDisplayMode mode) -{ - switch (mode) { - case LUDisplayModeNone: - return @"none"; - case LUDisplayModeErrors: - return @"errors"; - case LUDisplayModeExceptions: - return @"exceptions"; - case LUDisplayModeAll: - return @"all"; - } -} - -static LUDisplayMode parseDisplayMode(id value) -{ - if ([value isKindOfClass:[NSString class]]) { - if ([value isEqualToString:@"all"]) { - return LUDisplayModeAll; - } - if ([value isEqualToString:@"errors"]) { - return LUDisplayModeErrors; - } - if ([value isEqualToString:@"exceptions"]) { - return LUDisplayModeExceptions; - } - if ([value isEqualToString:@"none"]) { - return LUDisplayModeNone; - } - - return LUDisplayModeAll; - } - return (LUDisplayMode)[value intValue]; -} - -@implementation LUExceptionWarningSettings - -- (instancetype)initWithDictionary:(NSDictionary *)dict -{ - self = [super init]; - if (self) { - _displayMode = parseDisplayMode(dict[@"displayMode"]); - } - return self; -} - -#pragma mark - -#pragma mark NSCoding - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeObject:NSStringFromDisplayMode(self.displayMode) forKey:@"displayMode"]; -} - -- (nullable instancetype)initWithCoder:(NSCoder *)decoder -{ - self = [super init]; - if (self) { - _displayMode = parseDisplayMode([decoder decodeObjectForKey:@"displayMode"]); - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - - if (![object isKindOfClass:[self class]]) { - return NO; - } - - LUExceptionWarningSettings *other = object; - return self.displayMode == other.displayMode; -} - -@end - -@implementation LUColor - -- (instancetype)initWithDictionary:(NSDictionary *)dict -{ - self = [super init]; - if (self) { - _r = (UInt8)[dict[@"r"] intValue]; - _g = (UInt8)[dict[@"g"] intValue]; - _b = (UInt8)[dict[@"b"] intValue]; - _a = (UInt8)[dict[@"a"] intValue]; - } - return self; -} - -- (UIColor *)UIColor -{ - static const float multiplier = 1.0 / 255.0; - return [UIColor colorWithRed:multiplier * _r green:multiplier * _g blue:multiplier * _b alpha:multiplier * _a]; -} - -#pragma mark - -#pragma mark NSCoding - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeInteger:self.r forKey:@"r"]; - [coder encodeInteger:self.g forKey:@"g"]; - [coder encodeInteger:self.b forKey:@"b"]; - [coder encodeInteger:self.a forKey:@"a"]; -} - -- (nullable instancetype)initWithCoder:(NSCoder *)decoder -{ - self = [super init]; - if (self) { - _r = [decoder decodeIntegerForKey:@"r"]; - _g = [decoder decodeIntegerForKey:@"g"]; - _b = [decoder decodeIntegerForKey:@"b"]; - _a = [decoder decodeIntegerForKey:@"a"]; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - - if (![object isKindOfClass:[self class]]) { - return NO; - } - - LUColor *other = object; - return self.r == other.r && self.g == other.g && self.b == other.b && self.a == other.a; -} - -@end - -@implementation LULogColors - -- (instancetype)initWithDictionary:(NSDictionary *)dict -{ - self = [super init]; - if (self) { - _exception = [[LULogEntryColors alloc] initWithDictionary:dict[@"exception"]]; - _error = [[LULogEntryColors alloc] initWithDictionary:dict[@"error"]]; - _warning = [[LULogEntryColors alloc] initWithDictionary:dict[@"warning"]]; - _debug = [[LULogEntryColors alloc] initWithDictionary:dict[@"debug"]]; - } - return self; -} - -#pragma mark - -#pragma mark NSCoding - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeObject:_exception forKey:@"exception"]; - [coder encodeObject:_error forKey:@"error"]; - [coder encodeObject:_warning forKey:@"warning"]; - [coder encodeObject:_debug forKey:@"debug"]; -} - -- (nullable instancetype)initWithCoder:(NSCoder *)decoder -{ - self = [super init]; - if (self) { - _exception = [decoder decodeObjectForKey:@"exception"]; - _error = [decoder decodeObjectForKey:@"error"]; - _warning = [decoder decodeObjectForKey:@"warning"]; - _debug = [decoder decodeObjectForKey:@"debug"]; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - - if (![object isKindOfClass:[self class]]) { - return NO; - } - - LULogColors *other = object; - return [self.exception isEqual:other.exception] && - [self.error isEqual:other.error] && - [self.warning isEqual:other.warning] && - [self.debug isEqual:other.debug]; -} - -@end - -@implementation LULogEntryColors - -- (instancetype)initWithDictionary:(NSDictionary *)dict -{ - self = [super init]; - if (self) { - _foreground = [[LUColor alloc] initWithDictionary:dict[@"foreground"]]; - _background = [[LUColor alloc] initWithDictionary:dict[@"background"]]; - } - return self; -} - -#pragma mark - -#pragma mark NSCoding - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeObject:self.foreground forKey:@"foreground"]; - [coder encodeObject:self.background forKey:@"background"]; -} - -- (nullable instancetype)initWithCoder:(NSCoder *)decoder -{ - self = [super init]; - if (self) { - _foreground = [decoder decodeObjectForKey:@"foreground"]; - _background = [decoder decodeObjectForKey:@"background"]; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - - if (![object isKindOfClass:[self class]]) { - return NO; - } - - LULogEntryColors *other = object; - return [self.foreground isEqual:other.foreground] && - [self.background isEqual:other.background]; -} - -@end - -@implementation LULogOverlaySettings - -- (instancetype)initWithDictionary:(NSDictionary *)dict -{ - self = [super init]; - if (self) { - _enabled = [dict[@"enabled"] boolValue]; - _maxVisibleLines = [dict[@"maxVisibleLines"] intValue]; - _timeout = [dict[@"timeout"] doubleValue]; - _colors = [[LULogColors alloc] initWithDictionary:dict[@"colors"]]; - } - return self; -} - -#pragma mark - -#pragma mark NSCoding - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeBool:self.enabled forKey:@"enabled"]; - [coder encodeInteger:self.maxVisibleLines forKey:@"maxVisibleLines"]; - [coder encodeDouble:self.timeout forKey:@"timeout"]; - [coder encodeObject:self.colors forKey:@"colors"]; -} - -- (nullable instancetype)initWithCoder:(NSCoder *)decoder -{ - self = [super init]; - if (self) { - _enabled = [decoder decodeBoolForKey:@"enabled"]; - _maxVisibleLines = [decoder decodeIntegerForKey:@"maxVisibleLines"]; - _timeout = [decoder decodeDoubleForKey:@"timeout"]; - _colors = [decoder decodeObjectForKey:@"colors"]; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - - if (![object isKindOfClass:[self class]]) { - return NO; - } - - LULogOverlaySettings *other = object; - return [self.colors isEqual:other.colors] && - self.isEnabled == other.isEnabled && - self.maxVisibleLines == other.maxVisibleLines && - self.timeout == other.timeout; -} - -@end - -@implementation LUPluginSettings - -- (instancetype)initWithDictionary:(NSDictionary *)dict -{ - self = [super init]; - if (self) { - _exceptionWarning = [[LUExceptionWarningSettings alloc] initWithDictionary:dict[@"exceptionWarning"]]; - _logOverlay = [[LULogOverlaySettings alloc] initWithDictionary:dict[@"logOverlay"]]; - _capacity = [dict[@"capacity"] intValue]; - _trim = [dict[@"trim"] intValue]; - _gesture = parseGesture(dict[@"gesture"]); - _richTextTags = [dict[@"richTextTags"] boolValue]; - _sortActions = [dict[@"sortActions"] boolValue]; - _sortVariables = [dict[@"sortVariables"] boolValue]; - _emails = dict[@"emails"]; - } - return self; -} - -#pragma mark - -#pragma mark NSCoding - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeObject:self.exceptionWarning forKey:@"exceptionWarning"]; - [coder encodeObject:self.logOverlay forKey:@"logOverlay"]; - [coder encodeInteger:self.capacity forKey:@"capacity"]; - [coder encodeInteger:self.trim forKey:@"trim"]; - [coder encodeObject:NSStringFromGesture(self.gesture) forKey:@"gesture"]; - [coder encodeBool:self.richTextTags forKey:@"richTextTags"]; - [coder encodeBool:self.sortActions forKey:@"sortActions"]; - [coder encodeBool:self.sortVariables forKey:@"sortVariables"]; - [coder encodeObject:self.emails forKey:@"emails"]; -} - -- (nullable instancetype)initWithCoder:(NSCoder *)decoder -{ - self = [super init]; - if (self) { - _exceptionWarning = [decoder decodeObjectForKey:@"exceptionWarning"]; - _logOverlay = [decoder decodeObjectForKey:@"logOverlay"]; - _capacity = [decoder decodeIntegerForKey:@"capacity"]; - _trim = [decoder decodeIntegerForKey:@"trim"]; - _gesture = parseGesture([decoder decodeObjectForKey:@"gesture"]); - _richTextTags = [decoder decodeBoolForKey:@"richTextTags"]; - _sortActions = [decoder decodeBoolForKey:@"sortActions"]; - _sortVariables = [decoder decodeBoolForKey:@"sortVariables"]; - _emails = [decoder decodeObjectForKey:@"emails"]; - } - return self; -} - -#pragma mark - -#pragma mark Equality - -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - - if (![object isKindOfClass:[self class]]) { - return NO; - } - - LUPluginSettings *other = object; - return [self.logOverlay isEqual:other.logOverlay] && - [self.exceptionWarning isEqual:other.exceptionWarning] && - self.capacity == other.capacity && - self.trim == other.trim && - self.gesture == other.gesture && - self.richTextTags == other.richTextTags && - self.sortActions == other.sortActions && - self.sortVariables == other.sortVariables && - [self.emails isEqualToArray:other.emails]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.m.meta deleted file mode 100644 index d1199c1..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUPluginSettings.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 04cbc6d53e5004b51acfe3c421e0c7b6 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.h deleted file mode 100644 index f2c7112..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// LUUnityScriptMessenger.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUUnityScriptMessenger : NSObject - -- (instancetype)initWithTargetName:(NSString *)targetName methodName:(NSString *)methodName; - -- (void)sendMessageName:(NSString *)name; -- (void)sendMessageName:(NSString *)name params:(NSDictionary *)params; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.h.meta deleted file mode 100644 index e4ae06e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 1ce589006e75b458a8b01c10ca1b3211 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.m deleted file mode 100644 index 7e8e522..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// LUUnityScriptMessenger.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUUnityScriptMessenger.h" - -#include "Lunar.h" - -extern void UnitySendMessage(const char *objectName, const char *methodName, const char *message); - -@interface LUUnityScriptMessenger () -{ - NSString * _targetName; - NSString * _methodName; -} - -@end - -@implementation LUUnityScriptMessenger - -- (instancetype)initWithTargetName:(NSString *)targetName methodName:(NSString *)methodName -{ - self = [super init]; - if (self) - { - if (targetName.length == 0) - { - NSLog(@"Can't create script messenger: target name is nil or empty"); - self = nil; - return nil; - } - - if (methodName.length == 0) - { - NSLog(@"Can't create script messenger: method name is nil or empty"); - self = nil; - return nil; - } - - _targetName = [targetName copy]; - _methodName = [methodName copy]; - } - return self; -} - - -- (void)sendMessageName:(NSString *)name -{ - [self sendMessageName:name params:nil]; -} - -- (void)sendMessageName:(NSString *)name params:(NSDictionary *)params -{ - NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:name, @"name", nil]; - if (params.count > 0) - { - [dict addEntriesFromDictionary:params]; - } - - NSString *paramString = LUSerializeDictionaryToString(dict); - UnitySendMessage(_targetName.UTF8String, _methodName.UTF8String, paramString.UTF8String); -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.m.meta deleted file mode 100644 index 1494391..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/LUUnityScriptMessenger.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 50b8bef2cacde42bc9aea83765de8c25 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.h b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.h deleted file mode 100644 index 1f7cea5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// lunar_unity_native_interface.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#ifndef __LunarConsole__unity_native_interface__ -#define __LunarConsole__unity_native_interface__ - -// life cycle -OBJC_EXTERN void __lunar_console_initialize(const char *targetName, const char *methodName, const char *version, const char *settingsJson); -OBJC_EXTERN void __lunar_console_destroy(void); - -// show/hide -OBJC_EXTERN void __lunar_console_show(void); -OBJC_EXTERN void __lunar_console_hide(void); - -// clear -OBJC_EXTERN void __lunar_console_clear(void); - -// messages -OBJC_EXTERN void __lunar_console_log_message(const char *message, const char *stacktrace, int type); - -// actions -OBJC_EXTERN void __lunar_console_action_register(int actionId, const char *actionName); -OBJC_EXTERN void __lunar_console_action_unregister(int actionId); - -// variables -OBJC_EXTERN void __lunar_console_cvar_register(int entryId, const char *name, const char *type, const char *value, const char *defaultValue, int flags, BOOL hasRange, float min, float max, const char *values); -OBJC_EXTERN void __lunar_console_cvar_update(int entryId, const char *value); - -#endif /* defined(__LunarConsole__unity_native_interface__) */ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.h.meta deleted file mode 100644 index e256c21..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 7deddafab76cb47eb8e5c5a8e1e663ee -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.m b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.m deleted file mode 100644 index 10e321f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.m +++ /dev/null @@ -1,144 +0,0 @@ -// -// lunar_unity_native_interface.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#include - -#include "lunar_unity_native_interface.h" - -#import "Lunar.h" -#import "LUConsolePlugin.h" - -static LUConsolePlugin *_lunarConsolePlugin; - -void __lunar_console_initialize(const char *targetNameStr, const char *methodNameStr, const char *versionStr, const char *settingsJsonStr) -{ - lunar_dispatch_main(^{ - if (_lunarConsolePlugin == nil) { - NSString *targetName = [[NSString alloc] initWithUTF8String:targetNameStr]; - NSString *methodName = [[NSString alloc] initWithUTF8String:methodNameStr]; - NSString *version = [[NSString alloc] initWithUTF8String:versionStr]; - NSString *settingsJson = [[NSString alloc] initWithUTF8String:settingsJsonStr]; - - _lunarConsolePlugin = [[LUConsolePlugin alloc] initWithTargetName:targetName - methodName:methodName - version:version - settingsJson:settingsJson]; - [_lunarConsolePlugin start]; - } - }); -} - -void __lunar_console_destroy() -{ - lunar_dispatch_main(^{ - [_lunarConsolePlugin stop]; - _lunarConsolePlugin = nil; - }); -} - -void __lunar_console_show() -{ - lunar_dispatch_main(^{ - LUAssert(_lunarConsolePlugin); - [_lunarConsolePlugin showConsole]; - }); -} - -void __lunar_console_hide() -{ - lunar_dispatch_main(^{ - LUAssert(_lunarConsolePlugin); - [_lunarConsolePlugin hideConsole]; - }); -} - -void __lunar_console_clear() -{ - lunar_dispatch_main(^{ - LUAssert(_lunarConsolePlugin); - [_lunarConsolePlugin clearConsole]; - }); -} - -void __lunar_console_log_message(const char *messageStr, const char *stackTraceStr, int type) -{ - NSString *message = [[NSString alloc] initWithUTF8String:messageStr]; - NSString *stackTrace = [[NSString alloc] initWithUTF8String:stackTraceStr]; - - if ([NSThread isMainThread]) { - [_lunarConsolePlugin logMessage:message stackTrace:stackTrace type:type]; - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - [_lunarConsolePlugin logMessage:message stackTrace:stackTrace type:type]; - }); - } -} - -void __lunar_console_action_register(int actionId, const char *actionNameStr) -{ - NSString *actionName = [[NSString alloc] initWithUTF8String:actionNameStr]; - - if ([NSThread isMainThread]) { - [_lunarConsolePlugin registerActionWithId:actionId name:actionName]; - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - [_lunarConsolePlugin registerActionWithId:actionId name:actionName]; - }); - } -} - -void __lunar_console_action_unregister(int actionId) -{ - if ([NSThread isMainThread]) { - [_lunarConsolePlugin unregisterActionWithId:actionId]; - } else { - dispatch_async(dispatch_get_main_queue(), ^{ - [_lunarConsolePlugin unregisterActionWithId:actionId]; - }); - } -} - -void __lunar_console_cvar_register(int entryId, const char *nameStr, const char *typeStr, const char *valueStr, const char *defaultValueStr, int flags, BOOL hasRange, float min, float max, const char *valuesStr) -{ - lunar_dispatch_main(^{ - NSString *name = [[NSString alloc] initWithUTF8String:nameStr]; - NSString *type = [[NSString alloc] initWithUTF8String:typeStr]; - NSString *value = [[NSString alloc] initWithUTF8String:valueStr]; - NSString *defaultValue = [[NSString alloc] initWithUTF8String:defaultValueStr]; - NSString *values = valuesStr ? [[NSString alloc] initWithUTF8String:valuesStr] : nil; - - LUCVar *cvar = [_lunarConsolePlugin registerVariableWithId:entryId name:name type:type value:value defaultValue:defaultValue]; - cvar.values = [values componentsSeparatedByString:@","]; - cvar.flags = flags; - if (!isnan(min) && !isnan(max)) { - cvar.range = LUMakeCVarRange(min, max); - } - }); -} - -void __lunar_console_cvar_update(int entryId, const char *valueStr) -{ - lunar_dispatch_main(^{ - NSString *value = [[NSString alloc] initWithUTF8String:valueStr]; - [_lunarConsolePlugin setValue:value forVariableWithId:entryId]; - }); -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.m.meta deleted file mode 100644 index 7fce817..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Console/Plugin/lunar_unity_native_interface.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 6b7c64e1070ec49a4a97a60354be46b0 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers.meta deleted file mode 100644 index d62b75a..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4986eae05f5434638bbba92cc1ce0c3f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions.meta deleted file mode 100644 index 1cb9dc8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 56103e4b6736c45bcbb606d84877f824 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.h deleted file mode 100644 index f58a571..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// LUActionController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUActionControllerBase.h" - -@interface LUActionController : LUActionControllerBase - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.h.meta deleted file mode 100644 index 37862c5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: bb31cd325485c4283a3f13e3d7564429 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.xib b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.xib deleted file mode 100644 index 19f3d77..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.xib +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.xib.meta deleted file mode 100644 index 59d9e1c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 2e7ce92455676450d8cbf8fbbed1387b -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.h deleted file mode 100644 index 72d6d69..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// LUActionControllerBase.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUViewController.h" - -@class LUActionController; -@class LUActionRegistry; - -extern NSString * const LUActionControllerDidChangeVariable; -extern NSString * const LUActionControllerDidChangeVariableKeyVariable; - -extern NSString * const LUActionControllerDidSelectAction; -extern NSString * const LUActionControllerDidSelectActionKeyAction; - -@interface LUActionControllerBase : LUViewController - -+ (instancetype)controllerWithActionRegistry:(LUActionRegistry *)actionRegistry; -- (instancetype)initWithActionRegistry:(LUActionRegistry *)actionRegistry; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.h.meta deleted file mode 100644 index 4095dc8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 36c65057adcd44bfeb3981456c0f0b33 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.m b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.m deleted file mode 100644 index 941b220..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.m +++ /dev/null @@ -1,106 +0,0 @@ -// -// LUActionControllerBase.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "Lunar.h" - -#import "LUActionControllerBase_Inheritance.h" - -NSString * const LUActionControllerDidChangeVariable = @"LUActionControllerDidChangeVariable"; -NSString * const LUActionControllerDidChangeVariableKeyVariable = @"variable"; - -NSString * const LUActionControllerDidSelectAction = @"LUActionControllerDidSelectAction"; -NSString * const LUActionControllerDidSelectActionKeyAction = @"action"; - -@implementation LUActionControllerBase - -+ (instancetype)controllerWithActionRegistry:(LUActionRegistry *)actionRegistry -{ - return [[self alloc] initWithActionRegistry:actionRegistry]; -} - -- (instancetype)initWithActionRegistry:(LUActionRegistry *)actionRegistry -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) - { - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - LUTheme *theme = [LUTheme mainTheme]; - - // background - self.view.opaque = YES; - self.view.backgroundColor = theme.tableColor; - - // table view - _tableView.backgroundColor = theme.tableColor; - - // no actions warning - _noActionsWarningView.backgroundColor = theme.tableColor; - _noActionsWarningView.opaque = YES; - _noActionsWarningLabel.font = theme.actionsWarningFont; - _noActionsWarningLabel.textColor = theme.actionsWarningTextColor; - - [self updateNoActionWarningView]; - - // accessibility - LU_SET_ACCESSIBILITY_IDENTIFIER(_noActionsWarningView, @"No Actions Warning View"); -} - -#pragma mark - -#pragma mark No actions warning view - -- (void)updateNoActionWarningView -{ - [self setNoActionsWarningViewHidden:NO]; -} - -- (void)setNoActionsWarningViewHidden:(BOOL)hidden -{ - _tableView.hidden = !hidden; - _filterBar.hidden = !hidden; - _noActionsWarningView.hidden = hidden; -} - -#pragma mark - -#pragma Interface Builder actions - -- (IBAction)onInfoButton:(id)sender -{ - if (LUConsoleIsFreeVersion) - { - [[NSNotificationCenter defaultCenter] postNotificationName:LUConsoleCheckFullVersionNotification object:nil userInfo:@{ LUConsoleCheckFullVersionNotificationSource : @"actions" }]; - - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://goo.gl/TMnxBe"]]; - } - else - { - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://goo.gl/in0obv"]]; - } -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.m.meta deleted file mode 100644 index b84ea1e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 20b85e52fa926438d8c545600aadbe0e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase_Inheritance.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase_Inheritance.h deleted file mode 100644 index b1f324b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase_Inheritance.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// LUActionControllerBase_Inheritance.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUActionControllerBase.h" - -@interface LUActionControllerBase () - -@property (nonatomic, weak) IBOutlet UIView * noActionsWarningView; -@property (nonatomic, weak) IBOutlet UILabel * noActionsWarningLabel; -@property (nonatomic, weak) IBOutlet UIView * actionsView; -@property (nonatomic, weak) IBOutlet UITableView * tableView; -@property (nonatomic, weak) IBOutlet UISearchBar * filterBar; -@property (nonatomic, weak) IBOutlet UIButton * learnMoreButton; - -- (void)updateNoActionWarningView; -- (void)setNoActionsWarningViewHidden:(BOOL)hidden; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase_Inheritance.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase_Inheritance.h.meta deleted file mode 100644 index e2b137b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionControllerBase_Inheritance.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 126ac35a913cf4edd8ba8caccf60b4eb -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionRegistry.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionRegistry.h deleted file mode 100644 index 78f78c4..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionRegistry.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// LUActionRegistry.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@class LUAction; -@class LUActionRegistry; -@class LUCVar; - -@protocol LUActionRegistryDelegate - -- (void)actionRegistry:(LUActionRegistry *)registry didAddAction:(LUAction *)action atIndex:(NSUInteger)index; -- (void)actionRegistry:(LUActionRegistry *)registry didRemoveAction:(LUAction *)action atIndex:(NSUInteger)index; -- (void)actionRegistry:(LUActionRegistry *)registry didRegisterVariable:(LUCVar *)variable atIndex:(NSUInteger)index; -- (void)actionRegistry:(LUActionRegistry *)registry didDidChangeVariable:(LUCVar *)variable atIndex:(NSUInteger)index; - -@end - -@interface LUActionRegistry : NSObject - -@property (nonatomic, readonly) NSArray *actions; -@property (nonatomic, readonly) NSArray *variables; - -@property (nonatomic, weak) id delegate; - -@property (nonatomic, assign) BOOL actionSortingEnabled; -@property (nonatomic, assign) BOOL variableSortingEnabled; - -+ (instancetype)registry; - -- (LUAction *)registerActionWithId:(int)actionId name:(NSString *)name; -- (BOOL)unregisterActionWithId:(int)actionId; - -- (LUCVar *)registerVariableWithId:(int)variableId name:(NSString *)name typeName:(NSString *)type value:(NSString *)value defaultValue:(NSString *)defaultValue; -- (LUCVar *)registerVariableWithId:(int)variableId name:(NSString *)name typeName:(NSString *)type value:(NSString *)value defaultValue:(NSString *)defaultValue values:(NSArray *)values; -- (void)setValue:(NSString *)value forVariableWithId:(int)variableId; -- (LUCVar *)variableWithId:(int)variableId; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionRegistry.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionRegistry.h.meta deleted file mode 100644 index 2cfbb4f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Actions/LUActionRegistry.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 886886c8d38a74c2197b5da8306cd6d9 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc.meta deleted file mode 100644 index cc3ef1b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9d8dafe11f3cd4796b3984ad90a0e008 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.h deleted file mode 100644 index b24c5f4..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// LUEnumPickerViewController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUViewController.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface LUEnumPickerViewController : LUViewController - -@property (nonatomic, readonly) NSUInteger selectedIndex; -@property (nonatomic, readonly) NSString *selectedValue; - -@property (nonatomic, strong) id userData; - -- (instancetype)initWithValues:(NSArray *)values initialIndex:(NSUInteger)index; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.h.meta deleted file mode 100644 index e22abc3..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 6a8538672754f49eaa169b573037a82b -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.m b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.m deleted file mode 100644 index 08413a3..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.m +++ /dev/null @@ -1,127 +0,0 @@ -// -// LUEnumPickerViewController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUEnumPickerViewController.h" -#import "LUTheme.h" - -@interface LUEnumPickerViewController () - -@property (nonatomic, weak) IBOutlet UITableView *tableView; - -@property (nonatomic, strong) NSArray *values; -@property (nonatomic, assign) NSUInteger selectedIndex; - -@end - -@implementation LUEnumPickerViewController - -- (instancetype)initWithValues:(NSArray *)values initialIndex:(NSUInteger)index -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) { - if (index < 0 || index >= values.count) { - return nil; - } - _values = values; - _selectedIndex = index; - } - - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.tableView.dataSource = self; - self.tableView.delegate = self; - self.tableView.backgroundColor = [LUTheme mainTheme].tableColor; -} - -- (CGSize)preferredPopupSize -{ - CGFloat rowHeight = 44.0; - CGFloat height = MIN(self.values.count * rowHeight, 320); - return CGSizeMake(0, height); -} - -#pragma mark - -#pragma mark UITableViewDataSource - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return _values.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *const kCellIdentifier = @"CellIdentifier"; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; - if (cell == nil) { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellIdentifier]; - } - - NSUInteger index = indexPath.row; - cell.textLabel.text = _values[index]; - if (index == _selectedIndex) { - cell.accessoryType = UITableViewCellAccessoryCheckmark; - } - - LUTheme *theme = [LUTheme mainTheme]; - UIColor *backgroundColor = index % 2 == 0 ? theme.actionsBackgroundColorDark : theme.actionsBackgroundColorLight; - cell.contentView.superview.backgroundColor = backgroundColor; - cell.textLabel.font = theme.actionsFont; - cell.textLabel.textColor = theme.actionsTextColor; - cell.selectedBackgroundView.backgroundColor = [UIColor blackColor]; - - return cell; -} - -#pragma mark - -#pragma mark UITableViewDelegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - NSInteger index = indexPath.row; - if (index != _selectedIndex) { - [tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; - for (NSIndexPath *path in [tableView indexPathsForVisibleRows]) { - if (path.row == _selectedIndex) { - [tableView cellForRowAtIndexPath:path].accessoryType = UITableViewCellAccessoryNone; - break; - } - } - _selectedIndex = index; - } - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - -#pragma mark - -#pragma mark Properties - -- (NSString *)selectedValue -{ - return _values[_selectedIndex]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.m.meta deleted file mode 100644 index 4d981d8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 9a2c6a787a02648aaa74b5beed092267 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.xib b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.xib deleted file mode 100644 index 184b444..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.xib.meta deleted file mode 100644 index 5666adf..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Misc/LUEnumPickerViewController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: d6e9bad005e094ef4850051c5a1ce6ad -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup.meta deleted file mode 100644 index 90bff44..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 42f3f0d31d0e945c48b59b57c0211d5b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.h deleted file mode 100644 index f506280..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// LUConsolePopupController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUViewController.h" - -@class LUConsolePopupButton; -@class LUConsolePopupController; - -extern NSString * const LUConsolePopupControllerWillAppearNotification; -extern NSString * const LUConsolePopupControllerWillDisappearNotification; - -@protocol LUConsolePopupControllerDelegate - -- (void)popupControllerDidDismiss:(LUConsolePopupController *)controller; - -@end - -typedef void(^LUConsolePopupButtonCallback)(LUConsolePopupButton *button); - -@interface LUConsolePopupButton : NSObject - -+ (instancetype)buttonWithIcon:(UIImage *)icon target:(id)target action:(SEL)action; -- (instancetype)initWithIcon:(UIImage *)icon target:(id)target action:(SEL)action; - -@end - -@interface LUConsolePopupController : LUViewController - -@property (nonatomic, readonly) LUViewController *contentController; -@property (nonatomic, weak) id popupDelegate; - -- (instancetype)initWithContentController:(LUViewController *)contentController; - -- (void)presentFromController:(UIViewController *)controller animated:(BOOL)animated; -- (void)dismissAnimated:(BOOL)animated; - -- (void)setLearnMoreTitle:(NSString *)title target:(id)target action:(SEL)action; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.h.meta deleted file mode 100644 index 82660b4..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 0d7322e1b7a0f4909bd4f4119834aabf -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.m b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.m deleted file mode 100644 index b1d0ec0..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.m +++ /dev/null @@ -1,351 +0,0 @@ -// -// LUConsolePopupController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsolePopupController.h" -#import "Lunar.h" - -NSString * const LUConsolePopupControllerWillAppearNotification = @"LUConsolePopupControllerWillAppearNotification"; -NSString * const LUConsolePopupControllerWillDisappearNotification = @"LUConsolePopupControllerWillDisappearNotification"; - -@interface LUViewController (PopupController) - -- (void)setPopupController:(LUConsolePopupController *)controller; - -@end - -@interface LUConsolePopupButton () - -@property (nonatomic, strong) UIImage *icon; - -@property (nonatomic, weak) id target; -@property (nonatomic, assign) SEL action; - -@end - -@implementation LUConsolePopupButton - -+ (instancetype)buttonWithIcon:(UIImage *)icon target:(id)target action:(SEL)action -{ - return [[self alloc] initWithIcon:icon target:target action:action]; -} - -- (instancetype)initWithIcon:(UIImage *)icon target:(id)target action:(SEL)action -{ - self = [super init]; - if (self) - { - self.icon = icon; - self.target = target; - self.action = action; - } - return self; -} - -@end - -@interface LUConsolePopupController () - -@property (nonatomic, weak) IBOutlet UIImageView *iconImageView; -@property (nonatomic, weak) IBOutlet UILabel *titleLabel; -@property (nonatomic, weak) IBOutlet UIView *popupView; -@property (nonatomic, weak) IBOutlet UIView *contentView; -@property (nonatomic, weak) IBOutlet UIView *bottomBarView; -@property (nonatomic, weak) IBOutlet UIButton *closeButton; -@property (nonatomic, weak) IBOutlet UIButton *learnMoreButton; - -@property (nonatomic, weak) IBOutlet NSLayoutConstraint *contentWidthConstraint; -@property (nonatomic, weak) IBOutlet NSLayoutConstraint *contentHeightConstraint; - -@end - -@implementation LUConsolePopupController - -- (instancetype)initWithContentController:(LUViewController *)contentController -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) - { - _contentController = contentController; - [_contentController setPopupController:self]; - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - // colors - self.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]; - - LUTheme *theme = [LUTheme mainTheme]; - - _popupView.backgroundColor = theme.tableColor; - _contentView.backgroundColor = theme.tableColor; - _bottomBarView.backgroundColor = theme.tableColor; - - _contentView.translatesAutoresizingMaskIntoConstraints = NO; - _bottomBarView.translatesAutoresizingMaskIntoConstraints = NO; - - _popupView.layer.borderColor = [[UIColor colorWithRed:0.37 green:0.37 blue:0.37 alpha:1.0] CGColor]; - _popupView.layer.borderWidth = 2; - - _titleLabel.textColor = theme.cellLog.textColor; - - // content controller - [self addContentController:_contentController]; - - // popup buttons - [self addPopupButtons]; - - // "Learn more..." button - _learnMoreButton.hidden = YES; - - LU_SET_ACCESSIBILITY_IDENTIFIER(_closeButton, @"Popup Controller Close Button"); -} - -- (void)viewWillAppear:(BOOL)animated -{ - [super viewWillAppear:animated]; - - [LUNotificationCenter postNotificationName:LUConsolePopupControllerWillAppearNotification object:nil]; -} - -- (void)viewWillDisappear:(BOOL)animated -{ - [super viewWillDisappear:animated]; - - [LUNotificationCenter postNotificationName:LUConsolePopupControllerWillDisappearNotification object:nil]; -} - -- (void)viewDidLayoutSubviews -{ - [super viewDidLayoutSubviews]; - - CGSize fullSize = self.view.bounds.size; - CGFloat contentWidth, contentHeight; - - if (fullSize.width < fullSize.height) - { - contentWidth = MAX(320, 2 * fullSize.width / 3) - 2 * 20; - contentHeight = 1.5 * contentWidth; - } - else - { - contentHeight = MAX(320, 2 * fullSize.height / 3) - 2 * 20; - contentWidth = 1.5 * contentHeight; - } - - CGSize preferredSize = [_contentController preferredPopupSize]; - if (preferredSize.width > 0) contentWidth = preferredSize.width; - if (preferredSize.height > 0) contentHeight = preferredSize.height; - - self.contentWidthConstraint.constant = contentWidth; - self.contentHeightConstraint.constant = contentHeight; -} - -#pragma mark - -#pragma mark Popup buttons - -- (void)addPopupButtons -{ - if (_contentController.popupButtons.count > 0) - { - NSMutableArray *constraints = [NSMutableArray new]; - UIButton *prevButton = nil; - for (LUConsolePopupButton *pb in _contentController.popupButtons) - { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button addTarget:pb.target action:pb.action forControlEvents:UIControlEventTouchUpInside]; - [button setImage:pb.icon forState:UIControlStateNormal]; - button.translatesAutoresizingMaskIntoConstraints = NO; - [_bottomBarView addSubview:button]; - - [constraints addObject:[NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeWidth - relatedBy:NSLayoutRelationEqual - toItem:_closeButton - attribute:NSLayoutAttributeWidth - multiplier:1.0 - constant:0]]; - - [constraints addObject:[NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeHeight - relatedBy:NSLayoutRelationEqual - toItem:_closeButton - attribute:NSLayoutAttributeHeight - multiplier:1.0 - constant:0]]; - - [constraints addObject:[NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeCenterY - relatedBy:NSLayoutRelationEqual - toItem:_closeButton - attribute:NSLayoutAttributeCenterY - multiplier:1.0 - constant:0]]; - - if (prevButton) - { - [constraints addObject:[NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeLeft - relatedBy:NSLayoutRelationEqual - toItem:prevButton - attribute:NSLayoutAttributeRight - multiplier:1.0 - constant:0]]; - } - else - { - [constraints addObject:[NSLayoutConstraint constraintWithItem:button - attribute:NSLayoutAttributeLeft - relatedBy:NSLayoutRelationEqual - toItem:_bottomBarView - attribute:NSLayoutAttributeLeft - multiplier:1.0 - constant:0]]; - - } - - prevButton = button; - } - - [NSLayoutConstraint activateConstraints:constraints]; - } -} - -#pragma mark - -#pragma mark Content controller - -- (void)addContentController:(LUViewController *)contentController -{ - [self addChildViewController:contentController]; - [_contentView addSubview:contentController.view]; - contentController.view.frame = _contentView.bounds; - [contentController didMoveToParentViewController:self]; - - // title and icon - _titleLabel.text = contentController.popupTitle; - _iconImageView.image = contentController.popupIcon; - - // setting up layout constraints - contentController.view.translatesAutoresizingMaskIntoConstraints = NO; - NSArray *constraints = @[ - [NSLayoutConstraint constraintWithItem:contentController.view - attribute:NSLayoutAttributeWidth - relatedBy:NSLayoutRelationEqual - toItem:_contentView - attribute:NSLayoutAttributeWidth - multiplier:1.0 - constant:0.0], - [NSLayoutConstraint constraintWithItem:contentController.view - attribute:NSLayoutAttributeHeight - relatedBy:NSLayoutRelationEqual - toItem:_contentView - attribute:NSLayoutAttributeHeight - multiplier:1.0 - constant:0.0], - [NSLayoutConstraint constraintWithItem:contentController.view - attribute:NSLayoutAttributeCenterX - relatedBy:NSLayoutRelationEqual - toItem:_contentView - attribute:NSLayoutAttributeCenterX - multiplier:1.0 - constant:0.0], - [NSLayoutConstraint constraintWithItem:contentController.view - attribute:NSLayoutAttributeCenterY - relatedBy:NSLayoutRelationEqual - toItem:_contentView - attribute:NSLayoutAttributeCenterY - multiplier:1.0 - constant:0.0] - - ]; - - [NSLayoutConstraint activateConstraints:constraints]; -} - -#pragma mark - -#pragma mark Actions - -- (IBAction)onClose:(id)sender -{ - if ([_popupDelegate respondsToSelector:@selector(popupControllerDidDismiss:)]) - { - [_popupDelegate popupControllerDidDismiss:self]; - } -} - -#pragma mark - -#pragma mark Presentation - -- (void)presentFromController:(UIViewController *)controller animated:(BOOL)animated -{ - // add as child view controller - [controller addChildViewController:self]; - self.view.frame = controller.view.bounds; - [controller.view addSubview:self.view]; - [self didMoveToParentViewController:controller]; - - // animate - if (animated) - { - self.view.alpha = 0; - [UIView animateWithDuration:0.4 animations:^{ - self.view.alpha = 1; - }]; - } -} - -- (void)dismissAnimated:(BOOL)animated -{ - if (animated) - { - [UIView animateWithDuration:0.4 animations:^{ - self.view.alpha = 0; - } completion:^(BOOL finished) { - [self willMoveToParentViewController:nil]; - [self.view removeFromSuperview]; - [self removeFromParentViewController]; - }]; - } - else - { - [self willMoveToParentViewController:nil]; - [self.view removeFromSuperview]; - [self removeFromParentViewController]; - } -} - -- (void)setLearnMoreTitle:(NSString *)title target:(id)target action:(SEL)action -{ - // FIXME: store button details and set params in viewDidLoad - dispatch_async(dispatch_get_main_queue(), ^{ - self->_learnMoreButton.hidden = NO; - [self->_learnMoreButton setTitle:title forState:UIControlStateNormal]; - [self->_learnMoreButton addTarget:target - action:action - forControlEvents:UIControlEventTouchUpInside]; - }); -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.m.meta deleted file mode 100644 index 0511c00..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: c5e9180abaeec4c4f98482dcd08ddcc4 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.xib b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.xib deleted file mode 100644 index 77567c7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.xib +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.xib.meta deleted file mode 100644 index d6d7f8a..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Popup/LUConsolePopupController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 231c6c7d69e8143f182c53f3d9f5c425 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize.meta deleted file mode 100644 index 0e6bcda..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 28d0bd026fedf4610a5b1a83a11b9981 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.h deleted file mode 100644 index 5efad03..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// LUConsoleResizeController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@class LUConsoleResizeController; - -@protocol LUConsoleResizeControllerDelegate - -- (void)consoleResizeControllerDidClose:(LUConsoleResizeController *)controller; - -@end - -@interface LUConsoleResizeController : UIViewController - -@property (nonatomic, weak) id delegate; - -- (instancetype)initWithMaxSize:(CGSize)maxSize topConstraint:(NSLayoutConstraint *)topConstraint leadingConstraint:(NSLayoutConstraint *)leadingConstraint bottomConstraint:(NSLayoutConstraint *)bottomConstraint trailingConstraint:(NSLayoutConstraint *)trailingConstraint; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.h.meta deleted file mode 100644 index a5fc435..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: f628f8732c4db4193a1036600e956051 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.m b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.m deleted file mode 100644 index 21d9471..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.m +++ /dev/null @@ -1,215 +0,0 @@ -// -// LUConsoleResizeController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsoleResizeController.h" - -#import "Lunar.h" - -static const CGFloat kMinWidth = 320; -static const CGFloat kMinHeight = 320; - -inline static CGFloat clampf(CGFloat value, CGFloat min, CGFloat max) -{ - return value < min ? min : (value > max ? max : value); -} - -typedef enum : NSUInteger { - LUConsoleResizeOperationNone = 0, - LUConsoleResizeOperationMove = 1 << 1, - LUConsoleResizeOperationTop = 1 << 2, - LUConsoleResizeOperationBottom = 1 << 3, - LUConsoleResizeOperationLeft = 1 << 4, - LUConsoleResizeOperationRight = 1 << 5, - LUConsoleResizeOperationTopLeft = LUConsoleResizeOperationTop | LUConsoleResizeOperationLeft, - LUConsoleResizeOperationTopRight = LUConsoleResizeOperationTop | LUConsoleResizeOperationRight, - LUConsoleResizeOperationBottomLeft = LUConsoleResizeOperationBottom | LUConsoleResizeOperationLeft, - LUConsoleResizeOperationBottomRight = LUConsoleResizeOperationBottom | LUConsoleResizeOperationRight -} LUConsoleResizeOperation; - -@interface LUConsoleResizeController () -{ - UITouch * _initialTouch; - LUConsoleResizeOperation _resizeOperation; -} - -@property (weak, nonatomic) IBOutlet UILabel *hintLabel; -@property (weak, nonatomic) IBOutlet UIView *resizeTopBar; -@property (weak, nonatomic) IBOutlet UIView *resizeBottomBar; -@property (weak, nonatomic) IBOutlet UIView *resizeLeftBar; -@property (weak, nonatomic) IBOutlet UIView *resizeRightBar; -@property (weak, nonatomic) IBOutlet UIView *resizeTopLeftBar; -@property (weak, nonatomic) IBOutlet UIView *resizeTopRightBar; -@property (weak, nonatomic) IBOutlet UIView *resizeBottomLeftBar; -@property (weak, nonatomic) IBOutlet UIView *resizeBottomRightBar; - -@property (nonatomic, assign) CGSize maxSize; -@property (weak, nonatomic) NSLayoutConstraint *topConstraint; -@property (weak, nonatomic) NSLayoutConstraint *leadingConstraint; -@property (weak, nonatomic) NSLayoutConstraint *bottomConstraint; -@property (weak, nonatomic) NSLayoutConstraint *trailingConstraint; - -@end - -@implementation LUConsoleResizeController - -- (instancetype)initWithMaxSize:(CGSize)maxSize topConstraint:(NSLayoutConstraint *)topConstraint leadingConstraint:(NSLayoutConstraint *)leadingConstraint bottomConstraint:(NSLayoutConstraint *)bottomConstraint trailingConstraint:(NSLayoutConstraint *)trailingConstraint { - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) - { - _maxSize = maxSize; - _topConstraint = topConstraint; - _leadingConstraint = leadingConstraint; - _bottomConstraint = bottomConstraint; - _trailingConstraint = trailingConstraint; - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - LUTheme *theme = [LUTheme mainTheme]; - - self.view.backgroundColor = - _resizeTopBar.backgroundColor = - _resizeBottomBar.backgroundColor = - _resizeLeftBar.backgroundColor = - _resizeRightBar.backgroundColor = - _resizeTopLeftBar.backgroundColor = - _resizeTopRightBar.backgroundColor = - _resizeBottomLeftBar.backgroundColor = - _resizeBottomRightBar.backgroundColor = theme.tableColor; - - _hintLabel.font = theme.actionsWarningFont; // TODO: make a separate entry - _hintLabel.textColor = theme.actionsTextColor; // TODO: make a separate entry -} - -#pragma mark - -#pragma mark Touch handling - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event -{ - if (_initialTouch == nil) - { - _initialTouch = [touches anyObject]; - _resizeOperation = [self lookupResizeOperationForView:_initialTouch.view]; - } -} - -- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event -{ - if (_initialTouch == nil) - { - return; - } - - UIEdgeInsets insets = UIEdgeInsetsMake( - self.topConstraint.constant, - self.leadingConstraint.constant, - self.bottomConstraint.constant, - self.trailingConstraint.constant - ); - - CGPoint touchPoint = [[touches anyObject] locationInView:self.view]; - CGPoint previous = [[touches anyObject] previousLocationInView:self.view]; - - CGFloat deltaX = touchPoint.x - previous.x; - CGFloat deltaY = touchPoint.y - previous.y; - - if (_resizeOperation & LUConsoleResizeOperationTop) - { - insets.top = clampf(insets.top + deltaY, 0, _maxSize.height - (kMinHeight + insets.bottom)); - } - else if (_resizeOperation & LUConsoleResizeOperationBottom) - { - insets.bottom = clampf(insets.bottom - deltaY, 0, _maxSize.height - (kMinHeight + insets.top)); - } - - if (_resizeOperation & LUConsoleResizeOperationLeft) - { - insets.left = clampf(insets.left + deltaX, 0, _maxSize.width - (kMinWidth + insets.right)); - } - else if (_resizeOperation & LUConsoleResizeOperationRight) - { - insets.right = clampf(insets.right - deltaX, 0, _maxSize.width - (kMinWidth + insets.left)); - } - - if (_resizeOperation == LUConsoleResizeOperationMove) - { - deltaX = clampf(deltaX, -insets.left, insets.right); - deltaY = clampf(deltaY, -insets.top, insets.bottom); - - insets.left += deltaX; - insets.right -= deltaX; - insets.top += deltaY; - insets.bottom -= deltaY; - } - - self.topConstraint.constant = insets.top; - self.leadingConstraint.constant = insets.left; - self.bottomConstraint.constant = insets.bottom; - self.trailingConstraint.constant = insets.right; -} - -- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event -{ - _initialTouch = nil; -} - -#pragma mark - -#pragma mark Actions - -- (IBAction)onClose:(id)sender -{ - if ([_delegate respondsToSelector:@selector(consoleResizeControllerDidClose:)]) - { - [_delegate consoleResizeControllerDidClose:self]; - } -} - -#pragma mark - -#pragma mark Helpers - -- (LUConsoleResizeOperation)lookupResizeOperationForView:(UIView *)view -{ - if (view == _resizeTopBar) - return LUConsoleResizeOperationTop; - if (view == _resizeBottomBar) - return LUConsoleResizeOperationBottom; - if (view == _resizeLeftBar) - return LUConsoleResizeOperationLeft; - if (view == _resizeRightBar) - return LUConsoleResizeOperationRight; - if (view == _resizeTopLeftBar) - return LUConsoleResizeOperationTopLeft; - if (view == _resizeTopRightBar) - return LUConsoleResizeOperationTopRight; - if (view == _resizeBottomLeftBar) - return LUConsoleResizeOperationBottomLeft; - if (view == _resizeBottomRightBar) - return LUConsoleResizeOperationBottomRight; - - return LUConsoleResizeOperationMove; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.m.meta deleted file mode 100644 index 98591af..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 3a4f60f7409bb4beaa06d366310f7b32 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.xib b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.xib deleted file mode 100644 index 9508800..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.xib +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.xib.meta deleted file mode 100644 index 6ae50d1..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Resize/LUConsoleResizeController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 38fc6de473d16461fadfddbb8b3d907e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings.meta deleted file mode 100644 index 9847318..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c43edd9100f4e4bdb8b61f26af0ce950 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.h deleted file mode 100644 index 06fd2df..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// LUConsoleSettingsController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUViewController.h" - -@interface LUConsoleSettingsController : LUViewController - -- (instancetype)initWithSettings:(LUPluginSettings *)settings; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.h.meta deleted file mode 100644 index 6ca3de5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: ee79bc932ce54469499458f94dcb120d -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.m b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.m deleted file mode 100644 index 40ab488..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.m +++ /dev/null @@ -1,476 +0,0 @@ -// -// LUConsoleSettingsController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "Lunar.h" - -#import "LUConsoleSettingsController.h" - -static const NSInteger kTagName = 1; -static const NSInteger kTagButton = 2; -static const NSInteger kTagInput = 3; -static const NSInteger kTagSwitch = 4; -static const NSInteger kTagLockButton = 5; - -typedef enum : NSUInteger { - LUSettingTypeBool, - LUSettingTypeInt, - LUSettingTypeDouble, - LUSettingTypeEnum -} LUSettingType; - -static NSDictionary *_propertyTypeLookup; -static NSArray *_proOnlyFeaturesLookup; - -static id _integerValidator; -static id _floatValidator; - -@class LUConsoleSetting; - -@protocol LUConsoleSettingDelegate - -- (void)consoleSettingDidChange:(LUConsoleSetting *)setting; - -@end - -@interface LUConsoleSetting : NSObject - -@property (nonatomic, weak) id delegate; -@property (nonatomic, readonly, weak) id target; -@property (nonatomic, readonly) NSString *name; -@property (nonatomic, readonly) LUSettingType type; -@property (nonatomic, readonly) NSString *title; -@property (nonatomic, strong) id value; -@property (nonatomic, assign) BOOL boolValue; -@property (nonatomic, assign) int intValue; -@property (nonatomic, assign) double doubleValue; - -@property (nonatomic, readonly, nullable) NSArray *values; -@property (nonatomic, readonly) BOOL proOnly; - -- (instancetype)initWithTarget:(id)target name:(NSString *)name type:(LUSettingType)type title:(NSString *)title proOnly:(BOOL)proOnly; -- (instancetype)initWithTarget:(id)target name:(NSString *)name type:(LUSettingType)type title:(NSString *)title proOnly:(BOOL)proOnly values:(nullable NSArray *)values; - -@end - -@implementation LUConsoleSetting - -- (instancetype)initWithTarget:(id)target name:(NSString *)name type:(LUSettingType)type title:(NSString *)title proOnly:(BOOL)proOnly -{ - return [self initWithTarget:target name:name type:type title:title proOnly:proOnly values:nil]; -} - -- (instancetype)initWithTarget:(id)target name:(NSString *)name type:(LUSettingType)type title:(NSString *)title proOnly:(BOOL)proOnly values:(nullable NSArray *)values -{ - self = [super init]; - if (self) { - _target = target; - _name = name; - _type = type; - _title = title; - _values = values; - _proOnly = proOnly; - } - return self; -} - -- (id)value -{ - return [_target valueForKey:_name]; -} - -- (void)setValue:(id)value -{ - [_target setValue:value forKey:_name]; - if ([_delegate respondsToSelector:@selector(consoleSettingDidChange:)]) { - [_delegate consoleSettingDidChange:self]; - } -} - -- (BOOL)boolValue -{ - return [[self value] boolValue]; -} - -- (void)setBoolValue:(BOOL)boolValue -{ - [self setValue:[NSNumber numberWithBool:boolValue]]; -} - -- (int)intValue -{ - return [[self value] intValue]; -} - -- (void)setIntValue:(int)intValue -{ - [self setValue:[NSNumber numberWithInt:intValue]]; -} - -- (double)doubleValue -{ - return [[self value] doubleValue]; -} - -- (void)setDoubleValue:(double)doubleValue -{ - [self setValue:[NSNumber numberWithDouble:doubleValue]]; -} - -@end - -@interface LUConsoleSettingsSection : NSObject - -@property (nonatomic, readonly) NSString *title; -@property (nonatomic, readonly) NSArray *entries; - -- (instancetype)initWithTitle:(NSString *)title entries:(NSArray *)entries; - -@end - -@implementation LUConsoleSettingsSection - -- (instancetype)initWithTitle:(NSString *)title entries:(NSArray *)entries -{ - self = [super init]; - if (self) { - _title = title; - _entries = entries; - } - return self; -} - -@end - -@interface LUConsoleSettingsController () { - NSArray *_sections; - LUPluginSettings *_settings; -} - -@property (nonatomic, weak) IBOutlet UITableView *tableView; - -@end - -@interface LUConsoleSettingsController () -@end - -@implementation LUConsoleSettingsController - -+ (void)initialize -{ - if ([self class] == [LUConsoleSettingsController class]) { - _integerValidator = [LUTextFieldIntegerInputValidator new]; - _floatValidator = [LUTextFieldFloatInputValidator new]; - } -} - -- (instancetype)initWithSettings:(LUPluginSettings *)settings -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) { - _settings = settings; - _sections = [self listSections:settings]; - } - return self; -} - - -#pragma mark - -#pragma mark View - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - LUTheme *theme = [LUTheme mainTheme]; - self.tableView.backgroundColor = theme.tableColor; - - self.popupTitle = @"Settings"; - self.popupIcon = theme.settingsIconImage; -} - -- (CGSize)preferredPopupSize -{ - const CGFloat rowHeight = 44; - const CGFloat headerHeight = 28; - - CGFloat height = _sections.count * headerHeight; - for (LUConsoleSettingsSection *section in _sections) { - height += section.entries.count * rowHeight; - } - - return CGSizeMake(0, height); -} - -#pragma mark - -#pragma mark UITableViewDataSource - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return _sections.count; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return _sections[section].entries.count; -} - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section -{ - return _sections[section].title; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - LUConsoleSetting *setting = _sections[indexPath.section].entries[indexPath.row]; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Setting Cell"]; - if (cell == nil) { - cell = (UITableViewCell *)[[NSBundle mainBundle] loadNibNamed:@"LUSettingsTableCell" owner:self options:nil].firstObject; - } - - LUTheme *theme = [LUTheme mainTheme]; - - cell.contentView.backgroundColor = indexPath.row % 2 == 0 ? theme.backgroundColorLight : theme.backgroundColorDark; - - UILabel *nameLabel = [cell.contentView viewWithTag:kTagName]; - LUButton *enumButton = [cell.contentView viewWithTag:kTagButton]; - LUTextField *inputField = [cell.contentView viewWithTag:kTagInput]; - LUSwitch *boolSwitch = [cell.contentView viewWithTag:kTagSwitch]; - UIButton *lockButton = [cell.contentView viewWithTag:kTagLockButton]; - - BOOL available = LUConsoleIsFullVersion || !setting.proOnly; - - enumButton.hidden = YES; - inputField.hidden = YES; - boolSwitch.hidden = YES; - lockButton.hidden = available; - - nameLabel.font = theme.font; - nameLabel.textColor = available ? theme.cellLog.textColor : theme.settingsTextColorUnavailable; - nameLabel.text = setting.title; - - switch (setting.type) { - case LUSettingTypeBool: - boolSwitch.hidden = NO; - boolSwitch.enabled = available; - boolSwitch.on = [setting boolValue]; - boolSwitch.userData = setting; - [boolSwitch addTarget:self action:@selector(onToggleBoolean:) forControlEvents:UIControlEventValueChanged]; - boolSwitch.enabled = available; - break; - case LUSettingTypeInt: - inputField.hidden = NO; - inputField.enabled = available; - inputField.text = [NSString stringWithFormat:@"%d", [setting intValue]]; - inputField.textValidator = _integerValidator; - inputField.textInputDelegate = self; - inputField.userData = setting; - break; - case LUSettingTypeDouble: - inputField.hidden = NO; - inputField.enabled = available; - inputField.text = [NSString stringWithFormat:@"%g", [setting doubleValue]]; - inputField.textValidator = _floatValidator; - inputField.textInputDelegate = self; - inputField.userData = setting; - break; - case LUSettingTypeEnum: - enumButton.hidden = NO; - enumButton.enabled = available; - int index = [setting intValue]; - [enumButton setTitle:setting.values[index] forState:UIControlStateNormal]; - enumButton.titleLabel.font = theme.enumButtonFont; - enumButton.userData = setting; - [enumButton setTitleColor:theme.enumButtonTitleColor forState:UIControlStateNormal]; - if (enumButton.allTargets.count == 0) { - [enumButton addTarget:self action:@selector(enumButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; - } - break; - } - - if (!available) { - [lockButton addTarget:self action:@selector(lockButtonClick:) forControlEvents:UIControlEventTouchUpInside]; - } - - return cell; -} - -- (void)enumButtonClicked:(LUButton *)button -{ - LUConsoleSetting *setting = button.userData; - - LUEnumPickerViewController *picker = [[LUEnumPickerViewController alloc] initWithValues:setting.values initialIndex:[setting intValue]]; - picker.userData = @[ setting, button ]; - picker.popupTitle = setting.title; - picker.popupIcon = [LUTheme mainTheme].settingsIconImage; - - LUConsolePopupController *popupController = [[LUConsolePopupController alloc] initWithContentController:picker]; - [popupController presentFromController:self.parentViewController animated:YES]; - popupController.popupDelegate = self; -} - -- (void)lockButtonClick:(id)sender -{ - NSArray *actions = @[ - [[LUAlertAction alloc] initWithTitle:@"Close" handler:nil], - [[LUAlertAction alloc] initWithTitle:@"Learn More" handler:^(LUAlertAction *action) { - [[NSNotificationCenter defaultCenter] postNotificationName:LUConsoleCheckFullVersionNotification - object:nil - userInfo:@{ LUConsoleCheckFullVersionNotificationSource : @"settings" }]; - - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://goo.gl/UHej7v"]]; - }], - ]; - [LUUIHelper showAlertViewWithTitle:@"PRO only feature2" message:@"Not available in FREE version" actions:actions]; -} - -#pragma mark - -#pragma mark UITableViewDelegate - -- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section -{ - if ([view isKindOfClass:[UITableViewHeaderFooterView class]]) { - LUTheme *theme = [LUTheme mainTheme]; - - UITableViewHeaderFooterView *headerView = (UITableViewHeaderFooterView *)view; - headerView.textLabel.font = theme.actionsGroupFont; - headerView.textLabel.textColor = theme.actionsGroupTextColor; - headerView.contentView.backgroundColor = theme.actionsGroupBackgroundColor; - } -} - -#pragma mark - -#pragma mark LUTextFieldInputDelegate - -- (void)textFieldDidEndEditing:(LUTextField *)textField -{ - LUConsoleSetting *setting = textField.userData; - switch (setting.type) { - case LUSettingTypeInt: { - NSInteger value; - LUStringTryParseInteger(textField.text, &value); - setting.intValue = (int)value; - break; - } - case LUSettingTypeDouble: { - float value; - LUStringTryParseFloat(textField.text, &value); - setting.doubleValue = value; - break; - } - case LUSettingTypeBool: - case LUSettingTypeEnum: - break; - } -} - -- (void)textFieldInputDidBecomeInvalid:(LUTextField *)textField -{ - LUDisplayAlertView(@"Input Error", [NSString stringWithFormat:@"Invalid value: '%@'", textField.text]); -} - -#pragma mark - -#pragma mark LUConsolePopupControllerDelegate - -- (void)popupControllerDidDismiss:(LUConsolePopupController *)controller -{ - LUEnumPickerViewController *pickerController = (LUEnumPickerViewController *)controller.contentController; - - LUConsoleSetting *setting = pickerController.userData[0]; - UIButton *button = pickerController.userData[1]; - setting.intValue = (int)pickerController.selectedIndex; - [button setTitle:pickerController.selectedValue forState:UIControlStateNormal]; - - [controller dismissAnimated:YES]; -} - -#pragma mark - -#pragma mark Controls - -- (void)onToggleBoolean:(LUSwitch *)swtch -{ - LUConsoleSetting *setting = swtch.userData; - setting.value = swtch.isOn ? @YES : @NO; -} - -#pragma mark - -#pragma mark Entries - -- (NSArray *)listSections:(LUPluginSettings *)settings -{ - NSArray *sections = @[ - [[LUConsoleSettingsSection alloc] initWithTitle:@"Common" - entries:@[ - [[LUConsoleSetting alloc] initWithTarget:settings - name:@"richTextTags" - type:LUSettingTypeBool - title:@"Enable Rich Text Tags" - proOnly:NO] - ]], - [[LUConsoleSettingsSection alloc] initWithTitle:@"Exception Warning" - entries:@[ - [[LUConsoleSetting alloc] initWithTarget:settings.exceptionWarning - name:@"displayMode" - type:LUSettingTypeEnum - title:@"Display Mode" - proOnly:NO - values:@[ @"None", @"Errors", @"Exceptions", @"All" ]] - ]], - [[LUConsoleSettingsSection alloc] initWithTitle:@"Log Overlay" - entries:@[ - [[LUConsoleSetting alloc] initWithTarget:settings.logOverlay - name:@"enabled" - type:LUSettingTypeBool - title:@"Enabled" - proOnly:YES], - [[LUConsoleSetting alloc] initWithTarget:settings.logOverlay - name:@"maxVisibleLines" - type:LUSettingTypeInt - title:@"Max Visible Lines" - proOnly:YES], - [[LUConsoleSetting alloc] initWithTarget:settings.logOverlay - name:@"timeout" - type:LUSettingTypeDouble - title:@"Timeout" - proOnly:YES] - ]], - ]; - - for (LUConsoleSettingsSection *section in sections) { - for (LUConsoleSetting *setting in section.entries) { - setting.delegate = self; - } - } - - return sections; -} - -#pragma mark - -#pragma mark LUConsoleSettingDelegate - -- (void)consoleSettingDidChange:(LUConsoleSetting *)setting -{ - [LUNotificationCenter postNotificationName:LUNotificationSettingsDidChange object:nil]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.m.meta deleted file mode 100644 index 89ca1e9..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: d7cb061dcc93d4e2dba8ced66289169d -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.xib b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.xib deleted file mode 100644 index 78b2718..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.xib +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.xib.meta deleted file mode 100644 index 34f4290..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUConsoleSettingsController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: f1502ff9c6f3d4f45ba9d7174d6e47a3 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUSettingsTableCell.xib b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUSettingsTableCell.xib deleted file mode 100644 index 7539dad..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUSettingsTableCell.xib +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUSettingsTableCell.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUSettingsTableCell.xib.meta deleted file mode 100644 index 202a1c1..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Settings/LUSettingsTableCell.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 12d3743a127914ba39b12b18e50a73cb -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables.meta deleted file mode 100644 index 2ed30fe..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1968fcfa922ff4c558bab347765640f8 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables/LUCVar.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables/LUCVar.h deleted file mode 100644 index 79f5259..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables/LUCVar.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// LUCVar.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUEntry.h" - -typedef enum : NSUInteger { - LUCVarTypeUnknown, - LUCVarTypeBoolean, - LUCVarTypeInteger, - LUCVarTypeFloat, - LUCVarTypeString, - LUCVarTypeEnum -} LUCVarType; - -typedef enum : NSUInteger { - LUCVarFlagsNone = 0, - LUCVarFlagsHidden = 1 << 1, - LUCVarFlagsNoArchive = 1 << 2 -} LUCVarFlags; - -typedef struct _LUCVarRange { - CGFloat min; - CGFloat max; -} LUCVarRange; - -NS_INLINE LUCVarRange LUMakeCVarRange(CGFloat min, CGFloat max) { - LUCVarRange r; - r.min = min; - r.max = max; - return r; -} - -extern NSString * const LUCVarTypeNameBoolean; -extern NSString * const LUCVarTypeNameInteger; -extern NSString * const LUCVarTypeNameFloat; -extern NSString * const LUCVarTypeNameString; -extern NSString * const LUCVarTypeNameEnum; -extern NSString * const LUCVarTypeNameUnknown; - -@interface LUCVar : LUEntry - -@property (nonatomic, readonly) LUCVarType type; -@property (nonatomic, strong) NSString *value; -@property (nonatomic, strong) NSString *defaultValue; -@property (nonatomic, readonly) BOOL isDefaultValue; -@property (nonatomic, strong) NSArray *values; -@property (nonatomic, assign) LUCVarFlags flags; -@property (nonatomic, assign) LUCVarRange range; -@property (nonatomic, readonly) BOOL hasRange; - -+ (instancetype)variableWithId:(int)entryId name:(NSString *)name value:(NSString *)value defaultValue:(NSString *)defaultValue type:(LUCVarType)type cellClass:(Class)cellClass; -- (instancetype)initWithId:(int)entryId name:(NSString *)name value:(NSString *)value defaultValue:(NSString *)defaultValue type:(LUCVarType)type cellClass:(Class)cellClass; - -+ (LUCVarType)typeForName:(NSString *)type; -+ (NSString *)typeNameForType:(LUCVarType)type; - -- (void)resetToDefaultValue; -- (BOOL)hasFlag:(LUCVarFlags)flag; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables/LUCVar.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables/LUCVar.h.meta deleted file mode 100644 index 4d02cf2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Variables/LUCVar.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 41565eaa7e1ed47549b6923bf6acaa4d -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning.meta deleted file mode 100644 index 7164b14..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 90b51298c8e5f40619db9a3464b40a27 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.h b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.h deleted file mode 100644 index f76316b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.h +++ /dev/null @@ -1,43 +0,0 @@ -// -// LUExceptionWarningController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUViewController.h" - -@class LULogMessage; -@class LUExceptionWarningController; - -@protocol LUExceptionWarningControllerDelegate - -- (void)exceptionWarningControllerDidShow:(LUExceptionWarningController *)controller; -- (void)exceptionWarningControllerDidDismiss:(LUExceptionWarningController *)controller; - -@end - -@interface LUExceptionWarningController : LUViewController - -@property (nonatomic, weak) id delegate; - -- (instancetype)initWithMessage:(LULogMessage *)message; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.h.meta deleted file mode 100644 index f4ff1dc..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 0ce9c679ca5b247ae893e16b25e57491 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.m b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.m deleted file mode 100644 index 3338fb8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// LUExceptionWarningController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUExceptionWarningController.h" - -#import "Lunar.h" - -@interface LUExceptionWarningController () { - LULogMessage *_message; -} - -@property (nonatomic, weak) IBOutlet UILabel *errorLabel; - -@end - -@implementation LUExceptionWarningController - -- (instancetype)initWithMessage:(LULogMessage *)message -{ - self = [super initWithNibName:NSStringFromClass([self class]) bundle:nil]; - if (self) { - _message = message; - } - return self; -} - - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - if (_message.tags.count > 0) - { - _errorLabel.attributedText = [_message createAttributedTextWithSkin:[LUTheme mainTheme].attributedTextSkin]; - } - else - { - _errorLabel.text = _message.text; - } -} - -#pragma mark - -#pragma mark Actions - -- (IBAction)onShowButton:(id)sender -{ - if ([_delegate respondsToSelector:@selector(exceptionWarningControllerDidShow:)]) { - [_delegate exceptionWarningControllerDidShow:self]; - } -} - -- (IBAction)onDismissButton:(id)sender -{ - if ([_delegate respondsToSelector:@selector(exceptionWarningControllerDidDismiss:)]) { - [_delegate exceptionWarningControllerDidDismiss:self]; - } -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.m.meta deleted file mode 100644 index a8338ee..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 75b8f976b590842c7be6166b4af8ae12 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.xib b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.xib deleted file mode 100644 index ba155d8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.xib +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.xib.meta b/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.xib.meta deleted file mode 100644 index d43c2b8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Controllers/Warning/LUExceptionWarningController.xib.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 5fd5c5bc0095649a385962675a241891 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images.meta b/Assets/LunarConsole/Editor/iOS/Common/Images.meta deleted file mode 100644 index 552fa65..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 39dfe01b8b4cb4b938efd493c3b8c8c1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning.png deleted file mode 100644 index 875da8e..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning@2x.png deleted file mode 100644 index d829c5b..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning@3x.png deleted file mode 100644 index 12e6c0d..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_actions_empty_warning@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background.png deleted file mode 100644 index d1d6885..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@2x.png deleted file mode 100644 index f0844f1..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@2x.png.meta deleted file mode 100644 index 4a295d5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: e5806cd988f0948f3a89bbf0ce6539a0 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@3x.png deleted file mode 100644 index a356792..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@3x.png.meta deleted file mode 100644 index 257757b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_collapse_background@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: e9fe4af1876ed4199bb175614e7609c8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear.png deleted file mode 100644 index c838a9f..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear.png.meta deleted file mode 100644 index eef7199..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: ab44198d863a64833971a4f04f538ab1 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@2x.png deleted file mode 100644 index fa5af3d..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@2x.png.meta deleted file mode 100644 index 47e8b9d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 1348939e0ea894435868aa490257e5f9 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@3x.png deleted file mode 100644 index 19263fe..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@3x.png.meta deleted file mode 100644 index 8408d89..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clear@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 9f6f42b0caf4e4b1db5f7f9aecb89783 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard.png deleted file mode 100644 index d500579..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard.png.meta deleted file mode 100644 index 51e142a..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: f4024a03a682144b7b7c831878285a2e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@2x.png deleted file mode 100644 index c6417ac..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@2x.png.meta deleted file mode 100644 index 4ac4a83..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: bee5a42b38f6548a2a312ac345342a7d -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@3x.png deleted file mode 100644 index 3b38801..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@3x.png.meta deleted file mode 100644 index 7f537f6..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_clipboard@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 19be6cf90b16b478090647b4b35f0c35 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close.png deleted file mode 100644 index 5e3785a..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close.png.meta deleted file mode 100644 index f32b3f2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: b90b018143ad843acb136951f72c08aa -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@2x.png deleted file mode 100644 index 7de9239..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@2x.png.meta deleted file mode 100644 index c67337e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: a1491b110e0f4467dbaa0ceb29143760 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@3x.png deleted file mode 100644 index e36e5fc..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@3x.png.meta deleted file mode 100644 index 7486b8b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_close@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 3b1b846406d364ca488dbfd605a294ef -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console.png deleted file mode 100644 index e98902f..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console.png.meta deleted file mode 100644 index aedbf6c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 9031fb8d827884190af62ac10ea4068a -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@2x.png deleted file mode 100644 index fd473fa..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@2x.png.meta deleted file mode 100644 index 5d786eb..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: bae9520495ff3414ea93f812692533b3 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@3x.png deleted file mode 100644 index 6293cd1..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@3x.png.meta deleted file mode 100644 index f835e58..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_console@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: ce1e62f488f784cd1b086b97e424bbd4 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email.png deleted file mode 100644 index 293cff8..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email.png.meta deleted file mode 100644 index cc877c3..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 679634f9bf9e540bcb87db40d70302bf -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@2x.png deleted file mode 100644 index 3d4069c..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@2x.png.meta deleted file mode 100644 index 3375b0f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 2f5e03d74135e49fcbf69806d3f6325c -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@3x.png deleted file mode 100644 index 2826530..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@3x.png.meta deleted file mode 100644 index 0179e3e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_email@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 2063932157e9b43f28ebb60a0514b258 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help.png deleted file mode 100644 index f6ed70e..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help.png.meta deleted file mode 100644 index 84375d0..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: e181ca8053a254b59972d71ebf297e93 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@2x.png deleted file mode 100644 index 26ac435..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@2x.png.meta deleted file mode 100644 index 418cf6a..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 8737dee2a7cd84631b8e5ec091ae7318 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@3x.png deleted file mode 100644 index 1787548..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@3x.png.meta deleted file mode 100644 index 2bbb85f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_help@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 3b15c0af7d5f34de49b12bd98a2e24c5 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock.png deleted file mode 100644 index 1ab1a69..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock.png.meta deleted file mode 100644 index 07dd8de..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: df7984a84444048d681488c2824f3406 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@2x.png deleted file mode 100644 index 84c8880..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@2x.png.meta deleted file mode 100644 index 7769049..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 57b983bec61444303aff095a84cc4441 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@3x.png deleted file mode 100644 index 10f7a72..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@3x.png.meta deleted file mode 100644 index 4942635..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_lock@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 24c442e4acc134835be5cf1c6b30bb71 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more.png deleted file mode 100644 index 0dba1a2..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more.png.meta deleted file mode 100644 index 8a88f58..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 4e10ac26ce5f24f018bf54c899dafd3a -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@2x.png deleted file mode 100644 index f4ac45b..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@2x.png.meta deleted file mode 100644 index 99d8eeb..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 3c326cb1f2f8d45c0bf107c756290d65 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@3x.png deleted file mode 100644 index 431ed95..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@3x.png.meta deleted file mode 100644 index 7ca609d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_more@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 8248fba8ca36d4588b35ccf95b9c543e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings.png deleted file mode 100644 index a27c39c..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings.png.meta deleted file mode 100644 index 63bf6dd..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: b84e4c67371fc49e780d1bbd49cadce7 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@2x.png deleted file mode 100644 index 095ccbe..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@2x.png.meta deleted file mode 100644 index 90bcb85..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: dbb0acce61ae34da6a22a173d9039a69 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@3x.png deleted file mode 100644 index 9473f76..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@3x.png.meta deleted file mode 100644 index 8fd9e3f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_settings@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 5dc0bd7279c444e3da5d2f65b486d023 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock.png deleted file mode 100644 index d8d8eaa..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock.png.meta deleted file mode 100644 index 73d00c3..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 94c737f24f45145d597504d030863be1 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@2x.png deleted file mode 100644 index bca1f06..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@2x.png.meta deleted file mode 100644 index 7643be7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 5a559572263f845b898fcc40d4837486 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@3x.png deleted file mode 100644 index 7042808..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@3x.png.meta deleted file mode 100644 index 9daab3f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_button_unlock@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 769b8fc6a7ace42fd82c057d9b88297d -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log.png deleted file mode 100644 index 6401a8f..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log.png.meta deleted file mode 100644 index 6cb2980..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: f46df8c7d429b4615a76d0ce6d66a2cf -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@2x.png deleted file mode 100644 index b8c6e2a..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@2x.png.meta deleted file mode 100644 index c44b9e9..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 73501e723f0614e22a5baade6303c52e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@3x.png deleted file mode 100644 index be32a39..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@3x.png.meta deleted file mode 100644 index d9b052c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 51bbbf7957bb647c98537da70d4ec657 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error.png deleted file mode 100644 index 8396508..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error.png.meta deleted file mode 100644 index 8bbd458..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: a9138c1d7942646f596c05de6dcef7cc -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@2x.png deleted file mode 100644 index 2ffbab8..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@2x.png.meta deleted file mode 100644 index 87114c9..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: d44d8f5d6cef34151b2a07f709631dd1 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@3x.png deleted file mode 100644 index c8fbf7c..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@3x.png.meta deleted file mode 100644 index f285fd9..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_error@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 261171224981149ea99f11036ddd18e8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning.png deleted file mode 100644 index 9cd5e43..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning.png.meta deleted file mode 100644 index 7c8fa7b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 16ddd2e4fd57b48c89743469b9517b6e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@2x.png deleted file mode 100644 index a527c8a..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@2x.png.meta deleted file mode 100644 index ad8cb25..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: a300b5681467345b799080038c1c7c3e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@3x.png deleted file mode 100644 index 8060246..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@3x.png.meta deleted file mode 100644 index 4a49e30..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_log_warning@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 407395d3d88ad464b982c948ff4095c0 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings.png deleted file mode 100644 index a27c39c..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings.png.meta deleted file mode 100644 index f3927e4..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 7f2b6bc208d4440c08cb7d1710ec9e18 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@2x.png deleted file mode 100644 index 095ccbe..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@2x.png.meta deleted file mode 100644 index f70e653..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 58b60bd25eeeb43aebab51a94051721d -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@3x.png deleted file mode 100644 index 9473f76..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@3x.png.meta deleted file mode 100644 index 4a63c39..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_icon_settings@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 2c565c443f77041f9ab7c8c1482a019e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background.png deleted file mode 100644 index 9f866eb..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background.png.meta deleted file mode 100644 index 50adcd6..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 7784a5db6fdfc477cb4836bb166a9ffb -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@2x.png deleted file mode 100644 index 18e41cb..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@2x.png.meta deleted file mode 100644 index b165c7e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 8c2e50efa25f04b87bebb623d5cda291 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@3x.png deleted file mode 100644 index 7ec0e48..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@3x.png.meta deleted file mode 100644 index 50fb81f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_log_button_background@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 971bec75ff9a34c62b58853584b1d49b -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal.png deleted file mode 100644 index b2ba4d4..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal.png.meta deleted file mode 100644 index 9f67453..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 5f6fcd3e4e771438f93dbe106b17b631 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@2x.png deleted file mode 100644 index 73cc631..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@2x.png.meta deleted file mode 100644 index 519610d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 50e31372a1ca248d3b882060dadfbc88 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@3x.png deleted file mode 100644 index 4278a08..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@3x.png.meta deleted file mode 100644 index da7cd46..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_horizontal@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 192ea669df21c43af90f4b8ec8a3b501 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical.png deleted file mode 100644 index 0dba1a2..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical.png.meta deleted file mode 100644 index 94e368b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 18fb9fb97701b48d2a6fbe7542d4ab96 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@2x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@2x.png deleted file mode 100644 index f4ac45b..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@2x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@2x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@2x.png.meta deleted file mode 100644 index 5915683..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@2x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: ef43292393bb54f67a9d6950e50d5124 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@3x.png b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@3x.png deleted file mode 100644 index 431ed95..0000000 Binary files a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@3x.png and /dev/null differ diff --git a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@3x.png.meta b/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@3x.png.meta deleted file mode 100644 index 3e90b4c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Images/lunar_console_resize_handle_vertical@3x.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 0e8faee96c3e940a8af51f4db5bee6fb -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 0 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: -1 - mipBias: -100 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 1 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 0 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 0 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Lunar.h b/Assets/LunarConsole/Editor/iOS/Common/Lunar.h deleted file mode 100644 index b0cd2eb..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Lunar.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// Lunar.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUUtils.h" - -#import "LUActionButton.h" -#import "LUActionController.h" -#import "LUActionRegistry.h" -#import "LUButton.h" -#import "LUConsole.h" -#import "LUConsoleController.h" -#import "LUConsoleLogController.h" -#import "LUConsoleLogDetailsController.h" -#import "LUConsoleLogEntry.h" -#import "LUConsoleLogEntryList.h" -#import "LUConsoleLogEntryLookupTable.h" -#import "LUConsoleLogEntryTableViewCell.h" -#import "LUConsoleLogMenuController.h" -#import "LUConsoleLogTypeButton.h" -#import "LUConsolePlugin.h" -#import "LUConsolePopupController.h" -#import "LUConsoleResizeController.h" -#import "LUConsoleSettingsController.h" -#import "LUCVar.h" -#import "LUEntry.h" -#import "LUEntryTableViewCell.h" -#import "LUEnumPickerViewController.h" -#import "LUExceptionWarningController.h" -#import "LULogMessage.h" -#import "LUPanViewGestureRecognizer.h" -#import "LUPassTouchView.h" -#import "LUPluginSettings.h" -#import "LUSlider.h" -#import "LUSwitch.h" -#import "LUTableView.h" -#import "LUTextField.h" -#import "LUTheme.h" -#import "LUToggleButton.h" -#import "LUUIHelper.h" -#import "LUUnityScriptMessenger.h" -#import "LUViewController.h" -#import "LUWindow.h" diff --git a/Assets/LunarConsole/Editor/iOS/Common/Lunar.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Lunar.h.meta deleted file mode 100644 index 2bf7c67..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Lunar.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: e9c3a8e3a408a4ebf82b490d1c450a08 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI.meta b/Assets/LunarConsole/Editor/iOS/Common/UI.meta deleted file mode 100644 index 6add627..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cc1239441596446cbb6fba1e6f752bdf -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.h deleted file mode 100644 index 9713e04..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// LUActionButton.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@class LUActionButton; - -@protocol LUActionButtonDelegate - -- (void)actionButtonDidStartEdit:(LUActionButton *)actionButton; - -@end - -@interface LUActionButton : UIButton - -@property (nonatomic, weak) id stateDelegate; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.h.meta deleted file mode 100644 index 5bd3d2b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: cc67b622e249d4efda6e7c0de0f92347 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.m deleted file mode 100644 index cc33697..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// LUActionButton.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUActionButton.h" - -#import "Lunar.h" - -@interface LUActionButton () -{ - UIGestureRecognizer * _longPressGestureRecognizer; - UIGestureRecognizer * _panViewGestureRecognizer; -} -@end - -@implementation LUActionButton - -- (instancetype)initWithCoder:(NSCoder *)aDecoder -{ - self = [super initWithCoder:aDecoder]; - if (self) - { - LUButtonSkin *skin = [LUTheme mainTheme].actionButtonLargeSkin; - - [self setBackgroundImage:skin.normalImage forState:UIControlStateNormal]; - [self setBackgroundImage:skin.selectedImage forState:UIControlStateHighlighted]; - - _longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self - action:@selector(handleLongPressGesture:)]; - [self addGestureRecognizer:_longPressGestureRecognizer]; - } - return self; -} - -- (void)handleLongPressGesture:(UILongPressGestureRecognizer *)gestureRecognizer -{ - [self removeGestureRecognizer:gestureRecognizer]; - - _panViewGestureRecognizer = [LUPanViewGestureRecognizer new]; - [self addGestureRecognizer:_panViewGestureRecognizer]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.m.meta deleted file mode 100644 index e8e4d3d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUActionButton.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 3ed52609e0e6c48999cb05bc508c28d7 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.h deleted file mode 100644 index 7ae48a2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// LUButton.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUButton : UIButton - -@property (nonatomic, strong) id userData; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.h.meta deleted file mode 100644 index 67df23e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: faa077be3152e434ca7808ec86efa1ab -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.m deleted file mode 100644 index 5f6ca4f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.m +++ /dev/null @@ -1,35 +0,0 @@ -// -// LUButton.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUButton.h" - -@implementation LUButton - -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect { - // Drawing code -} -*/ - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.m.meta deleted file mode 100644 index 97eb3fd..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUButton.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 9e6b742e974b64747abd3de2c32d5bf9 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.h deleted file mode 100644 index cc2f952..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// LUPanViewGestureRecognizer.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUPanViewGestureRecognizer : UIPanGestureRecognizer - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.h.meta deleted file mode 100644 index 851efc8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 098f4c547840e41f4b10c7a30e889321 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.m deleted file mode 100644 index 0480e6b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// LUPanViewGestureRecognizer.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUPanViewGestureRecognizer.h" - -@implementation LUPanViewGestureRecognizer - -- (instancetype)init -{ - self = [super initWithTarget:self action:@selector(panRecognizer:)]; - if (self) - { - } - return self; -} - -#pragma mark - -#pragma mark Utility methods - -/** - Scale and rotation transforms are applied relative to the layer's anchor point this method moves a gesture recognizer's view's anchor point between the user's fingers. - */ -- (void)adjustAnchorPointForGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer -{ - if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { - UIView *piece = gestureRecognizer.view; - CGPoint locationInView = [gestureRecognizer locationInView:piece]; - CGPoint locationInSuperview = [gestureRecognizer locationInView:piece.superview]; - - piece.layer.anchorPoint = CGPointMake(locationInView.x / piece.bounds.size.width, locationInView.y / piece.bounds.size.height); - piece.center = locationInSuperview; - } -} - -#pragma mark - -#pragma mark Touch handling - -- (void)panRecognizer:(UIPanGestureRecognizer *)gestureRecognizer -{ - UIView *piece = [gestureRecognizer view]; - - [self adjustAnchorPointForGestureRecognizer:gestureRecognizer]; - - if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) { - CGPoint translation = [gestureRecognizer translationInView:[piece superview]]; - - [piece setCenter:CGPointMake([piece center].x + translation.x, [piece center].y + translation.y)]; - [gestureRecognizer setTranslation:CGPointZero inView:[piece superview]]; - } -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.m.meta deleted file mode 100644 index 3cd49c8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPanViewGestureRecognizer.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 78fe6ebd9bc174ed89e6172e56e53f83 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.h deleted file mode 100644 index bbfc457..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// LUPassTouchView.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUPassTouchView : UIView - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.h.meta deleted file mode 100644 index 3da7987..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 12a913616ada74fe7b57af135bd54ef3 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.m deleted file mode 100644 index ab5b321..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// LUPassTouchView.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUPassTouchView.h" - -@implementation LUPassTouchView - -- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event -{ - for (UIView *subview in self.subviews) - { - if (CGRectContainsPoint(subview.frame, point)) - { - return YES; - } - } - return NO; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.m.meta deleted file mode 100644 index b018d2c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUPassTouchView.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: fa9acd20755c044e5a5629cde77e1c1d -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.h deleted file mode 100644 index 058780e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// LUSlider.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUSlider : UISlider - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.h.meta deleted file mode 100644 index 2b767ce..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 409675703489b4f819e799f41caeb540 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.m deleted file mode 100644 index 05a88b7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// LUSlider.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUSlider.h" - -#import "Lunar.h" - -@implementation LUSlider - -- (instancetype)initWithCoder:(NSCoder *)aDecoder -{ - self = [super initWithCoder:aDecoder]; - if (self) - { - self.tintColor = [LUTheme mainTheme].switchTintColor; - } - return self; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.m.meta deleted file mode 100644 index 87f79ed..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSlider.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: ca51dd76d01804b3da2971a15244f577 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.h deleted file mode 100644 index 75f1528..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// LUSwitch.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUSwitch : UISwitch - -@property (nonatomic, strong) id userData; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.h.meta deleted file mode 100644 index a63f302..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 981e294224b9740068ca08e24796edc2 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.m deleted file mode 100644 index 2d0bac8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// LUSwitch.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "Lunar.h" - -#import "LUSwitch.h" - -@implementation LUSwitch - -- (instancetype)initWithCoder:(NSCoder *)aDecoder -{ - self = [super initWithCoder:aDecoder]; - if (self) - { - self.onTintColor = [LUTheme mainTheme].switchTintColor; - } - return self; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.m.meta deleted file mode 100644 index 32bdf7c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUSwitch.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 0d18f1a74824247bc81f984a0c6ce917 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.h deleted file mode 100644 index ab57314..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// LUTableView.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@class LUTableView; - -@protocol LUTableViewTouchDelegate - -@optional -- (void)tableView:(LUTableView *)tableView touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; -- (void)tableView:(LUTableView *)tableView touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; -- (void)tableView:(LUTableView *)tableView touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; -- (void)tableView:(LUTableView *)tableView touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; - -@end - -@interface LUTableView : UITableView - -@property (nonatomic, weak) id touchDelegate; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.h.meta deleted file mode 100644 index 6136847..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 9f0eae894fd9d4fb2978048fbd324028 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.m deleted file mode 100644 index 1a47058..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.m +++ /dev/null @@ -1,70 +0,0 @@ -// -// LUTableView.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUTableView.h" - -@implementation LUTableView - -#pragma mark - -#pragma mark Touch handling - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event -{ - [super touchesBegan:touches withEvent:event]; - - if ([_touchDelegate respondsToSelector:@selector(tableView:touchesBegan:withEvent:)]) - { - [_touchDelegate tableView:self touchesBegan:touches withEvent:event]; - } -} - -- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event -{ - [super touchesCancelled:touches withEvent:event]; - - if ([_touchDelegate respondsToSelector:@selector(tableView:touchesCancelled:withEvent:)]) - { - [_touchDelegate tableView:self touchesCancelled:touches withEvent:event]; - } -} - -- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event -{ - [super touchesMoved:touches withEvent:event]; - - if ([_touchDelegate respondsToSelector:@selector(tableView:touchesMoved:withEvent:)]) - { - [_touchDelegate tableView:self touchesMoved:touches withEvent:event]; - } -} - -- (void)touchesEnded:(NSSet *)touches withEvent:(nullable UIEvent *)event -{ - [super touchesEnded:touches withEvent:event]; - - if ([_touchDelegate respondsToSelector:@selector(tableView:touchesEnded:withEvent:)]) - { - [_touchDelegate tableView:self touchesEnded:touches withEvent:event]; - } -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.m.meta deleted file mode 100644 index 1c6fd26..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTableView.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 957c3ff74202a44fd86c4ee879ceb8b9 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.h deleted file mode 100644 index 489a03e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// LUTextField.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class LUTextField; - -@protocol LUTextFieldInputValidator -- (BOOL)isTextValid:(NSString *)text; -@end - -@protocol LUTextFieldInputDelegate -@optional -- (void)textFieldDidEndEditing:(LUTextField *)textField; -- (void)textFieldInputDidBecomeInvalid:(LUTextField *)textField; -@end - -@interface LUTextField : UITextField - -@property (nonatomic, nullable, strong) id textValidator; -@property (nonatomic, nullable, weak) id textInputDelegate; -@property (nonatomic, strong) id userData; - -@end - -@interface LUTextFieldIntegerInputValidator : NSObject -@end - -@interface LUTextFieldFloatInputValidator : NSObject -@end - -NS_ASSUME_NONNULL_END diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.h.meta deleted file mode 100644 index c2c5de0..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 161a93a0777984bd082fbd36efb7e39c -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.m deleted file mode 100644 index 78e015e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.m +++ /dev/null @@ -1,101 +0,0 @@ -// -// LUTextField.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUTextField.h" - -#import "Lunar.h" - -@interface LUTextField () - -@property (nonatomic, strong) NSString *lastText; - -@end - -@implementation LUTextField - -- (instancetype)initWithCoder:(NSCoder *)aDecoder -{ - self = [super initWithCoder:aDecoder]; - if (self) { - self.backgroundColor = [LUTheme mainTheme].variableEditBackground; - self.textColor = [LUTheme mainTheme].variableEditTextColor; - self.delegate = self; - } - return self; -} - -#pragma mark - -#pragma mark UITextFieldDelegate - -- (BOOL)textFieldShouldReturn:(UITextField *)textField -{ - [textField resignFirstResponder]; - return NO; -} - -- (void)textFieldDidBeginEditing:(UITextField *)textField -{ - self.lastText = textField.text; -} - -- (void)textFieldDidEndEditing:(UITextField *)textField -{ - NSString *valueText = textField.text; - if (![self isTextValid:valueText]) { - if ([self.textInputDelegate respondsToSelector:@selector(textFieldInputDidBecomeInvalid:)]) { - [self.textInputDelegate textFieldInputDidBecomeInvalid:self]; - } - self.text = self.lastText; - } else { - if ([self.textInputDelegate respondsToSelector:@selector(textFieldDidEndEditing:)]) { - [self.textInputDelegate textFieldDidEndEditing:self]; - } - } -} - -#pragma mark - -#pragma mark Text Validation - -- (BOOL)isTextValid:(NSString *)text -{ - return _textValidator == nil || [_textValidator isTextValid:text]; -} - -@end - -@implementation LUTextFieldIntegerInputValidator - -- (BOOL)isTextValid:(NSString *)text -{ - return LUStringTryParseInteger(text, NULL); -} - -@end - -@implementation LUTextFieldFloatInputValidator - -- (BOOL)isTextValid:(NSString *)text -{ - return LUStringTryParseFloat(text, NULL); -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.m.meta deleted file mode 100644 index 95257a6..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTextField.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: f124f583bb8b34502945bfabccc60941 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.h deleted file mode 100644 index 1fbb4da..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.h +++ /dev/null @@ -1,131 +0,0 @@ -// -// LUTheme.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUCellSkin : NSObject - -+ (instancetype)cellSkin; - -@property (nonatomic, readonly) UIImage *icon; -@property (nonatomic, readonly) UIColor *textColor; -@property (nonatomic, readonly) UIColor *backgroundColorLight; -@property (nonatomic, readonly) UIColor *backgroundColorDark; -@property (nonatomic, readonly) UIColor *overlayTextColor; - -@end - -@interface LUButtonSkin : NSObject - -+ (instancetype)buttonSkin; - -@property (nonatomic, readonly) UIImage *normalImage; -@property (nonatomic, readonly) UIImage *selectedImage; -@property (nonatomic, readonly) UIFont *font; - -@end - -@interface LUAttributedTextSkin : NSObject - -@property (nonatomic, readonly) UIFont *regularFont; -@property (nonatomic, readonly) UIFont *boldFont; -@property (nonatomic, readonly) UIFont *italicFont; -@property (nonatomic, readonly) UIFont *boldItalicFont; - -@end - -@interface LUTheme : NSObject - -@property (nonatomic, readonly) LUAttributedTextSkin *attributedTextSkin; - -@property (nonatomic, readonly) UIColor *statusBarColor; -@property (nonatomic, readonly) UIColor *statusBarTextColor; - -@property (nonatomic, readonly) UIColor *tableColor; -@property (nonatomic, readonly) UIColor *logButtonTitleColor; -@property (nonatomic, readonly) UIColor *logButtonTitleSelectedColor; - -@property (nonatomic, readonly) LUCellSkin *cellLog; -@property (nonatomic, readonly) LUCellSkin *cellError; -@property (nonatomic, readonly) LUCellSkin *cellWarning; - -@property (nonatomic, readonly) UIColor *backgroundColorLight; -@property (nonatomic, readonly) UIColor *backgroundColorDark; - -@property (nonatomic, readonly) UIFont *font; -@property (nonatomic, readonly) UIFont *fontOverlay; -@property (nonatomic, readonly) UIFont *fontSmall; -@property (nonatomic, readonly) NSLineBreakMode lineBreakMode; - -@property (nonatomic, readonly) CGFloat cellHeight; -@property (nonatomic, readonly) CGFloat indentHor; -@property (nonatomic, readonly) CGFloat indentVer; -@property (nonatomic, readonly) CGFloat cellHeightTiny; -@property (nonatomic, readonly) CGFloat indentHorTiny; -@property (nonatomic, readonly) CGFloat indentVerTiny; -@property (nonatomic, readonly) CGFloat buttonWidth; -@property (nonatomic, readonly) CGFloat buttonHeight; - -@property (nonatomic, readonly) LUButtonSkin *actionButtonLargeSkin; - -@property (nonatomic, readonly) UIImage *collapseBackgroundImage; -@property (nonatomic, readonly) UIColor *collapseBackgroundColor; -@property (nonatomic, readonly) UIColor *collapseTextColor; - -@property (nonatomic, readonly) UIFont *actionsWarningFont; -@property (nonatomic, readonly) UIColor *actionsWarningTextColor; -@property (nonatomic, readonly) UIFont *actionsFont; -@property (nonatomic, readonly) UIColor *actionsTextColor; -@property (nonatomic, readonly) UIColor *actionsBackgroundColorLight; -@property (nonatomic, readonly) UIColor *actionsBackgroundColorDark; -@property (nonatomic, readonly) UIFont *actionsGroupFont; -@property (nonatomic, readonly) UIColor *actionsGroupTextColor; -@property (nonatomic, readonly) UIColor *actionsGroupBackgroundColor; - -@property (nonatomic, readonly) UIFont *contextMenuFont; -@property (nonatomic, readonly) UIColor *contextMenuBackgroundColor; -@property (nonatomic, readonly) UIColor *contextMenuTextColor; -@property (nonatomic, readonly) UIColor *contextMenuTextHighlightColor; -@property (nonatomic, readonly) UIColor *contextMenuTextProColor; -@property (nonatomic, readonly) UIColor *contextMenuTextProHighlightColor; - -@property (nonatomic, readonly) UIFont *variableEditFont; -@property (nonatomic, readonly) UIColor *variableEditTextColor; -@property (nonatomic, readonly) UIColor *variableEditBackground; -@property (nonatomic, readonly) UIColor *variableTextColor; -@property (nonatomic, readonly) UIColor *variableVolatileTextColor; - -@property (nonatomic, readonly) UIFont *enumButtonFont; -@property (nonatomic, readonly) UIColor *enumButtonTitleColor; - -@property (nonatomic, readonly) UIColor *switchTintColor; - -@property (nonatomic, readonly) UIImage *settingsIconImage; -@property (nonatomic, readonly) UIColor *settingsTextColorUnavailable; - -@property (nonatomic, readonly) UIFont *logMessageDetailFont; -@property (nonatomic, readonly) UIColor *logMessageStacktraceColor; - -+ (LUTheme *)mainTheme; - -@end - diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.h.meta deleted file mode 100644 index dd38ca8..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: b835eb01b03874a84a72ec2e575c5113 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.m deleted file mode 100644 index b11f14a..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.m +++ /dev/null @@ -1,322 +0,0 @@ -// -// LUTheme.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUTheme.h" - -#import "Lunar.h" - -static LUTheme *_mainTheme; - -static NSString const * _fontStyleBold = @"Bold"; -static NSString const * _fontStyleItalic = @"Italic"; -static NSString const * _fontStyleBoldItalic = @"BoldItalic"; - -@interface LUTheme () - -@property (nonatomic, readwrite) LUAttributedTextSkin *attributedTextSkin; - -@property (nonatomic, strong) UIColor *statusBarColor; -@property (nonatomic, strong) UIColor *statusBarTextColor; - -@property (nonatomic, strong) UIColor *tableColor; -@property (nonatomic, strong) UIColor *logButtonTitleColor; -@property (nonatomic, strong) UIColor *logButtonTitleSelectedColor; - -@property (nonatomic, strong) LUCellSkin *cellLog; -@property (nonatomic, strong) LUCellSkin *cellError; -@property (nonatomic, strong) LUCellSkin *cellWarning; - -@property (nonatomic, strong) UIColor *backgroundColorLight; -@property (nonatomic, strong) UIColor *backgroundColorDark; - -@property (nonatomic, strong) UIFont *font; -@property (nonatomic, strong) UIFont *fontOverlay; -@property (nonatomic, strong) UIFont *fontSmall; - -@property (nonatomic, assign) NSLineBreakMode lineBreakMode; -@property (nonatomic, assign) CGFloat cellHeight; -@property (nonatomic, assign) CGFloat indentHor; -@property (nonatomic, assign) CGFloat indentVer; -@property (nonatomic, assign) CGFloat cellHeightTiny; -@property (nonatomic, assign) CGFloat indentHorTiny; -@property (nonatomic, assign) CGFloat indentVerTiny; -@property (nonatomic, assign) CGFloat buttonWidth; -@property (nonatomic, assign) CGFloat buttonHeight; - -@property (nonatomic, strong) LUButtonSkin *actionButtonLargeSkin; - -@property (nonatomic, strong) UIImage *collapseBackgroundImage; -@property (nonatomic, strong) UIColor *collapseBackgroundColor; -@property (nonatomic, strong) UIColor *collapseTextColor; - -@property (nonatomic, strong) UIFont *actionsWarningFont; -@property (nonatomic, strong) UIColor *actionsWarningTextColor; -@property (nonatomic, strong) UIFont *actionsFont; -@property (nonatomic, strong) UIColor *actionsTextColor; -@property (nonatomic, strong) UIColor *actionsBackgroundColorLight; -@property (nonatomic, strong) UIColor *actionsBackgroundColorDark; -@property (nonatomic, strong) UIFont *actionsGroupFont; -@property (nonatomic, strong) UIColor *actionsGroupTextColor; -@property (nonatomic, strong) UIColor *actionsGroupBackgroundColor; - -@property (nonatomic, strong) UIFont *contextMenuFont; -@property (nonatomic, strong) UIColor *contextMenuBackgroundColor; -@property (nonatomic, strong) UIColor *contextMenuTextColor; -@property (nonatomic, strong) UIColor *contextMenuTextHighlightColor; -@property (nonatomic, strong) UIColor *contextMenuTextProColor; -@property (nonatomic, strong) UIColor *contextMenuTextProHighlightColor; - -@property (nonatomic, strong) UIFont *variableEditFont; -@property (nonatomic, strong) UIColor *variableEditTextColor; -@property (nonatomic, strong) UIColor *variableEditBackground; -@property (nonatomic, strong) UIColor *variableTextColor; -@property (nonatomic, strong) UIColor *variableVolatileTextColor; - -@property (nonatomic, strong) UIFont *enumButtonFont; -@property (nonatomic, strong) UIColor *enumButtonTitleColor; - -@property (nonatomic, strong) UIColor *switchTintColor; -@property (nonatomic, strong) UIImage *settingsIconImage; -@property (nonatomic, strong) UIColor *settingsTextColorUnavailable; - -@property (nonatomic, strong) UIFont *logMessageDetailFont; -@property (nonatomic, strong) UIColor *logMessageStacktraceColor; - -@end - -@interface LUCellSkin () - -@property (nonatomic, strong) UIImage *icon; -@property (nonatomic, strong) UIColor *textColor; -@property (nonatomic, strong) UIColor *backgroundColorLight; -@property (nonatomic, strong) UIColor *backgroundColorDark; -@property (nonatomic, strong) UIColor *overlayTextColor; - -@end - -@interface LUButtonSkin () - -@property (nonatomic, strong) UIImage *normalImage; -@property (nonatomic, strong) UIImage *selectedImage; -@property (nonatomic, strong) UIFont *font; - -@end - -static UIColor *LUColorMake(int rgb) -{ - CGFloat red = ((rgb >> 16) & 0xff) / 255.0; - CGFloat green = ((rgb >> 8) & 0xff) / 255.0; - CGFloat blue = (rgb & 0xff) / 255.0; - return [UIColor colorWithRed:red green:green blue:blue alpha:1.0f]; -} - -static UIImage *CreateCollapseBackgroundImage() -{ - UIImage *collapseImage = [UIImage imageNamed:@"lunar_console_collapse_background.png"]; - - if ([UIScreen mainScreen].scale == 2.0) { - CGFloat offset = 23 / 2.0; - return [collapseImage resizableImageWithCapInsets:UIEdgeInsetsMake(offset, offset, offset, offset)]; - } - - if ([UIScreen mainScreen].scale == 1.0) // should not get there - just a sanity check - { - CGFloat offset = 11; - return [collapseImage resizableImageWithCapInsets:UIEdgeInsetsMake(offset, offset, offset, offset)]; - } - - CGFloat offset = 35 / 3.0; - return [collapseImage resizableImageWithCapInsets:UIEdgeInsetsMake(offset, offset, offset, offset)]; -} - -@interface LUAttributedTextSkin () - -@property (nonatomic, readwrite) UIFont *regularFont; -@property (nonatomic, readwrite) UIFont *boldFont; -@property (nonatomic, readwrite) UIFont *italicFont; -@property (nonatomic, readwrite) UIFont *boldItalicFont; - -@end - -@implementation LUAttributedTextSkin - -@end - -@implementation LUTheme - -+ (void)initialize -{ - if ([self class] == [LUTheme class]) { - LUCellSkin *cellLog = [LUCellSkin cellSkin]; - cellLog.icon = [UIImage imageNamed:@"lunar_console_icon_log.png"]; - cellLog.textColor = LUColorMake(0xb1b1b1); - cellLog.backgroundColorLight = LUColorMake(0x3c3c3c); - cellLog.backgroundColorDark = LUColorMake(0x373737); - cellLog.overlayTextColor = LUColorMake(0xadadad); - - LUCellSkin *cellError = [LUCellSkin cellSkin]; - cellError.icon = [UIImage imageNamed:@"lunar_console_icon_log_error.png"]; - cellError.textColor = cellLog.textColor; - cellError.backgroundColorLight = cellLog.backgroundColorLight; - cellError.backgroundColorDark = cellLog.backgroundColorDark; - cellError.overlayTextColor = LUColorMake(0xfc0000); - - LUCellSkin *cellWarning = [LUCellSkin cellSkin]; - cellWarning.icon = [UIImage imageNamed:@"lunar_console_icon_log_warning.png"]; - cellWarning.textColor = cellLog.textColor; - cellWarning.backgroundColorLight = cellLog.backgroundColorLight; - cellWarning.backgroundColorDark = cellLog.backgroundColorDark; - cellWarning.overlayTextColor = LUColorMake(0xf4f600); - - _mainTheme = [LUTheme new]; - _mainTheme.statusBarColor = [UIColor blackColor]; - _mainTheme.statusBarTextColor = [UIColor whiteColor]; - _mainTheme.tableColor = LUColorMake(0x2c2c27); - _mainTheme.logButtonTitleColor = LUColorMake(0xb1b1b1); - _mainTheme.logButtonTitleSelectedColor = LUColorMake(0x595959); - _mainTheme.cellLog = cellLog; - _mainTheme.cellError = cellError; - _mainTheme.cellWarning = cellWarning; - _mainTheme.backgroundColorLight = cellLog.backgroundColorLight; - _mainTheme.backgroundColorDark = cellLog.backgroundColorDark; - _mainTheme.font = [self createDefaultFont]; - _mainTheme.fontOverlay = [self createOverlayFont]; - _mainTheme.fontSmall = [self createSmallFont]; - _mainTheme.lineBreakMode = NSLineBreakByWordWrapping; - _mainTheme.cellHeight = 32; - _mainTheme.indentHor = 10; - _mainTheme.indentVer = 2; - _mainTheme.cellHeightTiny = 12; - _mainTheme.indentHorTiny = 2; - _mainTheme.indentVerTiny = 0; - _mainTheme.buttonWidth = 46; - _mainTheme.buttonHeight = 30; - _mainTheme.collapseBackgroundImage = CreateCollapseBackgroundImage(); - _mainTheme.collapseBackgroundColor = LUColorMake(0x424242); - _mainTheme.collapseTextColor = cellLog.textColor; - _mainTheme.actionsWarningFont = [UIFont systemFontOfSize:18]; - _mainTheme.actionsWarningTextColor = cellLog.textColor; - _mainTheme.actionsFont = [self createCustomFontWithSize:12]; - _mainTheme.actionsTextColor = cellLog.textColor; - _mainTheme.actionsBackgroundColorDark = cellLog.backgroundColorDark; - _mainTheme.actionsBackgroundColorLight = cellLog.backgroundColorLight; - _mainTheme.actionsGroupFont = [self createCustomFontWithSize:12]; - _mainTheme.actionsGroupTextColor = [UIColor whiteColor]; - _mainTheme.actionsGroupBackgroundColor = LUColorMake(0x262626); - _mainTheme.contextMenuFont = [self createContextMenuFont]; - _mainTheme.contextMenuBackgroundColor = LUColorMake(0x3c3c3c); - _mainTheme.contextMenuTextColor = cellLog.textColor; - _mainTheme.contextMenuTextHighlightColor = [UIColor whiteColor]; - _mainTheme.contextMenuTextProColor = LUColorMake(0xfed900); - _mainTheme.contextMenuTextProHighlightColor = [UIColor whiteColor]; - _mainTheme.switchTintColor = LUColorMake(0xfed900); - _mainTheme.settingsIconImage = LUGetImage(@"lunar_console_icon_settings"); - _mainTheme.settingsTextColorUnavailable = LUColorMake(0x565656); - _mainTheme.variableEditFont = _mainTheme.actionsFont; - _mainTheme.variableEditTextColor = LUColorMake(0xb4b4b4); - _mainTheme.variableEditBackground = LUColorMake(0x4d4d4d); - _mainTheme.variableTextColor = _mainTheme.actionsTextColor; - _mainTheme.variableVolatileTextColor = LUColorMake(0xfdd631); - _mainTheme.enumButtonFont = _mainTheme.font; - _mainTheme.enumButtonTitleColor = _mainTheme.actionsTextColor; - - _mainTheme.logMessageDetailFont = [self createCustomFontWithSize:12]; - _mainTheme.logMessageStacktraceColor = LUColorMake(0x555555); - - LUButtonSkin *actionButtonLargeSkin = [LUButtonSkin buttonSkin]; - actionButtonLargeSkin.normalImage = LUGet3SlicedImage(@"lunar_console_action_button_large_normal"); - actionButtonLargeSkin.selectedImage = LUGet3SlicedImage(@"lunar_console_action_button_large_selected"); - _mainTheme.actionButtonLargeSkin = actionButtonLargeSkin; - - _mainTheme.attributedTextSkin = [[LUAttributedTextSkin alloc] init]; - _mainTheme.attributedTextSkin.regularFont = [self createDefaultFont]; - _mainTheme.attributedTextSkin.boldFont = [self createDefaultFontWithStyle:_fontStyleBold]; - _mainTheme.attributedTextSkin.italicFont = [self createDefaultFontWithStyle:_fontStyleItalic]; - _mainTheme.attributedTextSkin.boldItalicFont = [self createDefaultFontWithStyle:_fontStyleBoldItalic]; - } -} - -+ (UIFont *)createCustomFontWithName:(NSString *)name size:(CGFloat)size -{ - UIFont *font = [UIFont fontWithName:name size:size]; - if (font != nil) { - return font; - } - - return [UIFont systemFontOfSize:size]; -} - -+ (UIFont *)createCustomFontWithSize:(CGFloat)size -{ - return [self createCustomFontWithName:@"Menlo-regular" size:size]; -} - -+ (UIFont *)createDefaultFontWithStyle:(NSString const*)style -{ - NSString *fontName = [[NSString alloc] initWithFormat:@"Menlo-%@", style]; - return [self createCustomFontWithName:fontName size:10]; -} - -+ (UIFont *)createDefaultFont -{ - return [self createCustomFontWithName:@"Menlo-regular" size:10]; -} - -+ (UIFont *)createOverlayFont -{ - return [self createCustomFontWithName:@"Menlo-bold" size:10]; -} - -+ (UIFont *)createSmallFont -{ - return [self createCustomFontWithName:@"Menlo-regular" size:8]; -} - -+ (UIFont *)createContextMenuFont -{ - return [self createCustomFontWithName:@"Menlo-regular" size:12]; -} - -+ (LUTheme *)mainTheme -{ - return _mainTheme; -} - -@end - -@implementation LUCellSkin - -+ (instancetype)cellSkin -{ - return [[self alloc] init]; -} - -@end - -@implementation LUButtonSkin - -+ (instancetype)buttonSkin -{ - return [[self alloc] init]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.m.meta deleted file mode 100644 index 1073206..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUTheme.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: c9c59a703f4634d6fbe238b8a93f5553 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.h deleted file mode 100644 index c9e229c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// LUToggleButton.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@class LUToggleButton; - -@protocol LUToggleButtonDelegate - -- (void)toggleButtonStateChanged:(LUToggleButton *)button; - -@end - -@interface LUToggleButton : UIButton - -@property (nonatomic, assign, getter=isOn) BOOL on; -@property (nonatomic, weak) id delegate; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.h.meta deleted file mode 100644 index 8bf5f07..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: fe02bf33e38924664a54d4f4bd944d7b -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.m deleted file mode 100644 index 6a74fc7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.m +++ /dev/null @@ -1,65 +0,0 @@ -// -// LUToggleButton.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUToggleButton.h" - -@implementation LUToggleButton - -- (instancetype)initWithCoder:(NSCoder *)aDecoder -{ - self = [super initWithCoder:aDecoder]; - if (self) - { - [self addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside]; - } - return self; -} - -#pragma mark - -#pragma mark Actions - -- (void)onClick:(id)sender -{ - self.on = !self.isOn; -} - -#pragma mark - -#pragma mark Properties - -- (BOOL)isOn -{ - return self.selected; -} - -- (void)setOn:(BOOL)on -{ - if (self.selected != on) - { - self.selected = on; - if ([_delegate respondsToSelector:@selector(toggleButtonStateChanged:)]) - { - [_delegate toggleButtonStateChanged:self]; - } - } -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.m.meta deleted file mode 100644 index 7869cc7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUToggleButton.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 8fc354623603347d2b31fad3d60c0d23 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.h deleted file mode 100644 index b89554b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// LUUIHelper.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface LUAlertAction : NSObject - -@property (nonatomic, readonly) NSString *title; -@property (nullable, nonatomic, copy, readonly) void (^handler)(LUAlertAction *action); - -- (instancetype)initWithTitle:(NSString *)title handler:(void (^ __nullable)(LUAlertAction *action))handler; - -@end - -@interface LUUIHelper : NSObject - -+ (void)showAlertViewWithTitle:(NSString *)title message:(NSString *)message; -+ (void)showAlertViewWithTitle:(NSString *)title message:(NSString *)message actions:(NSArray *)actions; -+ (void)view:(UIView *)view centerInParent:(UIView *)parent; -+ (CGRect)safeAreaRect; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.h.meta deleted file mode 100644 index 25a1ade..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: a42eae1c9d740439fa853a94962a1899 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.m deleted file mode 100644 index 6aef98c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.m +++ /dev/null @@ -1,141 +0,0 @@ -// -// LUUIHelper.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUUIHelper.h" -#import "LULittleHelper.h" -#import "LUAvailability.h" - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -@interface LUAlertView : UIAlertView - -@property (nonatomic, strong) NSArray *actions; - --(instancetype)initWithTitle:(NSString *)title message:(NSString *)message actions:(NSArray *)actions; - -@end - -@implementation LUAlertView - -- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message actions:(NSArray *)actions -{ - self = [super initWithTitle:title message:message delegate:self cancelButtonTitle:nil otherButtonTitles:nil]; - if (self) { - _actions = actions; - for (LUAlertAction *action in actions) { - [self addButtonWithTitle:action.title]; - } - } - return self; -} - -- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex -{ - if (_actions[buttonIndex].handler) { - _actions[buttonIndex].handler(_actions[buttonIndex]); - } -} - -@end - -#pragma clang diagnostic pop - -@implementation LUAlertAction - -- (instancetype)initWithTitle:(NSString *)title handler:(void (^)(LUAlertAction * _Nonnull))handler -{ - self = [super init]; - if (self) { - _title = title; - _handler = handler; - } - return self; -} - -@end - -@implementation LUUIHelper - -+ (void)showAlertViewWithTitle:(NSString *)title message:(NSString *)message -{ - NSArray *actions = @[[[LUAlertAction alloc] initWithTitle:title handler:nil]]; - [self showAlertViewWithTitle:title message:message actions:actions]; -} - -+ (void)showAlertViewWithTitle:(NSString *)title message:(NSString *)message actions:(NSArray *)actions -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - LUAlertView *alertView = [[LUAlertView alloc] initWithTitle:title - message:message - actions:actions]; - [alertView show]; -#pragma clang diagnostic pop -} - -+ (void)view:(UIView *)view centerInParent:(UIView *)parent -{ - view.translatesAutoresizingMaskIntoConstraints = NO; - NSArray *constraints = @[ - [NSLayoutConstraint constraintWithItem:view - attribute:NSLayoutAttributeLeading - relatedBy:NSLayoutRelationEqual - toItem:parent - attribute:NSLayoutAttributeLeading - multiplier:1.0 - constant:0], - [NSLayoutConstraint constraintWithItem:view - attribute:NSLayoutAttributeTrailing - relatedBy:NSLayoutRelationEqual - toItem:parent - attribute:NSLayoutAttributeTrailing - multiplier:1.0 - constant:0], - [NSLayoutConstraint constraintWithItem:view - attribute:NSLayoutAttributeTop - relatedBy:NSLayoutRelationEqual - toItem:parent - attribute:NSLayoutAttributeTop - multiplier:1.0 - constant:0], - [NSLayoutConstraint constraintWithItem:view - attribute:NSLayoutAttributeBottom - relatedBy:NSLayoutRelationEqual - toItem:parent - attribute:NSLayoutAttributeBottom - multiplier:1.0 - constant:0] - ]; - [NSLayoutConstraint activateConstraints:constraints]; -} - -+ (CGRect)safeAreaRect -{ - if (@available(iOS 11.0, *)) { - return [UIApplication sharedApplication].keyWindow.safeAreaLayoutGuide.layoutFrame; - } - - return [UIScreen mainScreen].bounds; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.m.meta deleted file mode 100644 index 95ffb44..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUUIHelper.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: b899a560e6caf4dd09e8e7161ea61df5 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.h deleted file mode 100644 index dade388..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// LUViewController.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@class LUConsolePopupButton; -@class LUConsolePopupController; - -@interface LUViewController : UIViewController - -@property (nonatomic, weak, readonly) LUConsolePopupController *popupController; -@property (nonatomic, strong) NSArray *popupButtons; -@property (nonatomic, strong) NSString *popupTitle; -@property (nonatomic, strong) UIImage *popupIcon; - -- (void)addChildController:(UIViewController *)childController withFrame:(CGRect)frame; -- (void)removeChildController:(UIViewController *)childController; - -- (CGSize)preferredPopupSize; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.h.meta deleted file mode 100644 index 642a222..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: cba323d8ccf7248e8b8713a17afb51de -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.m deleted file mode 100644 index b504234..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// LUViewController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUViewController.h" - -#import "Lunar.h" - -@interface LUViewController () - -@property (nonatomic, weak) LUConsolePopupController *popupController; - -@end - -@implementation LUViewController - -#pragma mark - -#pragma mark Status Bar Management - -- (BOOL)prefersStatusBarHidden -{ - return YES; -} - -#pragma mark - -#pragma mark Interface Orientation - -- (BOOL)shouldAutorotate -{ - return NO; -} - -#pragma mark - -#pragma mark Popup controller - -- (CGSize)preferredPopupSize -{ - return CGSizeZero; -} - -- (void)setPopupController:(LUConsolePopupController *)controller -{ - _popupController = controller; -} - -#pragma mark - -#pragma mark Child controllers - -- (void)addChildController:(UIViewController *)childController withFrame:(CGRect)frame -{ - [self addChildViewController:childController]; - childController.view.frame = frame; - [self.view addSubview:childController.view]; - [childController didMoveToParentViewController:self]; -} - -- (void)removeChildController:(UIViewController *)childController -{ - [childController willMoveToParentViewController:nil]; - [childController.view removeFromSuperview]; - [childController removeFromParentViewController]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.m.meta deleted file mode 100644 index 0ad40cc..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUViewController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 38af258408e154462b30d489fbf0ff9a -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.h b/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.h deleted file mode 100644 index 019ecc6..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// LUWindow.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUWindow : UIWindow - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.h.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.h.meta deleted file mode 100644 index cdb9911..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 0c005ec895a58447fb843508244c8406 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.m b/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.m deleted file mode 100644 index a1b7137..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.m +++ /dev/null @@ -1,34 +0,0 @@ -// -// LUWindow.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUWindow.h" - -#import "Lunar.h" - -@implementation LUWindow - -- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event -{ - return [self.rootViewController.view pointInside:point withEvent:event]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.m.meta b/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.m.meta deleted file mode 100644 index 46211f9..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/UI/LUWindow.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 05c369dd031664014b769d8087884999 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils.meta deleted file mode 100644 index 0f59603..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bff134b7c08e7446fa0896a0a97c928f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.h deleted file mode 100644 index 585dc13..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.h +++ /dev/null @@ -1,34 +0,0 @@ -// -// LUAssert.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -typedef void (^LUAssertHandler)(NSString *message); - -#define LUAssert(expression) if (!(expression)) __lunar_assert(#expression, __FILE__, __LINE__, __FUNCTION__) -#define LUAssertMsg(expression, msg) if (!(expression)) __lunar_assert_msg(#expression, __FILE__, __LINE__, __FUNCTION__, (msg)) -#define LUAssertMsgv(expression, msg, ...) if (!(expression)) __lunar_assert_msgv(#expression, __FILE__, __LINE__, __FUNCTION__, (msg), __VA_ARGS__) - -void __lunar_assert(const char* expression, const char* file, int line, const char* function); -void __lunar_assert_msg(const char* expression, const char* file, int line, const char* function, NSString *message); -void __lunar_assert_msgv(const char* expression, const char* file, int line, const char* function, NSString *format, ...); -void LUAssertSetHandler(LUAssertHandler handler); \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.h.meta deleted file mode 100644 index b86638f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: ac1a459aae5914e2e88452eca449f15d -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.m deleted file mode 100644 index b9a3b89..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// LUAssert.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUAssert.h" - -#import "Lunar.h" - -static LUAssertHandler _assertHandler; - -void __lunar_assert(const char* expression, const char* file, int line, const char* function) -{ - __lunar_assert_msg(expression, file, line, function, @""); -} - -void __lunar_assert_msg(const char* expression, const char* file, int line, const char* function, NSString *message) -{ - __lunar_assert_msgv(expression, file, line, function, message); -} - -void __lunar_assert_msgv(const char* expressionCStr, const char* fileCStr, int line, const char* functionCStr, NSString *format, ...) -{ - va_list ap; - va_start(ap, format); - - NSString *message = [[NSString alloc] initWithFormat:format arguments:ap]; - NSString *consoleMessage = [[NSString alloc] initWithFormat:@"LUNAR/ASSERT: (%s) in %s:%d %s message:'%@'", - expressionCStr, fileCStr, line, functionCStr, message]; - - NSLog(@"%@", consoleMessage); - - if (_assertHandler) - { - _assertHandler(consoleMessage); - } - - - va_end(ap); -} -void LUAssertSetHandler(LUAssertHandler handler) -{ - if (_assertHandler != handler) - { - _assertHandler = [handler copy]; - } -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.m.meta deleted file mode 100644 index f18247b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAssert.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: d1bc5f99e13b848b2aa0ffed908c04ac -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.h deleted file mode 100644 index ff960aa..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// LUAvailability.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#ifndef __IPHONE_9_0 -#define __IPHONE_9_0 90000 -#endif - -#define LU_SYSTEM_VERSION_MIN __IPHONE_9_0 - -#define LU_IOS_VERSION_AVAILABLE(sys_ver) lunar_ios_version_available(sys_ver) -#define LU_IOS_MIN_VERSION_AVAILABLE (LU_IOS_VERSION_AVAILABLE(LU_SYSTEM_VERSION_MIN)) -#define LU_SELECTOR_AVAILABLE(obj, sel) [(obj) respondsToSelector:@selector(sel)] -#define LU_CLASS_AVAILABLE(className) (NSClassFromString(@#className) != nil) - -typedef NSUInteger LUSystemVersion; - -BOOL lunar_ios_version_available(LUSystemVersion version); diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.h.meta deleted file mode 100644 index 921688e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: e44bc7e40c4124079bb8207e3f5d110d -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.m deleted file mode 100644 index 2da815b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// LUAvailability.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#import "LUAvailability.h" - -static LUSystemVersion _systemVersion; - -BOOL lunar_ios_version_available(LUSystemVersion version) -{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - - NSArray *tokens = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; - int multiplier = 10000; - - _systemVersion = 0; - for (int i = 0; i < tokens.count; ++i) - { - int val = [[tokens objectAtIndex:i] intValue]; - _systemVersion += val * multiplier; - multiplier /= 100; - } - - NSLog(@"System version: %ld", (unsigned long)_systemVersion); - }); - - return _systemVersion >= version; -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.m.meta deleted file mode 100644 index 579130c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUAvailability.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 9f6b7195202544b6992e32d706c95e37 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUDefines.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUDefines.h deleted file mode 100644 index b9dec7c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUDefines.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// LUDefines.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#if !defined(LU_INLINE) -# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -# define LU_INLINE static inline -# elif defined(__cplusplus) -# define LU_INLINE static inline -# elif defined(__GNUC__) -# define LU_INLINE static __inline__ -# else -# define LU_INLINE static -# endif -#endif - -#define LU_SHOULD_IMPLEMENT_METHOD \ - NSLog(@"%@ should implement %@ method", NSStringFromClass([self class]), NSStringFromSelector(_cmd)); - -#if __has_feature(objc_arc) - #define LU_WEAK __weak -#else - #define LU_WEAK -#endif - -#if LUNAR_CONSOLE_DEVELOPMENT - #define LU_SET_ACCESSIBILITY_IDENTIFIER(VIEW, IDENTIFIER) { (VIEW).isAccessibilityElement = YES; (VIEW).accessibilityIdentifier = (IDENTIFIER); } -#else - #define LU_SET_ACCESSIBILITY_IDENTIFIER(VIEW, IDENTIFIER) -#endif diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUDefines.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUDefines.h.meta deleted file mode 100644 index 54e94aa..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUDefines.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 290c1b230d356429d8783e050fdb2f12 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.h deleted file mode 100644 index 7d55f3b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// LUFileUtils.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -NSString *LUGetDocumentsDir(void); -NSString *LUGetDocumentsFile(NSString *name); - -BOOL LUFileExists(NSString *path); diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.h.meta deleted file mode 100644 index 2f7bebe..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: e00ada1c15eb640bf867abf2421d30ff -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.m deleted file mode 100644 index 73d0950..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// LUFileUtils.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUFileUtils.h" - -NSString *LUGetDocumentsDir() -{ - NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - return [searchPaths objectAtIndex:0]; -} - -NSString *LUGetDocumentsFile(NSString *name) -{ - NSString *documentsDir = LUGetDocumentsDir(); - return [documentsDir stringByAppendingPathComponent:name]; -} - -BOOL LUFileExists(NSString *path) -{ - return path != nil && [[NSFileManager defaultManager] fileExistsAtPath:path]; -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.m.meta deleted file mode 100644 index 1448c42..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUFileUtils.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: d1eaa9b1194584aae8c92bc3848b8880 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.h deleted file mode 100644 index 5d87199..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// LUImageUtils.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -UIImage *LUGetImage(NSString *name); -UIImage *LUGet3SlicedImage(NSString *name); - -UIColor * LUUIColorFromRGB(NSUInteger value); diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.h.meta deleted file mode 100644 index 988f112..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: db746815e89c44968b795ee7e71aec9e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.m deleted file mode 100644 index d0b6b58..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// LUImageUtils.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUImageUtils.h" -#import "Lunar.h" - -UIImage *LUGetImage(NSString *name) -{ - UIImage *image = [UIImage imageNamed:name]; - LUAssertMsgv(image != nil, @"Can't load image: %@", name); - return image; -} - -UIImage *LUGet3SlicedImage(NSString *name) -{ - UIImage *image = LUGetImage(name); - LUAssertMsgv(((int)image.size.width) % 3 == 0, @"3 sliced image has wrong width: %g", image.size.width); - return [image stretchableImageWithLeftCapWidth:image.size.width / 3 topCapHeight:0]; -} - -UIColor * LUUIColorFromRGB(NSUInteger value) { - static const float multipler = 1.0 / 255.0; - return [UIColor colorWithRed:((float)((value & 0xFF000000) >> 24)) * multipler - green:((float)((value & 0xFF0000) >> 16)) * multipler - blue:((float)((value & 0xFF00) >> 8)) * multipler - alpha:((float)(value & 0xFF)) * multipler]; -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.m.meta deleted file mode 100644 index 5076db1..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUImageUtils.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: db6e9fb99aaf3426793f0dcb8b6ca4c4 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.h deleted file mode 100644 index e22d205..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// LULittleHelper.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -// UI-related functions -void LUDisplayAlertView(NSString *title, NSString *message); -CGRect LUGetScreenBounds(void); - -UIInterfaceOrientation LUGetInterfaceOrientation(void); -BOOL LUIsPortraitInterfaceOrientation(void); -BOOL LUIsLandscapeInterfaceOrientation(void); diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.h.meta deleted file mode 100644 index 94a6588..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: aa1494994db60463bb096743520bb5c0 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.m deleted file mode 100644 index 1e256bb..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.m +++ /dev/null @@ -1,69 +0,0 @@ -// -// LULittleHelper.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LULittleHelper.h" - -#import "Lunar.h" - -void LUDisplayAlertView(NSString *title, NSString *message) -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title - message:message - delegate:nil - cancelButtonTitle:@"OK" - otherButtonTitles:nil]; - [alertView show]; -#pragma clang diagnostic pop -} - -CGRect LUGetScreenBounds() -{ - if (LU_IOS_VERSION_AVAILABLE(__IPHONE_8_0)) { - return [UIScreen mainScreen].bounds; - } - - CGRect screenSize = [UIScreen mainScreen].bounds; - if (LUIsLandscapeInterfaceOrientation()) { - CGFloat width = CGRectGetWidth(screenSize); - CGFloat height = CGRectGetHeight(screenSize); - screenSize.size = CGSizeMake(height, width); - } - - return screenSize; -} - -UIInterfaceOrientation LUGetInterfaceOrientation() -{ - return [UIApplication sharedApplication].statusBarOrientation; -} - -BOOL LUIsPortraitInterfaceOrientation(void) -{ - return UIInterfaceOrientationIsPortrait(LUGetInterfaceOrientation()); -} - -BOOL LUIsLandscapeInterfaceOrientation() -{ - return UIInterfaceOrientationIsLandscape(LUGetInterfaceOrientation()); -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.m.meta deleted file mode 100644 index 5bf7731..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LULittleHelper.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 35e01a2208503419cbb60474821753d4 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.h deleted file mode 100644 index bbc1531..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.h +++ /dev/null @@ -1,43 +0,0 @@ -// -// LUMutableArray.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUMutableArray : NSObject - -@property (nonatomic, readonly) NSUInteger count; // number of items added (exluding trimmed) -@property (nonatomic, readonly) NSUInteger totalCount; // total items added (might be more that count if trimmed) -@property (nonatomic, readonly) NSUInteger capacity; // can't be larger than that -@property (nonatomic, readonly) NSUInteger trimCount; // trimmed by this amount when overflows -@property (nonatomic, readonly) NSInteger trimmedCount; // number of items trimmed (0 if not overfloat) -@property (nonatomic, readonly) BOOL isTrimmed; // some elements has been removed to avoid an overfloat - -+ (instancetype)listWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount; -- (instancetype)initWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount; - -- (void)addObject:(id)object; -- (id)objectAtIndex:(NSUInteger)index; -- (id)objectAtIndexedSubscript:(NSUInteger)index; - -- (void)removeAllObjects; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.h.meta deleted file mode 100644 index 0d81bd4..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: df7818cf7f82c484196eac7a75fdb807 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.m deleted file mode 100644 index 87082e7..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.m +++ /dev/null @@ -1,114 +0,0 @@ -// -// LUMutableArray.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUMutableArray.h" - -#import "Lunar.h" - -@interface LUMutableArray () -{ - NSMutableArray * _objects; -} - -@end - -@implementation LUMutableArray - -+ (instancetype)listWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount -{ - return [[self alloc] initWithCapacity:capacity trimCount:trimCount]; -} - -- (instancetype)initWithCapacity:(NSUInteger)capacity trimCount:(NSUInteger)trimCount -{ - self = [super init]; - if (self) - { - _capacity = capacity; - _trimCount = trimCount; - _objects = [NSMutableArray new]; - } - return self; -} - - -#pragma mark - -#pragma mark Objects - -- (void)addObject:(id)object -{ - LUAssert(object); - if (object) - { - if (_objects.count == _capacity) // overflows? - { - [_objects removeObjectsInRange:NSMakeRange(0, _trimCount)]; // trim objects to get extra space - } - [_objects addObject:object]; - - ++_totalCount; // keep track of the total amount of objects added - } -} - -- (id)objectAtIndex:(NSUInteger)index -{ - return [_objects objectAtIndex:index]; -} - -- (id)objectAtIndexedSubscript:(NSUInteger)index -{ - return [_objects objectAtIndexedSubscript:index]; -} - -- (void)removeAllObjects -{ - _objects = [NSMutableArray new]; - _totalCount = 0; -} - -#pragma mark - -#pragma mark NSFastEnumeration - -- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len -{ - return [_objects countByEnumeratingWithState:state objects:buffer count:len]; -} - -#pragma mark - -#pragma mark Properties - -- (NSUInteger)count -{ - return _objects.count; -} - -- (NSInteger)trimmedCount -{ - return _totalCount - _objects.count; -} - -- (BOOL)isTrimmed -{ - return [self trimmedCount] > 0; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.m.meta deleted file mode 100644 index 32a6b17..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUMutableArray.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 756adf359aaa14e8aacaee5958df7669 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.h deleted file mode 100644 index 01a26ca..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// LUNotificationCenter.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@protocol LUNotificationCenterImpl - -- (void)addObserver:(id)observer selector:(SEL)selector name:(NSNotificationName)name object:(id)object; -- (void)removeObserver:(id)observer; -- (void)removeObserver:(id)observer name:(NSNotificationName)name object:(id)object; -- (void)postNotificationName:(NSNotificationName)name object:(id)object userInfo:(NSDictionary *)userInfo; - -@end - -@interface LUNotificationCenter : NSObject - -+ (void)setImpl:(id)impl; - -+ (void)addObserver:(id)observer selector:(SEL)selector name:(NSNotificationName)name object:(id)object; -+ (void)removeObserver:(id)observer; -+ (void)removeObserver:(id)observer name:(NSNotificationName)name object:(id)object; - -+ (void)postNotificationName:(NSNotificationName)name object:(id)object; -+ (void)postNotificationName:(NSNotificationName)name object:(id)object userInfo:(NSDictionary *)userInfo; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.h.meta deleted file mode 100644 index b635e6e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 3b039b0e9088e4613a6de79832065cd9 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.m deleted file mode 100644 index 0464549..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.m +++ /dev/null @@ -1,97 +0,0 @@ -// -// LUNotificationCenter.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUNotificationCenter.h" - -#import "Lunar.h" - -static id _impl; - -@interface LUNotificationCenterDefault : NSObject - -@end - -@implementation LUNotificationCenter - -+ (void)initialize -{ - if ([self class] == [LUNotificationCenter class]) - { - [self setImpl:[LUNotificationCenterDefault new]]; - } -} - -+ (void)setImpl:(id)impl -{ - _impl = impl ? impl : [LUNotificationCenterDefault new]; -} - -+ (void)addObserver:(id)observer selector:(SEL)selector name:(NSNotificationName)name object:(id)object -{ - [_impl addObserver:observer selector:selector name:name object:object]; -} - -+ (void)removeObserver:(id)observer -{ - [_impl removeObserver:observer]; -} - -+ (void)removeObserver:(id)observer name:(NSNotificationName)name object:(id)object -{ - [_impl removeObserver:observer name:name object:object]; -} - -+ (void)postNotificationName:(NSNotificationName)name object:(id)object -{ - [self postNotificationName:name object:object userInfo:nil]; -} - -+ (void)postNotificationName:(NSNotificationName)name object:(id)object userInfo:(NSDictionary *)userInfo -{ - [_impl postNotificationName:name object:object userInfo:userInfo]; -} - -@end - -@implementation LUNotificationCenterDefault - -- (void)addObserver:(id)observer selector:(SEL)selector name:(NSNotificationName)name object:(id)object -{ - [[NSNotificationCenter defaultCenter] addObserver:observer selector:selector name:name object:object]; -} - -- (void)removeObserver:(id)observer -{ - [[NSNotificationCenter defaultCenter] removeObserver:observer]; -} - -- (void)removeObserver:(id)observer name:(NSNotificationName)name object:(id)object -{ - [[NSNotificationCenter defaultCenter] removeObserver:observer name:name object:object]; -} - -- (void)postNotificationName:(NSNotificationName)name object:(id)object userInfo:(NSDictionary *)userInfo -{ - [[NSNotificationCenter defaultCenter] postNotificationName:name object:object userInfo:userInfo]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.m.meta deleted file mode 100644 index a0a2533..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUNotificationCenter.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: b834a0516e963408bb1a910522fa0387 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.h deleted file mode 100644 index d670ea0..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// LUObject.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUObject : NSObject - -- (void)registerNotificationName:(NSString *)name selector:(SEL)selector; -- (void)unregisterNotifications; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.h.meta deleted file mode 100644 index f9fa574..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 6bc89de7ceb394cdeae4c51c918d7881 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.m deleted file mode 100644 index e41b358..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// LUObject.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUObject.h" - -#import "Lunar.h" - -@implementation LUObject - -- (void)dealloc -{ - [self unregisterNotifications]; -} - -#pragma mark - -#pragma mark Notifications - -- (void)registerNotificationName:(NSString *)name selector:(SEL)selector -{ - [LUNotificationCenter addObserver:self selector:selector name:name object:nil]; -} - -- (void)unregisterNotifications -{ - [LUNotificationCenter removeObserver:self]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.m.meta deleted file mode 100644 index af40f92..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUObject.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: ba7c66f4fb3d84ec8b36ec6a652eef6f -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.h deleted file mode 100644 index 898d3ee..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// LUSerializableObject.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUSerializableObject : NSObject - -+ (instancetype)loadFromFile:(NSString *)filename; -+ (instancetype)loadFromFile:(NSString *)filename initDefault:(BOOL)initDefault; - -- (instancetype)initWithFilename:(NSString *)filename; -- (BOOL)save; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.h.meta deleted file mode 100644 index d865d8b..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 995fe85466d5f4d66b345ac2e2ff26ee -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.m deleted file mode 100644 index bc48386..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.m +++ /dev/null @@ -1,120 +0,0 @@ -// -// LUSerializableObject.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUSerializableObject.h" - -#import "Lunar.h" - -@interface LUSerializableObject () -{ - NSString * _filename; -} - -@end - -@implementation LUSerializableObject - -+ (instancetype)loadFromFile:(NSString *)filename -{ - return [self loadFromFile:filename initDefault:YES]; -} - -+ (instancetype)loadFromFile:(NSString *)filename initDefault:(BOOL)initDefault -{ - id object = LUDeserializeObject(filename); - if (object != nil) - { - [object setFilename:filename]; - return object; - } - - return initDefault ? [[self alloc] initWithFilename:filename] : nil; -} - -- (instancetype)initWithFilename:(NSString *)filename -{ - self = [super init]; - if (self) - { - _filename = filename; - [self initDefaults]; - } - return self; -} - -#pragma mark - -#pragma mark NSCoding - -- (instancetype)initWithCoder:(NSCoder *)aDecoder -{ - self = [super init]; - if (self) - { - [self initDefaults]; - - NSInteger version = [aDecoder decodeIntegerForKey:@"version"]; - if (version == [[self class] version]) - { - [self deserializeWithDecoder:aDecoder]; - } - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)aCoder -{ - [aCoder encodeInteger:[[self class] version] forKey:@"version"]; - [self serializeWithCoder:aCoder]; -} - -#pragma mark - -#pragma mark Save - -- (BOOL)save -{ - return LUSerializeObject(self, _filename); -} - -#pragma mark - -#pragma mark Inheritance - -- (void)initDefaults -{ -} - -- (void)serializeWithCoder:(NSCoder *)coder -{ -} - -- (void)deserializeWithDecoder:(NSCoder *)decoder -{ -} - -#pragma mark - -#pragma mark Getters/Setters - -- (void)setFilename:(NSString *)filename -{ - _filename = filename; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.m.meta deleted file mode 100644 index 6201ff2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializableObject.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 763417b2b5c52461db1351c3368b8272 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.h deleted file mode 100644 index 68a1562..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// LUSerializationUtils.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -BOOL LUSerializeObject(id object, NSString *filename); -id LUDeserializeObject(NSString *filename); diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.h.meta deleted file mode 100644 index a0bd4ae..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: d1d6db81101a7474a9d1d13d3c25b570 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.m deleted file mode 100644 index 9c1e576..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.m +++ /dev/null @@ -1,51 +0,0 @@ -// -// LUSerializationUtils.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUSerializationUtils.h" - -#import "Lunar.h" - -BOOL LUSerializeObject(id object, NSString *filename) -{ - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object]; - if (data == nil) - { - return NO; - } - - NSString *path = LUGetDocumentsFile(filename); - [data writeToFile:path atomically:YES]; - - return YES; -} - -id LUDeserializeObject(NSString *filename) -{ - NSString *path = LUGetDocumentsFile(filename); - NSData *data = [NSData dataWithContentsOfFile:path]; - if (data == nil) - { - return nil; - } - - return [NSKeyedUnarchiver unarchiveObjectWithData:data]; -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.m.meta deleted file mode 100644 index 0dd8e1a..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSerializationUtils.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 207562e51223441b29fdf2d29f2c2e13 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.h deleted file mode 100644 index cf5a288..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.h +++ /dev/null @@ -1,41 +0,0 @@ -// -// LUSortedList.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUSortedList : NSObject - -@property (nonatomic, readonly) NSUInteger count; -@property (nonatomic, readonly, nonnull) NSArray *innerArray; -@property (nonatomic, assign, getter=isSortingEnabled) BOOL sortingEnabled; - -- (nonnull id)objectAtIndex:(NSUInteger)index; -- (nonnull id)objectAtIndexedSubscript:(NSUInteger)index; - -- (NSUInteger)addObject:(nonnull id)object; -- (void)removeObject:(nonnull id)object; -- (void)removeObjectAtIndex:(NSUInteger)index; -- (void)removeAllObjects; - -- (NSInteger)indexOfObject:(nonnull id)object; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.h.meta deleted file mode 100644 index d37499d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 59dde7e9aa1bf462aa9d28706b0c7600 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.m deleted file mode 100644 index e470bd3..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// LUSortedList.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "Lunar.h" - -#import "LUSortedList.h" - -@interface LUSortedList () -{ - NSMutableArray * _array; -} - -@end - -@implementation LUSortedList - -- (instancetype)init -{ - self = [super init]; - if (self) - { - _array = [NSMutableArray new]; - _sortingEnabled = YES; - } - return self; -} - -#pragma mark - -#pragma mark Objects - -- (nonnull id)objectAtIndex:(NSUInteger)index -{ - return [_array objectAtIndex:index]; -} - -- (nonnull id)objectAtIndexedSubscript:(NSUInteger)index -{ - return [_array objectAtIndexedSubscript:index]; -} - -- (NSUInteger)addObject:(nonnull id)object -{ - LUAssert(object != nil); - LUAssertMsgv([object respondsToSelector:@selector(compare:)], - @"Can't add non-comparable object to a sorted list: %@", [object class]); - - if (object != nil) - { - if (_sortingEnabled && [object respondsToSelector:@selector(compare:)]) - { - // TODO: use binary search to insert in a sorted order - for (NSUInteger i = 0; i < _array.count; ++i) - { - NSComparisonResult comparisonResult = [object compare:_array[i]]; - if (comparisonResult == NSOrderedAscending) - { - [_array insertObject:object atIndex:i]; - return i; - } - else if (comparisonResult == NSOrderedSame) - { - _array[i] = object; - return i; - } - } - } - - [_array addObject:object]; - return _array.count - 1; - } - - return NSNotFound; -} - -- (void)removeObject:(nonnull id)object -{ - LUAssert(object != nil); - if (object != nil) - { - [_array removeObject:object]; - } -} - -- (void)removeObjectAtIndex:(NSUInteger)index -{ - [_array removeObjectAtIndex:index]; -} - -- (void)removeAllObjects -{ - [_array removeAllObjects]; -} - -- (NSInteger)indexOfObject:(nonnull id)object -{ - LUAssert(object != nil); - return object != nil ? [_array indexOfObject:object] : -1; -} - -#pragma mark - -#pragma mark NSFastEnumeration - -- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len -{ - return [_array countByEnumeratingWithState:state objects:buffer count:len]; -} - -#pragma mark - -#pragma mark Properties - -- (NSUInteger)count -{ - return _array.count; -} - -- (NSArray *)innerArray -{ - return _array; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.m.meta deleted file mode 100644 index a1d2b81..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUSortedList.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 9c68da73c5ae14a8d88c3ab7b0f9e9c7 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.h deleted file mode 100644 index 90efd1c..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// LUStacktrace.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -@interface LUStacktrace : NSObject - -+ (NSString *)optimizeStacktrace:(NSString *)stacktrace; - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.h.meta deleted file mode 100644 index 1a5bdc4..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 87bc347cd66c1444e8059ab2b5e15150 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.m deleted file mode 100644 index 4eeb8ad..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// LUStacktrace.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUStacktrace.h" - -static NSString * const MARKER_AT = @" (at "; -static NSString * const MARKER_ASSETS = @"/Assets/"; - -@implementation LUStacktrace - -+ (NSString *)optimizeStacktrace:(NSString *)stacktrace -{ - if (stacktrace.length > 0) - { - NSArray *lines = [stacktrace componentsSeparatedByString:@"\n"]; - NSMutableArray *newLines = [NSMutableArray arrayWithCapacity:lines.count]; - for (NSString *line in lines) - { - [newLines addObject:[self optimizeLine:line]]; - } - - return [newLines componentsJoinedByString:@"\n"]; - } - - return nil; -} - -+ (NSString *)optimizeLine:(NSString *)line -{ - NSRange startRange = [line rangeOfString:MARKER_AT]; - if (startRange.location == NSNotFound) return line; - - NSRange endRange = [line rangeOfString:MARKER_ASSETS options:NSBackwardsSearch]; - if (endRange.location == NSNotFound) return line; - - NSString *s1 = [line substringWithRange:NSMakeRange(0, startRange.location + startRange.length)]; - NSString *s2 = [line substringFromIndex:endRange.location + 1]; - - return [s1 stringByAppendingString:s2]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.m.meta deleted file mode 100644 index 81f5618..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStacktrace.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 238fc6f3ec1424376bf40bfcdf1c2a59 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.h deleted file mode 100644 index 44d9219..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// LUStringUtils.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -BOOL LUStringTryParseInteger(NSString *str, NSInteger *outResult); -BOOL LUStringTryParseHex(NSString *str, NSUInteger *outResult); -BOOL LUStringTryParseFloat(NSString *str, float *outResult); -NSString *LUSerializeDictionaryToString(NSDictionary *data); diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.h.meta deleted file mode 100644 index 640e935..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 239d5dc260bf94a21bbd38601c2da974 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.m deleted file mode 100644 index 1f6cdc0..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// LUStringUtils.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUStringUtils.h" - -#import "Lunar.h" - -static inline NSNumber *LUNumberFromString(NSString *str) -{ - NSNumberFormatter *numberFormatter = [NSNumberFormatter new]; - numberFormatter.numberStyle = NSNumberFormatterDecimalStyle; - NSNumber *number = [numberFormatter numberFromString:str]; - - return number; -} - -BOOL LUStringTryParseInteger(NSString *str, NSInteger *outResult) -{ - NSNumber *number = LUNumberFromString(str); - if (number) - { - // FIXME: find a better way of telling if number is integer - NSString *decimalSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator]; - if ([str rangeOfString:decimalSeparator].location == NSNotFound) - { - if (outResult) *outResult = number.integerValue; - return YES; - } - } - - return NO; -} - -BOOL LUStringTryParseHex(NSString *str, NSUInteger *outResult) -{ - if (str.length > 0) - { - NSUInteger base = 1; - NSUInteger result = 0; - - for (NSInteger i = str.length - 1; i >= 0; i--) { - int c = [str characterAtIndex:i]; - if (c >= '0' && c <= '9') - { - result += (c - '0') * base; - } - else if (c >= 'A' && c <= 'F') - { - result += (c - 'A' + 10) * base; - } - else if (c >= 'a' && c <= 'f') - { - result += (c - 'a' + 10) * base; - } - else - { - return NO; - } - base = base * 16; - } - - if (outResult) *outResult = result; - - return YES; - } - - return NO; -} - -BOOL LUStringTryParseFloat(NSString *str, float *outResult) -{ - NSNumber *number = LUNumberFromString(str); - if (number) - { - if (outResult) *outResult = number.floatValue; - return YES; - } - - return NO; -} - -NSString *LUSerializeDictionaryToString(NSDictionary *data) -{ - if (data.count == 0) return @""; - - NSMutableString *result = [NSMutableString string]; - NSInteger index = 0; - for (id key in data) - { - id value = [[data objectForKey:key] description]; - value = [value stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; // we use new lines as separators - [result appendFormat:@"%@:%@", key, value]; - if (++index < data.count) - { - [result appendString:@"\n"]; - } - } - - return result; -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.m.meta deleted file mode 100644 index da383ad..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUStringUtils.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 1ab682c2bb10f4cad82f35843504b70e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.h deleted file mode 100644 index 2574ac5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// LUThreading.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import - -#ifndef __LunarConsole_LunarThreading__ -#define __LunarConsole_LunarThreading__ - -OBJC_EXTERN void lunar_dispatch_main(dispatch_block_t); - -#endif /* defined(__LunarConsole_LunarThreading__) */ \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.h.meta deleted file mode 100644 index ff85f6f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: aba03808cdeca4e61b5dc1a19c62d577 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.m b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.m deleted file mode 100644 index 8c0cc64..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// LUThreading.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUThreading.h" - -#import "LUAssert.h" - -void lunar_dispatch_main(dispatch_block_t block) -{ - LUAssert(block != nil); - if (block != nil) - { - if ([NSThread isMainThread]) - { - block(); - } - else - { - dispatch_async(dispatch_get_main_queue(), block); - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.m.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.m.meta deleted file mode 100644 index 2b8d807..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUThreading.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 0542e5d672aed44849002d62477a6c8b -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUUtils.h b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUUtils.h deleted file mode 100644 index 1c663ad..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUUtils.h +++ /dev/null @@ -1,43 +0,0 @@ -// -// LUUtils.h -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUAssert.h" -#import "LUAvailability.h" -#import "LUDefines.h" -#import "LUFileUtils.h" -#import "LUImageUtils.h" -#import "LULittleHelper.h" -#import "LUMutableArray.h" -#import "LUNotificationCenter.h" -#import "LUObject.h" -#import "LUSerializableObject.h" -#import "LUSerializationUtils.h" -#import "LUSortedList.h" -#import "LUStacktrace.h" -#import "LUStringUtils.h" -#import "LUThreading.h" - -LU_INLINE BOOL -LUFloatApprox(float a, float b) -{ - return fabsf(a - b) < 0.00001; -} diff --git a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUUtils.h.meta b/Assets/LunarConsole/Editor/iOS/Common/Utils/LUUtils.h.meta deleted file mode 100644 index 642797e..0000000 --- a/Assets/LunarConsole/Editor/iOS/Common/Utils/LUUtils.h.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: fe79a3b4a818c492089155405cfbdd82 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free.meta b/Assets/LunarConsole/Editor/iOS/Free.meta deleted file mode 100644 index 26f4a68..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d43971f72a084449d90badafe3058743 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Console.meta b/Assets/LunarConsole/Editor/iOS/Free/Console.meta deleted file mode 100644 index 4eed348..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Console.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b876bb41a583b4c52b93966ece1b6edc -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin.meta b/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin.meta deleted file mode 100644 index 0b323ef..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 35adec4a2922d4d7d948be8ea1c8af15 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin/LUConsolePluginImp.m b/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin/LUConsolePluginImp.m deleted file mode 100644 index 1576cd2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin/LUConsolePluginImp.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// LUConsolePluginImp.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUConsolePluginImp.h" - -BOOL LUConsoleIsFreeVersion = YES; -BOOL LUConsoleIsFullVersion = NO; - -@implementation LUConsolePluginImp - -- (instancetype)initWithPlugin:(LUConsolePlugin *)plugin -{ - self = [super init]; - if (self) - { - } - return self; -} - -- (void)showOverlay -{ -} - -- (void)hideOverlay -{ -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin/LUConsolePluginImp.m.meta b/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin/LUConsolePluginImp.m.meta deleted file mode 100644 index ebc4af1..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Console/Plugin/LUConsolePluginImp.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: cba724e88f8104dd48546366656f731c -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers.meta b/Assets/LunarConsole/Editor/iOS/Free/Controllers.meta deleted file mode 100644 index 57f6291..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1dd1aa472e8014f55bf3550f988e7311 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions.meta b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions.meta deleted file mode 100644 index b30af1d..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e573c3c249f264a08aebf05df54202b9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionController.m b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionController.m deleted file mode 100644 index 87ad5e3..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionController.m +++ /dev/null @@ -1,36 +0,0 @@ -// -// LUActionController.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUActionController.h" -#import "LUActionControllerBase_Inheritance.h" - -@implementation LUActionController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - self.noActionsWarningLabel.text = @"Not available in free version"; - [self.learnMoreButton setTitle:@"Learn about PRO version..." forState:UIControlStateNormal]; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionController.m.meta b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionController.m.meta deleted file mode 100644 index 2fe15fc..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionController.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: bd217423e0a294bb19edc3e1fa594dd5 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionRegistry.m b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionRegistry.m deleted file mode 100644 index ff06293..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionRegistry.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// LUActionRegistry.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "Lunar.h" - -#import "LUActionRegistry.h" - -@implementation LUActionRegistry - -+ (instancetype)registry -{ - return [[self alloc] init]; -} - -- (instancetype)init -{ - self = [super init]; - if (self) - { - } - return self; -} - -#pragma mark - -#pragma mark Actions - -- (LUAction *)registerActionWithId:(int)actionId name:(NSString *)actionName -{ - return nil; -} - -- (BOOL)unregisterActionWithId:(int)actionId -{ - return NO; -} - -#pragma mark - -#pragma mark Variables - -- (LUCVar *)registerVariableWithId:(int)variableId name:(NSString *)name typeName:(NSString *)typeName value:(NSString *)value defaultValue:(NSString *)defaultValue -{ - return nil; -} - -- (LUCVar *)registerVariableWithId:(int)variableId name:(NSString *)name typeName:(NSString *)type value:(NSString *)value defaultValue:(NSString *)defaultValue values:(NSArray *)values -{ - return nil; -} - -- (void)setValue:(NSString *)value forVariableWithId:(int)variableId -{ -} - -- (LUCVar *)variableWithId:(int)variableId -{ - return nil; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionRegistry.m.meta b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionRegistry.m.meta deleted file mode 100644 index f796e91..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Actions/LUActionRegistry.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 095cba87143f344a4a498d9cd9aaa14e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables.meta b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables.meta deleted file mode 100644 index 44b0bb2..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 202cc9fe7569b4d88b740cdc01fc7675 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables/LUCVar.m b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables/LUCVar.m deleted file mode 100644 index 7df7a7f..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables/LUCVar.m +++ /dev/null @@ -1,108 +0,0 @@ -// -// LUCVar.m -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#import "LUCVar.h" - -#import "Lunar.h" - -NSString * const LUCVarTypeNameBoolean = @"Boolean"; -NSString * const LUCVarTypeNameInteger = @"Integer"; -NSString * const LUCVarTypeNameFloat = @"Float"; -NSString * const LUCVarTypeNameString = @"String"; -NSString * const LUCVarTypeNameEnum = @"Enum"; -NSString * const LUCVarTypeNameUnknown = @"Unknown"; - -@implementation LUCVar - -+ (instancetype)variableWithId:(int)entryId - name:(NSString *)name - value:(NSString *)value - defaultValue:(NSString *)defaultValue - type:(LUCVarType)type - cellClass:(Class)cellClass -{ - return [[self alloc] initWithId:entryId name:name value:value defaultValue:defaultValue type:type cellClass:cellClass]; -} - -- (instancetype)initWithId:(int)entryId name:(NSString *)name - value:(NSString *)value - defaultValue:(NSString *)defaultValue - type:(LUCVarType)type - cellClass:(Class)cellClass -{ - self = [super initWithId:entryId name:name]; - if (self) - { - } - return self; -} - -#pragma mark - -#pragma mark Default value - -- (void)resetToDefaultValue -{ -} - -#pragma mark - -#pragma mark Flags - -- (BOOL)hasFlag:(LUCVarFlags)flag -{ - return NO; -} - -#pragma mark - -#pragma mark UITableView - -- (UITableViewCell *)tableView:(UITableView *)tableView cellAtIndex:(NSUInteger)index -{ - return nil; -} - -#pragma mark - -#pragma mark Lookup - -+ (LUCVarType)typeForName:(NSString *)type -{ - return LUCVarTypeUnknown; -} - -+ (NSString *)typeNameForType:(LUCVarType)type -{ - return LUCVarTypeNameUnknown; -} - -#pragma mark - -#pragma mark Properties - -- (BOOL)isDefaultValue -{ - return NO; -} - -- (BOOL)hasRange -{ - return NO; -} - -@end diff --git a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables/LUCVar.m.meta b/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables/LUCVar.m.meta deleted file mode 100644 index d11fc86..0000000 --- a/Assets/LunarConsole/Editor/iOS/Free/Controllers/Variables/LUCVar.m.meta +++ /dev/null @@ -1,27 +0,0 @@ -fileFormatVersion: 2 -guid: 0a9a04807bb6347cda5764028e45e8db -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/iOS/Lunar.projmods b/Assets/LunarConsole/Editor/iOS/Lunar.projmods deleted file mode 100644 index 5f169b5..0000000 --- a/Assets/LunarConsole/Editor/iOS/Lunar.projmods +++ /dev/null @@ -1,195 +0,0 @@ -{ - "group": "Lunar Console", - "frameworks": [ - "MessageUI.framework" - ], - "files": [ - "Free/Controllers/Variables/LUCVar.m", - "Free/Controllers/Actions/LUActionController.m", - "Free/Controllers/Actions/LUActionRegistry.m", - "Free/Console/Plugin/LUConsolePluginImp.m", - "Common/UI/LUPassTouchView.h", - "Common/UI/LUViewController.m", - "Common/UI/LUButton.m", - "Common/UI/LUSlider.m", - "Common/UI/LUTableView.m", - "Common/UI/LUUIHelper.m", - "Common/UI/LUToggleButton.m", - "Common/UI/LUWindow.h", - "Common/UI/LUPanViewGestureRecognizer.m", - "Common/UI/LUTextField.h", - "Common/UI/LUActionButton.m", - "Common/UI/LUSwitch.m", - "Common/UI/LUTheme.m", - "Common/UI/LUButton.h", - "Common/UI/LUViewController.h", - "Common/UI/LUPassTouchView.m", - "Common/UI/LUToggleButton.h", - "Common/UI/LUTableView.h", - "Common/UI/LUUIHelper.h", - "Common/UI/LUSlider.h", - "Common/UI/LUPanViewGestureRecognizer.h", - "Common/UI/LUWindow.m", - "Common/UI/LUTheme.h", - "Common/UI/LUSwitch.h", - "Common/UI/LUActionButton.h", - "Common/UI/LUTextField.m", - "Common/Images/lunar_console_resize_handle_vertical.png", - "Common/Images/lunar_console_collapse_background@3x.png", - "Common/Images/lunar_console_icon_log_warning.png", - "Common/Images/lunar_console_icon_button_lock.png", - "Common/Images/lunar_console_icon_button_close.png", - "Common/Images/lunar_console_icon_button_unlock.png", - "Common/Images/lunar_console_icon_settings.png", - "Common/Images/lunar_console_collapse_background@2x.png", - "Common/Images/lunar_console_resize_handle_horizontal@3x.png", - "Common/Images/lunar_console_icon_button_lock@2x.png", - "Common/Images/lunar_console_icon_log_error@2x.png", - "Common/Images/lunar_console_actions_empty_warning@2x.png", - "Common/Images/lunar_console_icon_button_unlock@2x.png", - "Common/Images/lunar_console_icon_button_unlock@3x.png", - "Common/Images/lunar_console_icon_button_settings.png", - "Common/Images/lunar_console_actions_empty_warning@3x.png", - "Common/Images/lunar_console_icon_log_error@3x.png", - "Common/Images/lunar_console_icon_button_lock@3x.png", - "Common/Images/lunar_console_resize_handle_horizontal@2x.png", - "Common/Images/lunar_console_icon_log_warning@2x.png", - "Common/Images/lunar_console_icon_button_settings@2x.png", - "Common/Images/lunar_console_icon_button_email@3x.png", - "Common/Images/lunar_console_resize_handle_horizontal.png", - "Common/Images/lunar_console_icon_button_clear@2x.png", - "Common/Images/lunar_console_icon_log_error.png", - "Common/Images/lunar_console_log_button_background@3x.png", - "Common/Images/lunar_console_icon_log@3x.png", - "Common/Images/lunar_console_log_button_background.png", - "Common/Images/lunar_console_icon_button_close@3x.png", - "Common/Images/lunar_console_icon_settings@2x.png", - "Common/Images/lunar_console_resize_handle_vertical@3x.png", - "Common/Images/lunar_console_icon_button_clear.png", - "Common/Images/lunar_console_resize_handle_vertical@2x.png", - "Common/Images/lunar_console_icon_settings@3x.png", - "Common/Images/lunar_console_icon_button_close@2x.png", - "Common/Images/lunar_console_icon_log.png", - "Common/Images/lunar_console_collapse_background.png", - "Common/Images/lunar_console_icon_log@2x.png", - "Common/Images/lunar_console_log_button_background@2x.png", - "Common/Images/lunar_console_icon_button_clear@3x.png", - "Common/Images/lunar_console_icon_button_email@2x.png", - "Common/Images/lunar_console_icon_button_help.png", - "Common/Images/lunar_console_icon_button_settings@3x.png", - "Common/Images/lunar_console_icon_log_warning@3x.png", - "Common/Images/lunar_console_icon_button_console@2x.png", - "Common/Images/lunar_console_icon_button_clipboard@2x.png", - "Common/Images/lunar_console_icon_button_more@3x.png", - "Common/Images/lunar_console_icon_button_clipboard.png", - "Common/Images/lunar_console_icon_button_console.png", - "Common/Images/lunar_console_actions_empty_warning.png", - "Common/Images/lunar_console_icon_button_help@3x.png", - "Common/Images/lunar_console_icon_button_help@2x.png", - "Common/Images/lunar_console_icon_button_email.png", - "Common/Images/lunar_console_icon_button_more@2x.png", - "Common/Images/lunar_console_icon_button_clipboard@3x.png", - "Common/Images/lunar_console_icon_button_console@3x.png", - "Common/Images/lunar_console_icon_button_more.png", - "Common/Utils/LUSerializationUtils.m", - "Common/Utils/LUThreading.m", - "Common/Utils/LUImageUtils.m", - "Common/Utils/LUObject.m", - "Common/Utils/LUSerializableObject.h", - "Common/Utils/LUNotificationCenter.h", - "Common/Utils/LUDefines.h", - "Common/Utils/LUStacktrace.h", - "Common/Utils/LUSortedList.h", - "Common/Utils/LUStringUtils.m", - "Common/Utils/LUAssert.m", - "Common/Utils/LUAvailability.m", - "Common/Utils/LUFileUtils.m", - "Common/Utils/LUMutableArray.m", - "Common/Utils/LULittleHelper.h", - "Common/Utils/LUNotificationCenter.m", - "Common/Utils/LUSerializableObject.m", - "Common/Utils/LUObject.h", - "Common/Utils/LUImageUtils.h", - "Common/Utils/LUThreading.h", - "Common/Utils/LUSerializationUtils.h", - "Common/Utils/LUSortedList.m", - "Common/Utils/LUStacktrace.m", - "Common/Utils/LUAvailability.h", - "Common/Utils/LUAssert.h", - "Common/Utils/LUStringUtils.h", - "Common/Utils/LUUtils.h", - "Common/Utils/LUMutableArray.h", - "Common/Utils/LULittleHelper.m", - "Common/Utils/LUFileUtils.h", - "Common/Lunar.h", - "Common/Controllers/Misc/LUEnumPickerViewController.m", - "Common/Controllers/Misc/LUEnumPickerViewController.h", - "Common/Controllers/Misc/LUEnumPickerViewController.xib", - "Common/Controllers/Settings/LUConsoleSettingsController.m", - "Common/Controllers/Settings/LUSettingsTableCell.xib", - "Common/Controllers/Settings/LUConsoleSettingsController.h", - "Common/Controllers/Settings/LUConsoleSettingsController.xib", - "Common/Controllers/Popup/LUConsolePopupController.h", - "Common/Controllers/Popup/LUConsolePopupController.xib", - "Common/Controllers/Popup/LUConsolePopupController.m", - "Common/Controllers/Warning/LUExceptionWarningController.m", - "Common/Controllers/Warning/LUExceptionWarningController.xib", - "Common/Controllers/Warning/LUExceptionWarningController.h", - "Common/Controllers/Variables/LUCVar.h", - "Common/Controllers/Actions/LUActionControllerBase.m", - "Common/Controllers/Actions/LUActionControllerBase_Inheritance.h", - "Common/Controllers/Actions/LUActionRegistry.h", - "Common/Controllers/Actions/LUActionController.xib", - "Common/Controllers/Actions/LUActionControllerBase.h", - "Common/Controllers/Actions/LUActionController.h", - "Common/Controllers/Resize/LUConsoleResizeController.m", - "Common/Controllers/Resize/LUConsoleResizeController.xib", - "Common/Controllers/Resize/LUConsoleResizeController.h", - "Common/Console/Entries/LUEntry.m", - "Common/Console/Entries/LUEntryTableViewCell.h", - "Common/Console/Entries/LUEntry.h", - "Common/Console/Entries/LUEntryTableViewCell.m", - "Common/Console/LUConsole.h", - "Common/Console/LUConsoleController.m", - "Common/Console/Plugin/LUPluginSettings.h", - "Common/Console/Plugin/LUConsolePluginImp.h", - "Common/Console/Plugin/LUConsolePlugin.m", - "Common/Console/Plugin/LUUnityScriptMessenger.h", - "Common/Console/Plugin/lunar_unity_native_interface.m", - "Common/Console/Plugin/LUPluginSettings.m", - "Common/Console/Plugin/LUConsolePlugin.h", - "Common/Console/Plugin/LUUnityScriptMessenger.m", - "Common/Console/Plugin/lunar_unity_native_interface.h", - "Common/Console/LUConsoleController.xib", - "Common/Console/Log/LUConsoleLogEntry.m", - "Common/Console/Log/LUConsoleLogController.m", - "Common/Console/Log/LUConsoleLogMenuController.h", - "Common/Console/Log/LUConsoleLogEntryTableViewCell.h", - "Common/Console/Log/LUConsoleLogDetailsController.h", - "Common/Console/Log/LUConsoleLogMenuController.xib", - "Common/Console/Log/LUConsoleLogTypeButton.m", - "Common/Console/Log/LUConsoleLogEntryLookupTable.m", - "Common/Console/Log/LUConsoleLogEntryList.m", - "Common/Console/Log/LULogMessage.m", - "Common/Console/Log/LUConsoleLogDetailsController.xib", - "Common/Console/Log/LUConsoleLogController.xib", - "Common/Console/Log/LUConsoleLogMenuController.m", - "Common/Console/Log/LUConsoleLogController.h", - "Common/Console/Log/LUConsoleLogEntry.h", - "Common/Console/Log/LUConsoleLogEntryLookupTable.h", - "Common/Console/Log/LUConsoleLogTypeButton.h", - "Common/Console/Log/LUConsoleLogDetailsController.m", - "Common/Console/Log/LUConsoleLogEntryTableViewCell.m", - "Common/Console/Log/LULogMessage.h", - "Common/Console/Log/LUConsoleLogEntryList.h", - "Common/Console/LUConsoleController.h", - "Common/Console/LUConsole.m" - ], - "excludes": [ - "^.*.DS_Store$", - "^.*.meta$", - "^.*.mdown^", - "^.*.pdf$", - "^.*.svn$" - ] -} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/iOS/Lunar.projmods.meta b/Assets/LunarConsole/Editor/iOS/Lunar.projmods.meta deleted file mode 100644 index 44e6e63..0000000 --- a/Assets/LunarConsole/Editor/iOS/Lunar.projmods.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: db8a22dd0feb84c5ba14ad9d05cdc3f1 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Actions.meta b/Assets/LunarConsole/Scripts/Actions.meta deleted file mode 100644 index 12953f6..0000000 --- a/Assets/LunarConsole/Scripts/Actions.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 7c999e0d150a247abb9937afc61b3bfc -folderAsset: yes -timeCreated: 1481486418 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Actions/CAction.cs b/Assets/LunarConsole/Scripts/Actions/CAction.cs deleted file mode 100644 index 7932e9f..0000000 --- a/Assets/LunarConsole/Scripts/Actions/CAction.cs +++ /dev/null @@ -1,208 +0,0 @@ -// -// CAction.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Text; - -using UnityEngine; - -namespace LunarConsolePluginInternal -{ - public class CAction : IComparable - { - static readonly string[] kEmptyArgs = new String[0]; - static int s_nextActionId; - - readonly int m_id; - readonly string m_name; - Delegate m_actionDelegate; - - public CAction(string name, Delegate actionDelegate) - { - if (name == null) - { - throw new ArgumentNullException("name"); - } - - if (name.Length == 0) - { - throw new ArgumentException("Action name is empty"); - } - - if (actionDelegate == null) - { - throw new ArgumentNullException("actionDelegate"); - } - - m_id = s_nextActionId++; - m_name = name; - m_actionDelegate = actionDelegate; - } - - public bool Execute() - { - try - { - return ReflectionUtils.Invoke(ActionDelegate, kEmptyArgs); // TODO: remove it - } - catch (TargetInvocationException e) - { - Log.e(e.InnerException, "Exception while invoking action '{0}'", m_name); - } - catch (Exception e) - { - Log.e(e, "Exception while invoking action '{0}'", m_name); - } - - return false; - } - - #region Helpers - - internal bool StartsWith(string prefix) - { - return StringUtils.StartsWithIgnoreCase(Name, prefix); - } - - #endregion - - #region IComparable - - public int CompareTo(CAction other) - { - return Name.CompareTo(other.Name); - } - - #endregion - - #region String representation - - public override string ToString() - { - return string.Format("{0} ({1})", Name, ActionDelegate); - } - - #endregion - - #region Properties - - public int Id - { - get { return m_id; } - } - - public string Name - { - get { return m_name; } - } - - public Delegate ActionDelegate - { - get { return m_actionDelegate; } - set - { - if (value == null) - { - throw new ArgumentNullException("actionDelegate"); - } - m_actionDelegate = value; - } - } - - #endregion - } - - public class CActionList : IEnumerable - { - private readonly List m_actions; - private readonly Dictionary m_actionLookupById; - private readonly Dictionary m_actionLookupByName; - - public CActionList() - { - m_actions = new List(); - m_actionLookupById = new Dictionary(); - m_actionLookupByName = new Dictionary(); - } - - public void Add(CAction action) - { - m_actions.Add(action); - m_actionLookupById.Add(action.Id, action); - m_actionLookupByName.Add(action.Name, action); - } - - public bool Remove(int id) - { - CAction action; - if (m_actionLookupById.TryGetValue(id, out action)) - { - m_actionLookupById.Remove(id); - m_actionLookupByName.Remove(action.Name); - m_actions.Remove(action); - - return true; - } - - return false; - } - - public CAction Find(string name) - { - CAction action; - return m_actionLookupByName.TryGetValue(name, out action) ? action : null; - } - - public CAction Find(int id) - { - CAction action; - return m_actionLookupById.TryGetValue(id, out action) ? action : null; - } - - public void Clear() - { - m_actions.Clear(); - m_actionLookupById.Clear(); - m_actionLookupByName.Clear(); - } - - #region IEnumerable implementation - - public IEnumerator GetEnumerator() - { - return m_actions.GetEnumerator(); - } - - #endregion - - #region IEnumerable implementation - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return m_actions.GetEnumerator(); - } - - #endregion - } -} diff --git a/Assets/LunarConsole/Scripts/Actions/CAction.cs.meta b/Assets/LunarConsole/Scripts/Actions/CAction.cs.meta deleted file mode 100644 index f7aad22..0000000 --- a/Assets/LunarConsole/Scripts/Actions/CAction.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 0674f19e1a94b4378b2a683d1dbdab2c -timeCreated: 1481487131 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Actions/CRegistry.cs b/Assets/LunarConsole/Scripts/Actions/CRegistry.cs deleted file mode 100644 index a65e7c1..0000000 --- a/Assets/LunarConsole/Scripts/Actions/CRegistry.cs +++ /dev/null @@ -1,222 +0,0 @@ -// -// CRegistry.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; - -using LunarConsolePlugin; - -namespace LunarConsolePluginInternal -{ - delegate bool CActionFilter(CAction action); - - public interface ICRegistryDelegate - { - void OnActionRegistered(CRegistry registry, CAction action); - void OnActionUnregistered(CRegistry registry, CAction action); - void OnVariableRegistered(CRegistry registry, CVar cvar); - void OnVariableUpdated(CRegistry registry, CVar cvar); - } - - public class CRegistry - { - private readonly CActionList m_actions = new CActionList(); - private readonly CVarList m_vars = new CVarList(); - - private ICRegistryDelegate m_delegate; - - #region Commands registry - - public CAction RegisterAction(string name, Delegate actionDelegate) - { - if (name == null) - { - throw new ArgumentNullException("name"); - } - - if (name.Length == 0) - { - throw new ArgumentException("Action's name is empty"); - } - - if (actionDelegate == null) - { - throw new ArgumentNullException("actionDelegate"); - } - - CAction action = m_actions.Find(name); - if (action != null) - { - // Log.w("Overriding action: {0}", name); - action.ActionDelegate = actionDelegate; - } - else - { - action = new CAction(name, actionDelegate); - m_actions.Add(action); - - if (m_delegate != null) - { - m_delegate.OnActionRegistered(this, action); - } - } - - return action; - } - - public bool Unregister(string name) - { - return Unregister(delegate(CAction action) - { - return action.Name == name; - }); - } - - public bool Unregister(int id) - { - return Unregister(delegate(CAction action) - { - return action.Id == id; - }); - } - - public bool Unregister(Delegate del) - { - return Unregister(delegate(CAction action) - { - return action.ActionDelegate == del; - }); - } - - public bool UnregisterAll(object target) - { - return target != null && Unregister(delegate(CAction action) - { - return action.ActionDelegate.Target == target; - }); - } - - bool Unregister(CActionFilter filter) - { - if (filter == null) - { - throw new ArgumentNullException("filter"); - } - - IList actionsToRemove = new List(); - foreach (var action in m_actions) - { - if (filter(action)) - { - actionsToRemove.Add(action); - } - } - - foreach (var action in actionsToRemove) - { - RemoveAction(action); - } - - return actionsToRemove.Count > 0; - } - - bool RemoveAction(CAction action) - { - if (m_actions.Remove(action.Id)) - { - if (m_delegate != null) - { - m_delegate.OnActionUnregistered(this, action); - } - - return true; - } - - return false; - } - - public CAction FindAction(int id) - { - return m_actions.Find(id); - } - - #endregion - - #region Variables - - public void Register(CVar cvar) - { - m_vars.Add(cvar); - - if (m_delegate != null) - { - m_delegate.OnVariableRegistered(this, cvar); - } - } - - public CVar FindVariable(int variableId) - { - return m_vars.Find(variableId); - } - - public CVar FindVariable(string variableName) - { - return m_vars.Find(variableName); - } - - #endregion - - #region Destroyable - - public void Destroy() - { - m_actions.Clear(); - m_vars.Clear(); - m_delegate = null; - } - - #endregion - - #region Properties - - public ICRegistryDelegate registryDelegate - { - get { return m_delegate; } - set { m_delegate = value; } - } - - public CActionList actions - { - get { return m_actions; } - } - - public CVarList cvars - { - get { return m_vars; } - } - - #endregion - } -} diff --git a/Assets/LunarConsole/Scripts/Actions/CRegistry.cs.meta b/Assets/LunarConsole/Scripts/Actions/CRegistry.cs.meta deleted file mode 100644 index e97346f..0000000 --- a/Assets/LunarConsole/Scripts/Actions/CRegistry.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: e8592d2024c8c4e95a5853eda2c58b2b -timeCreated: 1481487705 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Actions/CVar.cs b/Assets/LunarConsole/Scripts/Actions/CVar.cs deleted file mode 100644 index 660b809..0000000 --- a/Assets/LunarConsole/Scripts/Actions/CVar.cs +++ /dev/null @@ -1,594 +0,0 @@ -// -// CVar.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; -using LunarConsolePluginInternal; - -namespace LunarConsolePlugin -{ - public delegate void CVarChangedDelegate(CVar cvar); - - public enum CVarType - { - Boolean, - Integer, - Float, - String, - Enum - } - - struct CValue - { - public string stringValue; - public int intValue; - public float floatValue; - - public bool Equals(ref CValue other) - { - return other.intValue == intValue && - other.floatValue == floatValue && - other.stringValue == stringValue; - } - } - - public struct CVarValueRange - { - public static readonly CVarValueRange Undefined = new CVarValueRange(float.NaN, float.NaN); - - public readonly float min; - public readonly float max; - - public CVarValueRange(float min, float max) - { - this.min = min; - this.max = max; - } - - public bool IsValid - { - get { return !float.IsNaN(min) && !float.IsNaN(max); } - } - } - - [Flags] - public enum CFlags - { - /// - /// No flags (default value) - /// - None = 0, - - /// - /// Won't be listed in UI - /// - Hidden = 1 << 1, - - /// - /// Don't save between sessions - /// - NoArchive = 1 << 2 - } - - public class CVar : IEquatable, IComparable - { - private static int s_nextId; - - private readonly int m_id; - private readonly string m_name; - private readonly CVarType m_type; - private readonly CFlags m_flags; - - private CValue m_value; - private CValue m_defaultValue; - private CVarValueRange m_range = CVarValueRange.Undefined; - - private CVarChangedDelegateList m_delegateList; - - public CVar(string name, bool defaultValue, CFlags flags = CFlags.None) - : this(name, CVarType.Boolean, flags) - { - this.IntValue = defaultValue ? 1 : 0; - m_defaultValue = m_value; - } - - public CVar(string name, int defaultValue, CFlags flags = CFlags.None) - : this(name, CVarType.Integer, flags) - { - this.IntValue = defaultValue; - m_defaultValue = m_value; - } - - public CVar(string name, float defaultValue, CFlags flags = CFlags.None) - : this(name, CVarType.Float, flags) - { - this.FloatValue = defaultValue; - m_defaultValue = m_value; - } - - public CVar(string name, string defaultValue, CFlags flags = CFlags.None) - : this(name, CVarType.String, flags) - { - this.Value = defaultValue; - m_defaultValue = m_value; - } - - protected CVar(string name, CVarType type, CFlags flags) - { - if (name == null) - { - throw new ArgumentNullException("name"); - } - - m_id = ++s_nextId; - - m_name = name; - m_type = type; - m_flags = flags; - } - - #region Delegates - - public void AddDelegate(CVarChangedDelegate del) - { - if (del == null) - { - throw new ArgumentNullException("del"); - } - - if (m_delegateList == null) - { - m_delegateList = new CVarChangedDelegateList(1); - m_delegateList.Add(del); - } - else if (!m_delegateList.Contains(del)) - { - m_delegateList.Add(del); - } - } - - public void RemoveDelegate(CVarChangedDelegate del) - { - if (del != null && m_delegateList != null) - { - m_delegateList.Remove(del); - - if (m_delegateList.Count == 0) - { - m_delegateList = null; - } - } - } - - public void RemoveDelegates(object target) - { - if (target != null && m_delegateList != null) - { - for (int i = m_delegateList.Count - 1; i >= 0; --i) - { - if (m_delegateList.Get(i).Target == target) - { - m_delegateList.RemoveAt(i); - } - } - - if (m_delegateList.Count == 0) - { - m_delegateList = null; - } - } - } - - private void NotifyValueChanged() - { - if (m_delegateList != null && m_delegateList.Count > 0) - { - m_delegateList.NotifyValueChanged(this); - } - } - - #endregion - - #region IEquatable - - public bool Equals(CVar other) - { - return other != null && - other.m_name == m_name && - other.m_value.Equals(ref m_value) && - other.m_defaultValue.Equals(ref m_defaultValue) && - other.m_type == m_type; - } - - #endregion - - #region IComparable - - public int CompareTo(CVar other) - { - return Name.CompareTo(other.Name); - } - - #endregion - - #region Properties - - public int Id - { - get { return m_id; } - } - - public string Name - { - get { return m_name; } - } - - public CVarType Type - { - get { return m_type; } - } - - public string DefaultValue - { - get { return m_defaultValue.stringValue; } - protected set { m_defaultValue.stringValue = value; } - } - - public bool IsString - { - get { return m_type == CVarType.String; } - } - - public string Value - { - get { return m_value.stringValue; } - set - { - bool changed = m_value.stringValue != value; - - m_value.stringValue = value; - m_value.floatValue = IsInt || IsFloat ? StringUtils.ParseFloat(value, 0.0f) : 0.0f; - m_value.intValue = IsInt || IsFloat ? (int)FloatValue : 0; - - if (changed) - { - NotifyValueChanged(); - } - } - } - - public CVarValueRange Range - { - get { return m_range; } - set { m_range = value; } - } - - public bool HasRange - { - get { return m_range.IsValid; } - } - - public bool IsInt - { - get { return m_type == CVarType.Integer || m_type == CVarType.Boolean; } - } - - public int IntValue - { - get { return m_value.intValue; } - set - { - bool changed = m_value.intValue != value; - - m_value.stringValue = StringUtils.ToString(value); - m_value.intValue = value; - m_value.floatValue = (float)value; - - if (changed) - { - NotifyValueChanged(); - } - } - } - - public bool IsFloat - { - get { return m_type == CVarType.Float; } - } - - public float FloatValue - { - get { return m_value.floatValue; } - set - { - float oldValue = m_value.floatValue; - - m_value.stringValue = StringUtils.ToString(value); - m_value.intValue = (int)value; - m_value.floatValue = value; - - if (oldValue != value) - { - NotifyValueChanged(); - } - } - } - - public bool IsBool - { - get { return m_type == CVarType.Boolean; } - } - - public bool BoolValue - { - get { return m_value.intValue != 0; } - set { this.IntValue = value ? 1 : 0; } - } - - public virtual string[] AvailableValues - { - get { return null; } - } - - public bool IsDefault - { - get { return m_value.Equals(m_defaultValue); } - set - { - bool changed = this.IsDefault ^ value; - m_value = m_defaultValue; - - if (changed) - { - NotifyValueChanged(); - } - } - } - - public bool HasFlag(CFlags flag) - { - return (m_flags & flag) != 0; - } - - public CFlags Flags - { - get { return m_flags; } - } - - public bool IsHidden - { - get { return (m_flags & CFlags.Hidden) != 0; } - } - - #endregion - - #region Operators - - public static implicit operator string(CVar cvar) - { - return cvar.m_value.stringValue; - } - - public static implicit operator int(CVar cvar) - { - return cvar.m_value.intValue; - } - - public static implicit operator float(CVar cvar) - { - return cvar.m_value.floatValue; - } - - public static implicit operator bool(CVar cvar) - { - return cvar.m_value.intValue != 0; - } - - #endregion - } - - public class CEnumVar : CVar where T : struct, IConvertible - { - private readonly IDictionary m_valueLookup; - private readonly string[] m_names; - - public CEnumVar(string name, T defaultValue, CFlags flags = CFlags.None) : base(name, CVarType.Enum, flags) - { - if (!typeof(T).IsEnum) - { - throw new ArgumentException("T must be an enumerated type"); - } - - var value = defaultValue.ToString(); - - Value = value; - DefaultValue = value; - - var values = Enum.GetValues(typeof(T)); - m_names = Enum.GetNames(typeof(T)); - - m_valueLookup = new Dictionary(); - for (int i = 0; i < values.Length; i++) - { - m_valueLookup[m_names[i]] = (T) values.GetValue(i); - } - } - - public override string[] AvailableValues - { - get { return m_names; } - } - - public T EnumValue - { - get { return m_valueLookup[Value]; } - } - - #if UNITY_2017_1_OR_NEWER - - public static implicit operator T(CEnumVar cvar) - { - return cvar.EnumValue; - } - - #endif - } - - public class CVarList : IEnumerable - { - private readonly List m_variables; - private readonly Dictionary m_lookupById; - - public CVarList() - { - m_variables = new List(); - m_lookupById = new Dictionary(); - } - - public void Add(CVar variable) - { - m_variables.Add(variable); - m_lookupById.Add(variable.Id, variable); - } - - public bool Remove(int id) - { - CVar variable; - if (m_lookupById.TryGetValue(id, out variable)) - { - m_lookupById.Remove(id); - m_variables.Remove(variable); - - return true; - } - - return false; - } - - public CVar Find(int id) - { - CVar variable; - return m_lookupById.TryGetValue(id, out variable) ? variable : null; - } - - public CVar Find(string name) - { - foreach (var cvar in m_variables) - { - if (cvar.Name == name) - { - return cvar; - } - } - return null; - } - - public void Clear() - { - m_variables.Clear(); - m_lookupById.Clear(); - } - - #region IEnumerable implementation - - public IEnumerator GetEnumerator() - { - return m_variables.GetEnumerator(); - } - - #endregion - - #region IEnumerable implementation - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return m_variables.GetEnumerator(); - } - - #endregion - - public int Count - { - get { return m_variables.Count; } - } - } - - [AttributeUsage (AttributeTargets.Field, Inherited = true, AllowMultiple = false)] - public sealed class CVarRangeAttribute : Attribute - { - public readonly float min; - - public readonly float max; - - public CVarRangeAttribute(float min, float max) - { - this.min = min; - this.max = max; - } - } - - [AttributeUsage(AttributeTargets.Class)] - public class CVarContainerAttribute : Attribute - { - } - - class CVarChangedDelegateList : BaseList - { - public CVarChangedDelegateList(int capacity) - : base(NullCVarChangedDelegate, capacity) - { - } - - public void NotifyValueChanged(CVar cvar) - { - try - { - Lock(); - - int elementsCount = list.Count; - for (int i = 0; i < elementsCount; ++i) // do not update added items on that tick - { - try - { - list[i](cvar); - } - catch (Exception e) - { - Log.e(e, "Exception while calling value changed delegate for '{0}'", cvar.Name); - } - } - } - finally - { - Unlock(); - } - } - - static void NullCVarChangedDelegate(CVar cvar) - { - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Actions/CVar.cs.meta b/Assets/LunarConsole/Scripts/Actions/CVar.cs.meta deleted file mode 100644 index 429f564..0000000 --- a/Assets/LunarConsole/Scripts/Actions/CVar.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 552d62cbcb69c429c8b15ba021063a93 -timeCreated: 1459385754 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Constants.cs b/Assets/LunarConsole/Scripts/Constants.cs deleted file mode 100644 index d6305c5..0000000 --- a/Assets/LunarConsole/Scripts/Constants.cs +++ /dev/null @@ -1,36 +0,0 @@ -// -// Constants.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -namespace LunarConsolePluginInternal -{ - public static class Constants - { - public static readonly string Version = "1.8.4"; - public static readonly string UpdateJsonURLFull = "https://raw.githubusercontent.com/SpaceMadness/lunar-unity-console/master/Builder/updater-full.json"; - public static readonly string UpdateJsonURLFree = "https://raw.githubusercontent.com/SpaceMadness/lunar-unity-console/master/Builder/updater-free.json"; - - public static readonly string PluginName = "LunarConsole"; - public static readonly string PluginDisplayName = "Lunar Mobile Console"; - - public static readonly string EditorPrefsKeyBase = "com.spacemadness.lunar.console"; - } -} diff --git a/Assets/LunarConsole/Scripts/Constants.cs.meta b/Assets/LunarConsole/Scripts/Constants.cs.meta deleted file mode 100644 index de4332f..0000000 --- a/Assets/LunarConsole/Scripts/Constants.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8252d3fd8fea642c1b3317065ec60bb8 -timeCreated: 1439245459 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Legacy.meta b/Assets/LunarConsole/Scripts/Legacy.meta deleted file mode 100644 index dbb868d..0000000 --- a/Assets/LunarConsole/Scripts/Legacy.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: b6b52baf9e1c79f40aa55a603da45876 -folderAsset: yes -timeCreated: 1502869524 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Legacy/LunarConsoleLegacyActions.cs b/Assets/LunarConsole/Scripts/Legacy/LunarConsoleLegacyActions.cs deleted file mode 100644 index 61bf9ca..0000000 --- a/Assets/LunarConsole/Scripts/Legacy/LunarConsoleLegacyActions.cs +++ /dev/null @@ -1,249 +0,0 @@ -// -// LunarConsoleLegacyActions.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; -using UnityEngine.Events; - -using Object = UnityEngine.Object; - -using LunarConsolePlugin; - -namespace LunarConsolePluginInternal -{ - [Serializable] - public class LunarConsoleLegacyAction - { - #pragma warning disable 0649 - - static readonly object[] kEmptyArgs = {}; - - [SerializeField] - string m_name; - - [SerializeField] - GameObject m_target; - - [SerializeField] - string m_componentTypeName; - - [SerializeField] - string m_componentMethodName; - - Type m_componentType; - MethodInfo m_componentMethod; - - #pragma warning restore 0649 - - public void Register() - { - if (string.IsNullOrEmpty(m_name)) - { - Log.w("Unable to register action: name is null or empty"); - } - else if (m_target == null) - { - Log.w("Unable to register action '{0}': target GameObject is missing", m_name); - } - else if (string.IsNullOrEmpty(m_componentMethodName)) - { - Log.w("Unable to register action '{0}' for '{1}': function is missing", m_name, m_target.name); - } - else - { - LunarConsole.RegisterAction(m_name, Invoke); - } - } - - public void Unregister() - { - LunarConsole.UnregisterAction(Invoke); - } - - void Invoke() - { - if (m_target == null) - { - Log.e("Can't invoke action '{0}': target is not set", m_name); - return; - } - - if (m_componentTypeName == null) - { - Log.e("Can't invoke action '{0}': method is not set", m_name); - return; - } - - if (m_componentMethodName == null) - { - Log.e("Can't invoke action '{0}': method is not set", m_name); - return; - } - - if (m_componentType == null || m_componentMethod == null) - { - if (!ResolveInvocation()) - { - return; - } - } - - var component = m_target.GetComponent(m_componentType); - if (component == null) - { - Log.w("Missing component {0}", m_componentType); - return; - } - - try - { - m_componentMethod.Invoke(component, kEmptyArgs); - } - catch (TargetInvocationException e) - { - Log.e(e.InnerException, "Exception while invoking action '{0}'", m_name); - } - catch (Exception e) - { - Log.e(e, "Exception while invoking action '{0}'", m_name); - } - } - - bool ResolveInvocation() - { - try - { - m_componentType = Type.GetType(m_componentTypeName); - if (m_componentType == null) - { - Log.w("Can't resolve type {0}", m_componentTypeName); - return false; - } - - m_componentMethod = m_componentType.GetMethod(m_componentMethodName, BindingFlags.Instance|BindingFlags.Public|BindingFlags.NonPublic); - if (m_componentMethod == null) - { - Log.w("Can't resolve method {0} of type {1}", m_componentMethod, m_componentType); - return false; - } - - return true; - } - catch (Exception e) - { - Log.e(e); - return false; - } - } - - public void Validate() - { - if (string.IsNullOrEmpty(m_name)) - { - Log.w("Missing action name"); - } - - if (m_target == null) - { - Log.w("Missing action target"); - } - - if (m_componentType != null && m_componentMethodName != null) - { - ResolveInvocation(); - } - } - } - - [Obsolete("Use 'Lunar Console Action' instead")] - public class LunarConsoleLegacyActions : MonoBehaviour - { - #pragma warning disable 0649 - - [SerializeField] - bool m_dontDestroyOnLoad; - - [SerializeField] - [HideInInspector] - List m_actions; - - #pragma warning restore 0649 - - void Awake() - { - if (!actionsEnabled) - { - Destroy(this); - } - - if (m_dontDestroyOnLoad) - { - DontDestroyOnLoad(gameObject); - } - } - - void Start() - { - if (actionsEnabled) - { - foreach (var action in m_actions) - { - action.Register(); - } - } - else - { - Destroy(this); - } - } - - void OnDestroy() - { - if (actionsEnabled) - { - foreach (var action in m_actions) - { - action.Unregister(); - } - } - } - - public void AddAction(LunarConsoleLegacyAction action) - { - m_actions.Add(action); - } - - public List actions - { - get { return m_actions; } - } - - bool actionsEnabled - { - get { return LunarConsoleConfig.actionsEnabled; } - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Legacy/LunarConsoleLegacyActions.cs.meta b/Assets/LunarConsole/Scripts/Legacy/LunarConsoleLegacyActions.cs.meta deleted file mode 100644 index 4823e9a..0000000 --- a/Assets/LunarConsole/Scripts/Legacy/LunarConsoleLegacyActions.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: d9ca3326e330843bc825ea966b3d15c6 -timeCreated: 1484261353 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/LunarConsole.asmdef b/Assets/LunarConsole/Scripts/LunarConsole.asmdef deleted file mode 100644 index fd808c9..0000000 --- a/Assets/LunarConsole/Scripts/LunarConsole.asmdef +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "LunarConsole" -} diff --git a/Assets/LunarConsole/Scripts/LunarConsole.cs b/Assets/LunarConsole/Scripts/LunarConsole.cs deleted file mode 100644 index 3bbe2f9..0000000 --- a/Assets/LunarConsole/Scripts/LunarConsole.cs +++ /dev/null @@ -1,1825 +0,0 @@ -// -// LunarConsole.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#define LUNAR_CONSOLE_ENABLED -#define LUNAR_CONSOLE_FREE - -#if UNITY_IOS || UNITY_IPHONE || UNITY_ANDROID || UNITY_EDITOR -#define LUNAR_CONSOLE_PLATFORM_SUPPORTED -#endif - -#if LUNAR_CONSOLE_ENABLED && !LUNAR_CONSOLE_ANALYTICS_DISABLED -#define LUNAR_CONSOLE_ANALYTICS_ENABLED -#endif - -using UnityEngine; - -#if UNITY_EDITOR -using System.Runtime.CompilerServices; -#endif - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; -using System.Threading; -using System.Text; -using System.IO; -using System.Runtime.InteropServices; -using LunarConsolePluginInternal; - -#if UNITY_EDITOR -[assembly: InternalsVisibleTo("Test")] -#endif - -namespace LunarConsolePlugin -{ - public enum Gesture - { - None, - SwipeDown - } - - delegate void LunarConsoleNativeMessageCallback(string message); - delegate void LunarConsoleNativeMessageHandler(IDictionary data); - - [Serializable] - public class LogEntryColors - { - [SerializeField] - public Color32 foreground; - - [SerializeField] - public Color32 background; - } - - [Serializable] - public class LogOverlayColors - { - [SerializeField] - public LogEntryColors exception = MakeColors(0xFFEA4646, 0xFF1E1E1E); - - [SerializeField] - public LogEntryColors error = MakeColors(0xFFEA4646, 0xFF1E1E1E); - - [SerializeField] - public LogEntryColors warning = MakeColors(0xFFCBCB40, 0xFF1E1E1E); - - [SerializeField] - public LogEntryColors debug = MakeColors(0xFF9BDDFF, 0xFF1E1E1E); - - static LogEntryColors MakeColors(uint foreground, uint background) - { - var colors = new LogEntryColors(); - colors.foreground = MakeColor(foreground); - colors.background = MakeColor(background); - return colors; - } - - static Color32 MakeColor(uint argb) - { - byte a = (byte)((argb >> 24) & 0xff); - byte r = (byte)((argb >> 16) & 0xff); - byte g = (byte)((argb >> 8) & 0xff); - byte b = (byte)(argb & 0xff); - return new Color32(r, g, b, a); - } - } - - public enum ExceptionWarningDisplayMode - { - None, - Errors, - Exceptions, - All - } - - [Serializable] - public class ExceptionWarningSettings - { - [SerializeField] - public ExceptionWarningDisplayMode displayMode = ExceptionWarningDisplayMode.All; - } - - [Serializable] - public class LogOverlaySettings - { - [SerializeField] - public bool enabled = false; - - [SerializeField] - [Tooltip("Maximum visible lines count")] - public int maxVisibleLines = 3; - - [SerializeField] - [Tooltip("The amount of time each line would be displayed")] - public float timeout = 1.0f; - - [SerializeField] - public LogOverlayColors colors = new LogOverlayColors(); - } - - [Serializable] - public class LunarConsoleSettings - { - [SerializeField] - public ExceptionWarningSettings exceptionWarning = new ExceptionWarningSettings(); - - #if LUNAR_CONSOLE_FREE - [HideInInspector] - #endif - [SerializeField] - public LogOverlaySettings logOverlay = new LogOverlaySettings(); - - [Range(128, 65536)] - [Tooltip("Log output will never become bigger than this capacity")] - [SerializeField] - public int capacity = 4096; - - [Range(128, 65536)] - [Tooltip("Log output will be trimmed this many lines when overflown")] - [SerializeField] - public int trim = 512; - - [Tooltip("Gesture type to open the console")] - [SerializeField] - public Gesture gesture = Gesture.SwipeDown; - - [Tooltip("If checked - enables Unity Rich Text in log output")] - [SerializeField] - public bool richTextTags; - - #if LUNAR_CONSOLE_FREE - [HideInInspector] - #endif - [SerializeField] - public bool sortActions = true; - - #if LUNAR_CONSOLE_FREE - [HideInInspector] - #endif - [SerializeField] - public bool sortVariables = true; - - [SerializeField] - public string[] emails; - } - - public sealed class LunarConsole : MonoBehaviour - { - #pragma warning disable 0649 - #pragma warning disable 0414 - - [SerializeField] - LunarConsoleSettings m_settings = new LunarConsoleSettings(); - - static LunarConsole s_instance; - - CRegistry m_registry; - bool m_variablesDirty; - - #pragma warning restore 0649 - #pragma warning restore 0414 - - #if LUNAR_CONSOLE_ENABLED - - IPlatform m_platform; - - IDictionary m_nativeHandlerLookup; - - #region Life cycle - - void Awake() - { - InitInstance(); - } - - void OnEnable() - { - EnablePlatform(); - } - - void OnDisable() - { - DisablePlatform(); - } - - void Update() - { - if (m_platform != null) - { - m_platform.Update(); - } - if (m_variablesDirty) - { - m_variablesDirty = false; - SaveVariables(); - } - } - - void OnDestroy() - { - DestroyInstance(); - } - - #endregion - - #region Plugin Lifecycle - - void InitInstance() - { - if (s_instance == null) - { - if (IsPlatformSupported()) - { - s_instance = this; - DontDestroyOnLoad(gameObject); - Log.dev("Instance created..."); - } - else - { - Destroy(gameObject); - Log.dev("Platform not supported. Destroying object..."); - } - } - else if (s_instance != this) - { - Destroy(gameObject); - Log.dev("Another instance exists. Destroying object..."); - } - } - - void EnablePlatform() - { - if (s_instance != null) - { - bool succeed = InitPlatform(m_settings); - Log.dev("Platform initialized successfully: {0}", succeed.ToString()); - } - } - - void DisablePlatform() - { - if (s_instance != null) - { - bool succeed = DestroyPlatform(); - Log.dev("Platform destroyed successfully: {0}", succeed.ToString()); - } - } - - static bool IsPlatformSupported() - { - #if UNITY_EDITOR - return true; - #elif UNITY_IOS || UNITY_IPHONE - return Application.platform == RuntimePlatform.IPhonePlayer; - #elif UNITY_ANDROID - return Application.platform == RuntimePlatform.Android; - #else - return false; - #endif - } - - #endregion - - #region Platforms - - bool InitPlatform(LunarConsoleSettings settings) - { - try - { - if (m_platform == null) - { - m_platform = CreatePlatform(settings); - if (m_platform != null) - { - m_registry = new CRegistry(); - m_registry.registryDelegate = m_platform; - - Application.logMessageReceivedThreaded += OnLogMessageReceived; - - #if LUNAR_CONSOLE_FULL - ResolveVariables(); - LoadVariables(); - #endif // LUNAR_CONSOLE_FULL - - return true; - } - } - } - catch (Exception e) - { - Log.e(e, "Can't init platform"); - } - - return false; - } - - bool DestroyPlatform() - { - if (m_platform != null) - { - Application.logMessageReceivedThreaded -= OnLogMessageReceived; - - if (m_registry != null) - { - m_registry.Destroy(); - m_registry = null; - } - - m_platform.Destroy(); - m_platform = null; - - return true; - } - - return false; - } - - IPlatform CreatePlatform(LunarConsoleSettings settings) - { - #if UNITY_IOS || UNITY_IPHONE - if (Application.platform == RuntimePlatform.IPhonePlayer) - { - LunarConsoleNativeMessageCallback callback = NativeMessageCallback; - return new PlatformIOS(gameObject.name, callback.Method.Name, Constants.Version, settings); - } - #elif UNITY_ANDROID - if (Application.platform == RuntimePlatform.Android) - { - LunarConsoleNativeMessageCallback callback = NativeMessageCallback; - return new PlatformAndroid(gameObject.name, callback.Method.Name, Constants.Version, settings); - } - #endif - - #if UNITY_EDITOR - return new PlatformEditor(); - #else - return null; - #endif - } - - void DestroyInstance() - { - if (s_instance == this) - { - DestroyPlatform(); - s_instance = null; - } - } - - private static string GetGestureName(Gesture gesture) - { - return gesture.ToString(); - } - - interface IPlatform : ICRegistryDelegate - { - void Update(); - void OnLogMessageReceived(string message, string stackTrace, LogType type); - bool ShowConsole(); - bool HideConsole(); - void ClearConsole(); - void Destroy(); - } - - #region CVar resolver - - private void ResolveVariables() - { - try - { - foreach (var assembly in ListAssemblies()) - { - Log.dev("Checking '{0}'...", assembly); - - try - { - var containerTypes = ReflectionUtils.FindAttributeTypes(assembly); - foreach (var type in containerTypes) - { - RegisterVariables(type); - } - } - catch (Exception e) - { - Log.e(e, "Unable to register variables from assembly: {0}", assembly); - } - } - } - catch (Exception e) - { - Log.e(e, "Unable to register variables"); - } - } - - private static IList ListAssemblies() - { - return ReflectionUtils.ListAssemblies((assembly) => - { - var assemblyName = assembly.FullName; - return !assemblyName.StartsWith("Unity") && - !assemblyName.StartsWith("System") && - !assemblyName.StartsWith("Microsoft") && - !assemblyName.StartsWith("SyntaxTree") && - !assemblyName.StartsWith("Mono") && - !assemblyName.StartsWith("ExCSS") && - !assemblyName.StartsWith("nunit") && - !assemblyName.StartsWith("netstandard") && - !assemblyName.StartsWith("mscorlib") && - assemblyName != "Accessibility"; - }); - } - - private void RegisterVariables(Type type) - { - try - { - var fields = type.GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); - if (fields.Length > 0) - { - foreach (var field in fields) - { - if (!field.FieldType.IsAssignableFrom(typeof(CVar)) && !field.FieldType.IsSubclassOf(typeof(CVar))) - { - continue; - } - - var cvar = field.GetValue(null) as CVar; - if (cvar == null) - { - Log.w("Unable to register variable {0}.{0}", type.Name, field.Name); - continue; - } - - var variableRange = ResolveVariableRange(field); - if (variableRange.IsValid) - { - if (cvar.Type == CVarType.Float) - { - cvar.Range = variableRange; - } - else - { - Log.w("'{0}' attribute is only available with 'float' variables", typeof(CVarRangeAttribute).Name); - } - } - - m_registry.Register(cvar); - } - } - } - catch (Exception e) - { - Log.e(e, "Unable to initialize cvar container: {0}", type); - } - } - - static CVarValueRange ResolveVariableRange(FieldInfo field) - { - try - { - var attributes = field.GetCustomAttributes(typeof(CVarRangeAttribute), true); - if (attributes.Length > 0) - { - var rangeAttribute = attributes[0] as CVarRangeAttribute; - if (rangeAttribute != null) - { - var min = rangeAttribute.min; - var max = rangeAttribute.max; - if (max - min < 0.00001f) - { - Log.w("Invalid range [{0}, {1}] for variable '{2}'", min.ToString(), max.ToString(), field.Name); - return CVarValueRange.Undefined; - } - - return new CVarValueRange(min, max); - } - } - } - catch (Exception e) - { - Log.e(e, "Exception while resolving variable's range: {0}", field.Name); - } - - return CVarValueRange.Undefined; - } - - void LoadVariables() - { - try - { - var configPath = Path.Combine(Application.persistentDataPath, "lunar-mobile-console-variables.bin"); - if (File.Exists(configPath)) - { - Log.dev("Loading variables from file {0}", configPath); - using (var stream = File.OpenRead(configPath)) - { - using (var reader = new BinaryReader(stream)) - { - int count = reader.ReadInt32(); - for (int i = 0; i < count; ++i) - { - var name = reader.ReadString(); - var value = reader.ReadString(); - var cvar = m_registry.FindVariable(name); - if (cvar == null) - { - Log.w("Variable '{0}' not registered. Ignoring...", name); - continue; - } - - cvar.Value = value; - m_platform.OnVariableUpdated(m_registry, cvar); - } - } - } - } - else - { - Log.dev("Missing variables file {0}", configPath); - } - } - catch (Exception e) - { - Log.e(e, "Error while loading variables"); - } - } - - void SaveVariables() - { - try - { - var configPath = Path.Combine(Application.persistentDataPath, "lunar-mobile-console-variables.bin"); - Log.dev("Saving variables to file {0}", configPath); - using (var stream = File.OpenWrite(configPath)) - { - using (var writer = new BinaryWriter(stream)) - { - var cvars = m_registry.cvars; - int count = 0; - foreach (var cvar in cvars) - { - if (ShouldSaveVar(cvar)) - { - ++count; - } - } - - writer.Write(count); - foreach (var cvar in cvars) - { - if (ShouldSaveVar(cvar)) - { - writer.Write(cvar.Name); - writer.Write(cvar.Value); - } - } - } - } - } - catch (Exception e) - { - Log.e(e, "Error while saving variables"); - } - } - - bool ShouldSaveVar(CVar cvar) - { - return !cvar.IsDefault && !cvar.HasFlag(CFlags.NoArchive); - } - - #endregion - - #region Messages - - private void OnLogMessageReceived(string message, string stackTrace, LogType type) - { - m_platform.OnLogMessageReceived(message, stackTrace, type); - } - - #endregion - - #if UNITY_IOS || UNITY_IPHONE - - class PlatformIOS : IPlatform - { - [DllImport("__Internal")] - private static extern void __lunar_console_initialize(string targetName, string methodName, string version, string settingsJson); - - [DllImport("__Internal")] - private static extern void __lunar_console_log_message(string message, string stackTrace, int type); - - [DllImport("__Internal")] - private static extern void __lunar_console_show(); - - [DllImport("__Internal")] - private static extern void __lunar_console_hide(); - - [DllImport("__Internal")] - private static extern void __lunar_console_clear(); - - [DllImport("__Internal")] - private static extern void __lunar_console_action_register(int actionId, string name); - - [DllImport("__Internal")] - private static extern void __lunar_console_action_unregister(int actionId); - - [DllImport("__Internal")] - private static extern void __lunar_console_cvar_register(int variableId, string name, string type, string value, string defaultValue, int flags, bool hasRange, float min, float max, string values); - - [DllImport("__Internal")] - private static extern void __lunar_console_cvar_update(int variableId, string value); - - [DllImport("__Internal")] - private static extern void __lunar_console_destroy(); - - /// - /// Initializes a new instance of the iOS platform class. - /// - /// The name of the game object which will receive native callbacks - /// The method of the game object which will be called from the native code - /// Plugin version - /// Plugin settings - public PlatformIOS(string targetName, string methodName, string version, LunarConsoleSettings settings) - { - var settingsJson = JsonUtility.ToJson(settings); - __lunar_console_initialize(targetName, methodName, version, settingsJson); - } - - public void Update() - { - } - - public void OnLogMessageReceived(string message, string stackTrace, LogType type) - { - // Suppress "stale touch" warning. - // See: https://github.com/SpaceMadness/lunar-unity-console/issues/70 - if (type == LogType.Error && message == "Stale touch detected!") - { - return; - } - __lunar_console_log_message(message, stackTrace, (int)type); - } - - public bool ShowConsole() - { - __lunar_console_show(); - return true; - } - - public bool HideConsole() - { - __lunar_console_hide(); - return true; - } - - public void ClearConsole() - { - __lunar_console_clear(); - } - - public void OnActionRegistered(CRegistry registry, CAction action) - { - __lunar_console_action_register(action.Id, action.Name); - } - - public void OnActionUnregistered(CRegistry registry, CAction action) - { - __lunar_console_action_unregister(action.Id); - } - - public void OnVariableRegistered(CRegistry registry, CVar cvar) - { - string values = cvar.Type == CVarType.Enum ? cvar.AvailableValues.Join(",") : null; - __lunar_console_cvar_register(cvar.Id, cvar.Name, cvar.Type.ToString(), cvar.Value, cvar.DefaultValue, (int)cvar.Flags, cvar.HasRange, cvar.Range.min, cvar.Range.max, values); - } - - public void OnVariableUpdated(CRegistry registry, CVar cvar) - { - __lunar_console_cvar_update(cvar.Id, cvar.Value); - } - - public void Destroy() - { - __lunar_console_destroy(); - } - } - - #elif UNITY_ANDROID - - class PlatformAndroid : IPlatform - { - private readonly int m_mainThreadId; - - private readonly jvalue[] m_args0 = new jvalue[0]; - private readonly jvalue[] m_args1 = new jvalue[1]; - private readonly jvalue[] m_args2 = new jvalue[2]; - private readonly jvalue[] m_args3 = new jvalue[3]; - private readonly jvalue[] m_args10 = new jvalue[10]; - - private static readonly string kPluginClassName = "spacemadness.com.lunarconsole.console.NativeBridge"; - - private readonly AndroidJavaClass m_pluginClass; - - private readonly IntPtr m_pluginClassRaw; - private readonly IntPtr m_methodLogMessage; - private readonly IntPtr m_methodShowConsole; - private readonly IntPtr m_methodHideConsole; - private readonly IntPtr m_methodClearConsole; - private readonly IntPtr m_methodRegisterAction; - private readonly IntPtr m_methodUnregisterAction; - private readonly IntPtr m_methodRegisterVariable; - private readonly IntPtr m_methodUpdateVariable; - private readonly IntPtr m_methodDestroy; - - private readonly Queue m_messageQueue; - - /// - /// Initializes a new instance of the Android platform class. - /// - /// The name of the game object which will receive native callbacks - /// The method of the game object which will be called from the native code - /// Plugin version - /// Plugin settings - public PlatformAndroid(string targetName, string methodName, string version, LunarConsoleSettings settings) - { - var settingsJson = JsonUtility.ToJson(settings); - - m_mainThreadId = Thread.CurrentThread.ManagedThreadId; - m_pluginClass = new AndroidJavaClass(kPluginClassName); - m_pluginClassRaw = m_pluginClass.GetRawClass(); - - IntPtr methodInit = GetStaticMethod(m_pluginClassRaw, "init", "(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;)V"); - var methodInitParams = new[] { - jval(targetName), - jval(methodName), - jval(version), - jval(settingsJson) - }; - CallStaticVoidMethod(methodInit, methodInitParams); - - AndroidJNI.DeleteLocalRef(methodInitParams[0].l); - AndroidJNI.DeleteLocalRef(methodInitParams[1].l); - AndroidJNI.DeleteLocalRef(methodInitParams[2].l); - AndroidJNI.DeleteLocalRef(methodInitParams[3].l); - - m_methodLogMessage = GetStaticMethod(m_pluginClassRaw, "logMessage", "(Ljava.lang.String;Ljava.lang.String;I)V"); - m_methodShowConsole = GetStaticMethod(m_pluginClassRaw, "showConsole", "()V"); - m_methodHideConsole = GetStaticMethod(m_pluginClassRaw, "hideConsole", "()V"); - m_methodClearConsole = GetStaticMethod(m_pluginClassRaw, "clearConsole", "()V"); - m_methodRegisterAction = GetStaticMethod(m_pluginClassRaw, "registerAction", "(ILjava.lang.String;)V"); - m_methodUnregisterAction = GetStaticMethod(m_pluginClassRaw, "unregisterAction", "(I)V"); - m_methodRegisterVariable = GetStaticMethod(m_pluginClassRaw, "registerVariable", "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZFFLjava/lang/String;)V"); - m_methodUpdateVariable = GetStaticMethod(m_pluginClassRaw, "updateVariable", "(ILjava/lang/String;)V"); - m_methodDestroy = GetStaticMethod(m_pluginClassRaw, "destroy", "()V"); - - m_messageQueue = new Queue(); - } - - ~PlatformAndroid() - { - m_pluginClass.Dispose(); - } - - #region IPlatform implementation - - public void Update() - { - lock (m_messageQueue) - { - while (m_messageQueue.Count > 0) - { - var entry = m_messageQueue.Dequeue(); - OnLogMessageReceived(entry.message, entry.stackTrace, entry.type); - } - } - } - - public void OnLogMessageReceived(string message, string stackTrace, LogType type) - { - if (Thread.CurrentThread.ManagedThreadId == m_mainThreadId) - { - m_args3[0] = jval(message); - m_args3[1] = jval(stackTrace); - m_args3[2] = jval((int)type); - - CallStaticVoidMethod(m_methodLogMessage, m_args3); - - AndroidJNI.DeleteLocalRef(m_args3[0].l); - AndroidJNI.DeleteLocalRef(m_args3[1].l); - } - else - { - lock (m_messageQueue) - { - m_messageQueue.Enqueue(new LogMessageEntry(message, stackTrace, type)); - } - } - } - - public bool ShowConsole() - { - try - { - CallStaticVoidMethod(m_methodShowConsole, m_args0); - return true; - } - catch (Exception e) - { - Debug.LogError("Exception while calling 'LunarConsole.ShowConsole': " + e.Message); - return false; - } - } - - public bool HideConsole() - { - try - { - CallStaticVoidMethod(m_methodHideConsole, m_args0); - return true; - } - catch (Exception e) - { - Debug.LogError("Exception while calling 'LunarConsole.HideConsole': " + e.Message); - return false; - } - } - - public void ClearConsole() - { - try - { - CallStaticVoidMethod(m_methodClearConsole, m_args0); - } - catch (Exception e) - { - Debug.LogError("Exception while calling 'LunarConsole.ClearConsole': " + e.Message); - } - } - - public void Destroy() - { - try - { - CallStaticVoidMethod(m_methodDestroy, m_args0); - } - catch (Exception e) - { - Debug.LogError("Exception while destroying platform: " + e.Message); - } - } - - public void OnActionRegistered(CRegistry registry, CAction action) - { - try - { - m_args2[0] = jval(action.Id); - m_args2[1] = jval(action.Name); - CallStaticVoidMethod(m_methodRegisterAction, m_args2); - AndroidJNI.DeleteLocalRef(m_args2[1].l); - } - catch (Exception e) - { - Debug.LogError("Exception while calling 'LunarConsole.OnActionRegistered': " + e.Message); - } - } - - public void OnActionUnregistered(CRegistry registry, CAction action) - { - try - { - m_args1[0] = jval(action.Id); - CallStaticVoidMethod(m_methodUnregisterAction, m_args1); - } - catch (Exception e) - { - Debug.LogError("Exception while calling 'LunarConsole.OnActionUnregistered': " + e.Message); - } - } - - public void OnVariableRegistered(CRegistry registry, CVar cvar) - { - try - { - m_args10[0] = jval(cvar.Id); - m_args10[1] = jval(cvar.Name); - m_args10[2] = jval(cvar.Type.ToString()); - m_args10[3] = jval(cvar.Value); - m_args10[4] = jval(cvar.DefaultValue); - m_args10[5] = jval((int)cvar.Flags); - m_args10[6] = jval(cvar.HasRange); - m_args10[7] = jval(cvar.Range.min); - m_args10[8] = jval(cvar.Range.max); - m_args10[9] = jval(cvar.AvailableValues != null ? cvar.AvailableValues.Join() : null); - CallStaticVoidMethod(m_methodRegisterVariable, m_args10); - AndroidJNI.DeleteLocalRef(m_args10[1].l); - AndroidJNI.DeleteLocalRef(m_args10[2].l); - AndroidJNI.DeleteLocalRef(m_args10[3].l); - AndroidJNI.DeleteLocalRef(m_args10[4].l); - AndroidJNI.DeleteLocalRef(m_args10[9].l); - } - catch (Exception e) - { - Debug.LogError("Exception while calling 'LunarConsole.OnVariableRegistered': " + e.Message); - } - } - - public void OnVariableUpdated(CRegistry registry, CVar cvar) - { - try - { - m_args2[0] = jval(cvar.Id); - m_args2[1] = jval(cvar.Value); - CallStaticVoidMethod(m_methodUpdateVariable, m_args2); - AndroidJNI.DeleteLocalRef(m_args2[1].l); - } - catch (Exception e) - { - Debug.LogError("Exception while calling 'LunarConsole.OnVariableUpdated': " + e.Message); - } - } - - #endregion - - #region Helpers - - private static IntPtr GetStaticMethod(IntPtr classRaw, string name, string signature) - { - return AndroidJNIHelper.GetMethodID(classRaw, name, signature, true); - } - - private void CallStaticVoidMethod(IntPtr method, jvalue[] args) - { - AndroidJNI.CallStaticVoidMethod(m_pluginClassRaw, method, args); - } - - private bool CallStaticBoolMethod(IntPtr method, jvalue[] args) - { - return AndroidJNI.CallStaticBooleanMethod(m_pluginClassRaw, method, args); - } - - private jvalue jval(string value) - { - jvalue val = new jvalue(); - val.l = AndroidJNI.NewStringUTF(value); - return val; - } - - private jvalue jval(bool value) - { - jvalue val = new jvalue(); - val.z = value; - return val; - } - - private jvalue jval(int value) - { - jvalue val = new jvalue(); - val.i = value; - return val; - } - - private jvalue jval(float value) - { - jvalue val = new jvalue(); - val.f = value; - return val; - } - - #endregion - } - - struct LogMessageEntry - { - public readonly string message; - public readonly string stackTrace; - public readonly LogType type; - - public LogMessageEntry(string message, string stackTrace, LogType type) - { - this.message = message; - this.stackTrace = stackTrace; - this.type = type; - } - } - - #endif // UNITY_ANDROID - - #if UNITY_EDITOR - - class PlatformEditor : IPlatform - { - public void Update() - { - } - - public void OnLogMessageReceived(string message, string stackTrace, LogType type) - { - } - - public bool ShowConsole() - { - return false; - } - - public bool HideConsole() - { - return false; - } - - public void ClearConsole() - { - } - - public void Destroy() - { - } - - public void OnActionRegistered(CRegistry registry, CAction action) - { - } - - public void OnActionUnregistered(CRegistry registry, CAction action) - { - } - - public void OnVariableRegistered(CRegistry registry, CVar cvar) - { - } - - public void OnVariableUpdated(CRegistry registry, CVar cvar) - { - } - } - - #endif // UNITY_ANDROID - - #endregion - - #region Native callback - - void NativeMessageCallback(string param) - { - IDictionary data = StringUtils.DeserializeString(param); - string name = data["name"]; - if (string.IsNullOrEmpty(name)) - { - Log.w("Can't handle native callback: 'name' is undefined"); - return; - } - - LunarConsoleNativeMessageHandler handler; - if (!nativeHandlerLookup.TryGetValue(name, out handler)) - { - Log.w("Can't handle native callback: handler not found '" + name + "'"); - return; - } - - try - { - handler(data); - } - catch (Exception e) - { - Log.e(e, "Exception while handling native callback '{0}'", name); - } - } - - IDictionary nativeHandlerLookup - { - get - { - if (m_nativeHandlerLookup == null) - { - m_nativeHandlerLookup = new Dictionary(); - m_nativeHandlerLookup["console_open"] = ConsoleOpenHandler; - m_nativeHandlerLookup["console_close"] = ConsoleCloseHandler; - m_nativeHandlerLookup["console_action"] = ConsoleActionHandler; - m_nativeHandlerLookup["console_variable_set"] = ConsoleVariableSetHandler; - m_nativeHandlerLookup["track_event"] = TrackEventHandler; - } - - return m_nativeHandlerLookup; - } - } - - void ConsoleOpenHandler(IDictionary data) - { - if (onConsoleOpened != null) - { - onConsoleOpened(); - } - - TrackEvent("Console", "console_open"); - } - - void ConsoleCloseHandler(IDictionary data) - { - if (onConsoleClosed != null) - { - onConsoleClosed(); - } - - TrackEvent("Console", "console_close"); - } - - void ConsoleActionHandler(IDictionary data) - { - string actionIdStr; - if (!data.TryGetValue("id", out actionIdStr)) - { - Log.w("Can't run action: data is not properly formatted"); - return; - } - - int actionId; - if (!int.TryParse(actionIdStr, out actionId)) - { - Log.w("Can't run action: invalid ID " + actionIdStr); - return; - } - - if (m_registry == null) - { - Log.w("Can't run action: registry is not property initialized"); - return; - } - - var action = m_registry.FindAction(actionId); - if (action == null) - { - Log.w("Can't run action: ID not found " + actionIdStr); - return; - } - - try - { - action.Execute(); - } - catch (Exception e) - { - Log.e(e, "Can't run action {0}", action.Name); - } - } - - void ConsoleVariableSetHandler(IDictionary data) - { - string variableIdStr; - if (!data.TryGetValue("id", out variableIdStr)) - { - Log.w("Can't set variable: missing 'id' property"); - return; - } - - string value; - if (!data.TryGetValue("value", out value)) - { - Log.w("Can't set variable: missing 'value' property"); - return; - } - - int variableId; - if (!int.TryParse(variableIdStr, out variableId)) - { - Log.w("Can't set variable: invalid ID " + variableIdStr); - return; - } - - if (m_registry == null) - { - Log.w("Can't set variable: registry is not property initialized"); - return; - } - - var variable = m_registry.FindVariable(variableId); - if (variable == null) - { - Log.w("Can't set variable: ID not found " + variableIdStr); - return; - } - - try - { - switch(variable.Type) - { - case CVarType.Boolean: - { - int intValue; - if (int.TryParse(value, out intValue) && (intValue == 0 || intValue == 1)) - { - variable.BoolValue = intValue == 1; - m_variablesDirty = true; - } - else - { - Log.e("Invalid boolean value: '{0}'", value); - } - break; - } - case CVarType.Integer: - { - int intValue; - if (int.TryParse(value, out intValue)) - { - variable.IntValue = intValue; - m_variablesDirty = true; - } - else - { - Log.e("Invalid integer value: '{0}'", value); - } - break; - } - case CVarType.Float: - { - float floatValue; - if (float.TryParse(value, out floatValue)) - { - variable.FloatValue = floatValue; - m_variablesDirty = true; - } - else - { - Log.e("Invalid float value: '{0}'", value); - } - break; - } - case CVarType.String: - { - variable.Value = value; - m_variablesDirty = true; - break; - } - case CVarType.Enum: - { - var index = Array.IndexOf(variable.AvailableValues, variable.Value); - if (index != -1) - { - variable.Value = value; - m_variablesDirty = true; - } - else - { - Log.e("Unexpected variable '{0}' value: {1}", variable.Name, variable.Value); - } - break; - } - default: - { - Log.e("Unexpected variable type: {0}", variable.Type); - break; - } - } - } - catch (Exception e) - { - Log.e(e, "Exception while trying to set variable '{0}'", variable.Name); - } - } - - void TrackEventHandler(IDictionary data) - { - #if LUNAR_CONSOLE_ANALYTICS_ENABLED - string category; - if (!data.TryGetValue("category", out category) || category.Length == 0) - { - Log.w("Can't track event: missing 'category' parameter"); - return; - } - - string action; - if (!data.TryGetValue("action", out action) || action.Length == 0) - { - Log.w("Can't track event: missing 'action' parameter"); - return; - } - - int value = LunarConsoleAnalytics.kUndefinedValue;; - string valueStr; - if (data.TryGetValue("value", out valueStr)) - { - if (!int.TryParse(valueStr, out value)) - { - Log.w("Can't track event: invalid 'value' parameter: {0}", valueStr); - return; - } - } - - LunarConsoleAnalytics.TrackEvent(category, action, value); - #endif // LUNAR_CONSOLE_ANALYTICS_ENABLED - } - - #region Analytics - - void TrackEvent(string category, string action, int value = LunarConsoleAnalytics.kUndefinedValue) - { - #if LUNAR_CONSOLE_ANALYTICS_ENABLED - StartCoroutine(LunarConsoleAnalytics.TrackEvent(category, action, value)); - #endif // LUNAR_CONSOLE_ANALYTICS_ENABLED - } - - #endregion - - #endregion - - #endif // LUNAR_CONSOLE_ENABLED - - #region Public API - - /// - /// Shows the console on top of everything. Does nothing if current platform is not supported or if the plugin is not initialized. - /// - public static void Show() - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.ShowConsole(); - } - else - { - Log.w("Can't show console: instance is not initialized. Make sure you've installed it correctly"); - } - #else - Log.w("Can't show console: plugin is disabled"); - #endif - #else - Log.w("Can't show console: current platform is not supported"); - #endif - } - - /// - /// Hides the console. Does nothing if platform is not supported or if plugin is not initialized. - /// - public static void Hide() - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.HideConsole(); - } - else - { - Log.w("Can't hide console: instance is not initialized. Make sure you've installed it correctly"); - } - #else - Log.w("Can't hide console: plugin is disabled"); - #endif - #else - Log.w("Can't hide console: current platform is not supported"); - #endif - } - - /// - /// Clears log messages. Does nothing if platform is not supported or if plugin is not initialized. - /// - public static void Clear() - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.ClearConsole(); - } - else - { - Log.w("Can't clear console: instance is not initialized. Make sure you've installed it correctly"); - } - #else - Log.w("Can't clear console: plugin is disabled"); - #endif - #else - Log.w("Can't clear console: current platform is not supported"); - #endif - } - - /// - /// Registers a user-defined action with a specific name and callback. - /// Does nothing if platform is not supported or if plugin is not initialized. - /// - /// Display name - /// Callback delegate - public static void RegisterAction(string name, Action action) - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_FULL - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.RegisterConsoleAction(name, action); - } - else - { - Log.w("Can't register action: instance is not initialized. Make sure you've installed it correctly"); - } - #else // LUNAR_CONSOLE_ENABLED - Log.w("Can't register action: plugin is disabled"); - #endif // LUNAR_CONSOLE_ENABLED - #else // LUNAR_CONSOLE_FULL - Log.w("Can't register action: feature is not available in FREE version. Learn more about PRO version: https://goo.gl/TLInmD"); - #endif // LUNAR_CONSOLE_FULL - #endif // LUNAR_CONSOLE_PLATFORM_SUPPORTED - } - - /// - /// Un-registers a user-defined action with a specific callback. - /// Does nothing if platform is not supported or if plugin is not initialized. - /// - public static void UnregisterAction(Action action) - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_FULL - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.UnregisterConsoleAction(action); - } - #endif // LUNAR_CONSOLE_ENABLED - #endif // LUNAR_CONSOLE_FULL - #endif // LUNAR_CONSOLE_PLATFORM_SUPPORTED - } - - /// - /// Un-registers a user-defined action with a specific name. - /// Does nothing if platform is not supported or if plugin is not initialized. - /// - public static void UnregisterAction(string name) - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_FULL - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.UnregisterConsoleAction(name); - } - #endif // LUNAR_CONSOLE_ENABLED - #endif // LUNAR_CONSOLE_FULL - #endif // LUNAR_CONSOLE_PLATFORM_SUPPORTED - } - - /// - /// Un-registers all user-defined actions with a specific target - /// (the object of the class which contains callback methods). - /// Does nothing if platform is not supported or if plugin is not initialized. - /// - public static void UnregisterAllActions(object target) - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_FULL - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.UnregisterAllConsoleActions(target); - } - #endif // LUNAR_CONSOLE_ENABLED - #endif // LUNAR_CONSOLE_FULL - #endif // LUNAR_CONSOLE_PLATFORM_SUPPORTED - } - - /// - /// Sets console enabled or disabled. - /// Disabled console cannot be opened by user or API calls and does not collect logs. - /// Does nothing if platform is not supported or if plugin is not initialized. - /// - public static void SetConsoleEnabled(bool enabled) - { - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - #if LUNAR_CONSOLE_FULL - #if LUNAR_CONSOLE_ENABLED - if (s_instance != null) - { - s_instance.SetConsoleInstanceEnabled(enabled); - } - #endif // LUNAR_CONSOLE_ENABLED - #endif // LUNAR_CONSOLE_FULL - #endif // LUNAR_CONSOLE_PLATFORM_SUPPORTED - } - - /// - /// Force variables to be written to a file - /// - public void MarkVariablesDirty() - { - m_variablesDirty = true; - } - - /// - /// Callback method to be called when the console is opened. You can pause your game here. - /// - public static Action onConsoleOpened { get; set; } - - /// - /// Callback method to be called when the console is closed. You can un-pause your game here. - /// - public static Action onConsoleClosed { get; set; } - - #if LUNAR_CONSOLE_ENABLED - - void ShowConsole() - { - if (m_platform != null) - { - m_platform.ShowConsole(); - } - } - - void HideConsole() - { - if (m_platform != null) - { - m_platform.HideConsole(); - } - } - - void ClearConsole() - { - if (m_platform != null) - { - m_platform.ClearConsole(); - } - } - - void RegisterConsoleAction(string name, Action actionDelegate) - { - if (m_registry != null) - { - m_registry.RegisterAction(name, actionDelegate); - } - else - { - Log.w("Can't register action '{0}': registry is not property initialized", name); - } - } - - void UnregisterConsoleAction(Action actionDelegate) - { - if (m_registry != null) - { - m_registry.Unregister(actionDelegate); - } - else - { - Log.w("Can't unregister action '{0}': registry is not property initialized", actionDelegate); - } - } - - void UnregisterConsoleAction(string name) - { - if (m_registry != null) - { - m_registry.Unregister(name); - } - else - { - Log.w("Can't unregister action '{0}': registry is not property initialized", name); - } - } - - void UnregisterAllConsoleActions(object target) - { - if (m_registry != null) - { - m_registry.UnregisterAll(target); - } - else - { - Log.w("Can't unregister actions for target '{0}': registry is not property initialized", target); - } - } - - void SetConsoleInstanceEnabled(bool enabled) - { - this.enabled = enabled; - } - - #endif // LUNAR_CONSOLE_ENABLED - - public static bool isConsoleEnabled { - get { - #if LUNAR_CONSOLE_ENABLED - return instance != null; - #else - return false; - #endif - } - } - - public static LunarConsole instance - { - get { return s_instance; } - } - - public CRegistry registry - { - get { return m_registry; } - } - - #endregion - } -} - -namespace LunarConsolePluginInternal -{ - public static class LunarConsoleConfig - { - public static bool consoleEnabled; - public static readonly bool consoleSupported; - public static readonly bool freeVersion; - public static readonly bool fullVersion; - - static LunarConsoleConfig() - { - #if LUNAR_CONSOLE_ENABLED - consoleEnabled = true; - #else - consoleEnabled = false; - #endif - - #if LUNAR_CONSOLE_PLATFORM_SUPPORTED - consoleSupported = true; - #else - consoleSupported = false; - #endif - - #if LUNAR_CONSOLE_FULL - freeVersion = false; - fullVersion = true; - #else - freeVersion = true; - fullVersion = false; - #endif - } - - public static bool actionsEnabled - { - get - { - if (consoleSupported && consoleEnabled) - { - #if UNITY_EDITOR - return true; - #elif UNITY_IOS || UNITY_IPHONE - return Application.platform == RuntimePlatform.IPhonePlayer; - #elif UNITY_ANDROID - return Application.platform == RuntimePlatform.Android; - #endif - } - - return false; - } - } - } - - #if UNITY_EDITOR - - public static class LunarConsolePluginEditorHelper - { - #if LUNAR_CONSOLE_FREE - [UnityEditor.MenuItem("Window/Lunar Mobile Console/Get PRO version...")] - static void GetProVersion() - { - Application.OpenURL("https://goo.gl/aJbTsx"); - } - #endif - - public static string ResolvePluginFile() - { - try - { - string currentFile = new System.Diagnostics.StackTrace(true).GetFrame(0).GetFileName(); - if (currentFile != null && File.Exists(currentFile)) - { - return currentFile; - } - } - catch (Exception e) - { - Log.e(e, "Exception while resolving plugin files location"); - } - - return null; - } - } - - #endif // UNITY_EDITOR - - #pragma warning disable 0618 - - /// - /// Class for collecting anonymous usage statistics - /// - public static class LunarConsoleAnalytics - { - public static readonly string TrackingURL = "https://www.google-analytics.com/collect"; - - public const int kUndefinedValue = int.MinValue; - - #if LUNAR_CONSOLE_ANALYTICS_ENABLED - - private static readonly string DefaultPayload; - - static LunarConsoleAnalytics() - { - // tracking id - #if LUNAR_CONSOLE_FULL - var trackingId = "UA-91768505-1"; - #else - var trackingId = "UA-91747018-1"; - #endif - - StringBuilder payload = new StringBuilder("v=1&t=event"); - payload.AppendFormat("&tid={0}", trackingId); - payload.AppendFormat("&cid={0}", WWW.EscapeURL(SystemInfo.deviceUniqueIdentifier)); - payload.AppendFormat("&ua={0}", WWW.EscapeURL(SystemInfo.operatingSystem)); - payload.AppendFormat("&av={0}", WWW.EscapeURL(Constants.Version)); - #if UNITY_EDITOR - payload.AppendFormat("&ds={0}", "editor"); - #else - payload.AppendFormat("&ds={0}", "player"); - #endif - - if (!string.IsNullOrEmpty(Application.productName)) - { - var productName = WWW.EscapeURL(Application.productName); - if (productName.Length <= 100) - { - payload.AppendFormat("&an={0}", productName); - } - } - - #if UNITY_5_6_OR_NEWER - var identifier = Application.identifier; - #else - var identifier = Application.bundleIdentifier; - #endif - if (!string.IsNullOrEmpty(identifier)) - { - var bundleIdentifier = WWW.EscapeURL(identifier); - if (bundleIdentifier.Length <= 150) - { - payload.AppendFormat("&aid={0}", bundleIdentifier); - } - } - if (!string.IsNullOrEmpty(Application.companyName)) - { - var companyName = WWW.EscapeURL(Application.companyName); - if (companyName.Length <= 150) - { - payload.AppendFormat("&aiid={0}", companyName); - } - } - - DefaultPayload = payload.ToString(); - } - - internal static IEnumerator TrackEvent(string category, string action, int value = kUndefinedValue) - { - var payload = CreatePayload(category, action, value); - var www = new WWW(TrackingURL, System.Text.Encoding.UTF8.GetBytes(payload)); - yield return www; - } - - #endif // LUNAR_CONSOLE_ANALYTICS_ENABLED - - public static string CreatePayload(string category, string action, int value) - { - #if LUNAR_CONSOLE_ANALYTICS_ENABLED - var payload = new StringBuilder(DefaultPayload); - payload.AppendFormat("&ec={0}", WWW.EscapeURL(category)); - payload.AppendFormat("&ea={0}", WWW.EscapeURL(action)); - if (value != kUndefinedValue) - { - payload.AppendFormat("&ev={0}", value.ToString()); - } - - return payload.ToString(); - #else - return null; - #endif // LUNAR_CONSOLE_ANALYTICS_ENABLED - } - } - - #pragma warning restore 0618 -} diff --git a/Assets/LunarConsole/Scripts/LunarConsole.cs.meta b/Assets/LunarConsole/Scripts/LunarConsole.cs.meta deleted file mode 100644 index 0c614b2..0000000 --- a/Assets/LunarConsole/Scripts/LunarConsole.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 086be258345234a029dca36e7ef25dc1 -timeCreated: 1438662487 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/LunarConsole.prefab b/Assets/LunarConsole/Scripts/LunarConsole.prefab deleted file mode 100644 index 7c8ff36..0000000 --- a/Assets/LunarConsole/Scripts/LunarConsole.prefab +++ /dev/null @@ -1,55 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &183544 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 406632} - - 114: {fileID: 11484734} - m_Layer: 0 - m_Name: LunarConsole - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &406632 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183544} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!114 &11484734 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183544} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 086be258345234a029dca36e7ef25dc1, type: 3} - m_Name: - m_EditorClassIdentifier: - capacity: 4096 - trim: 512 - gesture: 1 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 183544} - m_IsPrefabParent: 1 diff --git a/Assets/LunarConsole/Scripts/LunarConsoleAction.cs b/Assets/LunarConsole/Scripts/LunarConsoleAction.cs deleted file mode 100644 index 20757a5..0000000 --- a/Assets/LunarConsole/Scripts/LunarConsoleAction.cs +++ /dev/null @@ -1,514 +0,0 @@ -// -// LunarConsoleAction.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; - -using UnityEngine; -using UnityEngine.Events; - -using Object = UnityEngine.Object; - -using LunarConsolePlugin; - -namespace LunarConsolePluginInternal -{ - public enum LunarPersistentListenerMode - { - Void, - Bool, - Int, - Float, - String, - Object - } - - [Serializable] - internal class LunarArgumentCache : ISerializationCallbackReceiver - { - [SerializeField] - private UnityEngine.Object m_objectArgument; - - [SerializeField] - private string m_objectArgumentAssemblyTypeName; - - [SerializeField] - private int m_intArgument; - - [SerializeField] - private float m_floatArgument; - - [SerializeField] - private string m_stringArgument; - - [SerializeField] - private bool m_boolArgument; - - public UnityEngine.Object unityObjectArgument - { - get - { - return this.m_objectArgument; - } - set - { - this.m_objectArgument = value; - this.m_objectArgumentAssemblyTypeName = ((!(value != null)) ? string.Empty : value.GetType().AssemblyQualifiedName); - } - } - - public string unityObjectArgumentAssemblyTypeName - { - get - { - return this.m_objectArgumentAssemblyTypeName; - } - } - - public int intArgument - { - get - { - return this.m_intArgument; - } - set - { - this.m_intArgument = value; - } - } - - public float floatArgument - { - get - { - return this.m_floatArgument; - } - set - { - this.m_floatArgument = value; - } - } - - public string stringArgument - { - get - { - return this.m_stringArgument; - } - set - { - this.m_stringArgument = value; - } - } - - public bool boolArgument - { - get - { - return this.m_boolArgument; - } - set - { - this.m_boolArgument = value; - } - } - - private void TidyAssemblyTypeName() - { - if (!string.IsNullOrEmpty(this.m_objectArgumentAssemblyTypeName)) - { - int num = 2147483647; - int num2 = this.m_objectArgumentAssemblyTypeName.IndexOf(", Version="); - if (num2 != -1) - { - num = Math.Min(num2, num); - } - num2 = this.m_objectArgumentAssemblyTypeName.IndexOf(", Culture="); - if (num2 != -1) - { - num = Math.Min(num2, num); - } - num2 = this.m_objectArgumentAssemblyTypeName.IndexOf(", PublicKeyToken="); - if (num2 != -1) - { - num = Math.Min(num2, num); - } - if (num != 2147483647) - { - this.m_objectArgumentAssemblyTypeName = this.m_objectArgumentAssemblyTypeName.Substring(0, num); - } - } - } - - public void OnBeforeSerialize() - { - this.TidyAssemblyTypeName(); - } - - public void OnAfterDeserialize() - { - this.TidyAssemblyTypeName(); - } - } - - [Serializable] - public class LunarConsoleActionCall - { - private static readonly Type[] kParamTypes = { - typeof(int), - typeof(float), - typeof(string), - typeof(bool) - }; - - #pragma warning disable 0649 - - [SerializeField] - Object m_target; - - [SerializeField] - string m_methodName; - - [SerializeField] - LunarPersistentListenerMode m_mode; - - [SerializeField] - LunarArgumentCache m_arguments; - - #pragma warning restore 0649 - - public void Invoke() - { - MethodInfo method = null; - object[] invokeParams = null; - switch (m_mode) - { - case LunarPersistentListenerMode.Void: - method = ResolveMethod(m_target, m_methodName, typeof(void)); - invokeParams = new object[0]; - break; - - case LunarPersistentListenerMode.Bool: - method = ResolveMethod(m_target, m_methodName, typeof(bool)); - invokeParams = new object[] { m_arguments.boolArgument }; - break; - - case LunarPersistentListenerMode.Float: - method = ResolveMethod(m_target, m_methodName, typeof(float)); - invokeParams = new object[] { m_arguments.floatArgument }; - break; - - case LunarPersistentListenerMode.Int: - method = ResolveMethod(m_target, m_methodName, typeof(int)); - invokeParams = new object[] { m_arguments.intArgument }; - break; - - case LunarPersistentListenerMode.String: - method = ResolveMethod(m_target, m_methodName, typeof(string)); - invokeParams = new object[] { m_arguments.stringArgument }; - break; - - case LunarPersistentListenerMode.Object: - method = ResolveMethod(m_target, m_methodName, typeof(UnityEngine.Object)); - invokeParams = new object[] { m_arguments.unityObjectArgument }; - break; - - default: - Log.e("Unable to invoke action: unexpected invoke mode '{0}'", m_mode); - return; - } - - if (method != null) - { - method.Invoke(m_target, invokeParams); - } - else - { - Log.e("Unable to invoke action: can't resolve method '{0}'", m_methodName); - } - } - - static MethodInfo ResolveMethod(object target, string methodName, Type paramType) - { - var methods = ClassUtils.ListInstanceMethods(target.GetType(), delegate(MethodInfo method) - { - if (method.Name != methodName) - { - return false; - } - - var parameters = method.GetParameters(); - if (paramType == typeof(void)) - { - return parameters.Length == 0; - } - - return parameters.Length == 1 && (parameters[0].ParameterType == paramType || parameters[0].ParameterType.IsSubclassOf(paramType)); - }); - return methods.Count == 1 ? methods[0] : null; - } - - public static bool IsPersistantListenerValid(UnityEngine.Object target, string methodName, LunarPersistentListenerMode mode) - { - if (target == null) - { - return false; - } - - List methods = ListActionMethods(target); - foreach (var method in methods) - { - if (method.Name == methodName) - { - var parameters = method.GetParameters(); - if (mode == LunarPersistentListenerMode.Void) - { - if (parameters.Length == 0) - { - return true; - } - } - else if (parameters.Length == 1) - { - var paramType = parameters[0].ParameterType; - if (mode == LunarPersistentListenerMode.Bool && paramType == typeof(bool)) - { - return true; - } - if (mode == LunarPersistentListenerMode.Float && paramType == typeof(float)) - { - return true; - } - if (mode == LunarPersistentListenerMode.Int && paramType == typeof(int)) - { - return true; - } - if (mode == LunarPersistentListenerMode.String && paramType == typeof(string)) - { - return true; - } - if (mode == LunarPersistentListenerMode.Object && paramType.IsSubclassOf(typeof(UnityEngine.Object))) - { - return true; - } - } - } - } - - return false; - } - - public static List ListActionMethods(object target) - { - List methods = new List(); - ClassUtils.ListMethods(methods, target.GetType(), IsValidActionMethod, BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy); - return methods; - } - - /// - /// Determines if method is a valid action delegate - /// - private static bool IsValidActionMethod(MethodInfo method) - { - if (!method.IsPublic) - { - return false; // only list public methods - } - - if (method.ReturnType != typeof(void)) - { - return false; // non-void return type are not allowed - } - - if (method.IsAbstract) - { - return false; // don't list abstract methods - } - - var methodParams = method.GetParameters(); - if (methodParams.Length > 1) - { - return false; // no more then a single param - } - - var attributes = method.GetCustomAttributes(typeof(ObsoleteAttribute), false); - if (attributes != null && attributes.Length > 0) - { - return false; // no obsolete methods - } - - if (methodParams.Length == 1) - { - var paramType = methodParams[0].ParameterType; - if (!paramType.IsSubclassOf(typeof(UnityEngine.Object)) && Array.IndexOf(kParamTypes, paramType) == -1) - { - return false; - } - } - - return true; - } - - public Object target - { - get { return m_target; } - } - - public string methodName - { - get { return m_methodName; } - } - - public LunarPersistentListenerMode mode - { - get { return m_mode; } - } - } - - public class LunarConsoleAction : MonoBehaviour - { - #pragma warning disable 0649 - - [SerializeField] - string m_title = "Untitled Action"; - - [SerializeField] - [HideInInspector] - List m_calls; - - #pragma warning restore 0649 - - void Awake() - { - if (!actionsEnabled) - { - Destroy(this); - } - } - - void Start() - { - if (actionsEnabled) - { - RegisterAction(); - } - else - { - Destroy(this); - } - } - - void OnValidate() - { - if (m_calls != null && m_calls.Count > 0) - { - foreach (var call in m_calls) - { - Validate(call); - } - } - } - - void Validate(LunarConsoleActionCall call) - { - if (call.target == null) - { - Debug.LogWarning(string.Format("Action '{0}' ({1}) is missing a target object", m_title, gameObject.name), gameObject); - } - else if (!LunarConsoleActionCall.IsPersistantListenerValid(call.target, call.methodName, call.mode)) - { - Debug.LogWarning(string.Format("Action '{0}' ({1}) is missing a handler <{2}.{3} ({4})>", m_title, gameObject.name, call.target.GetType(), call.methodName, ModeParamTypeName(call.mode)), gameObject); - } - } - - void OnDestroy() - { - if (actionsEnabled) - { - UnregisterAction(); - } - } - - public List calls - { - get { return m_calls; } - } - - private void RegisterAction() - { - LunarConsole.RegisterAction(m_title, InvokeAction); - } - - private void UnregisterAction() - { - LunarConsole.UnregisterAction(InvokeAction); - } - - private void InvokeAction() - { - if (m_calls != null && m_calls.Count > 0) - { - foreach (LunarConsoleActionCall call in m_calls) - { - call.Invoke(); - } - } - else - { - Debug.LogWarningFormat("Action '{0}' has 0 calls", m_title); - } - } - - static string ModeParamTypeName(LunarPersistentListenerMode mode) - { - switch (mode) - { - case LunarPersistentListenerMode.Void: - return ""; - - case LunarPersistentListenerMode.Bool: - return "bool"; - - case LunarPersistentListenerMode.Float: - return "float"; - - case LunarPersistentListenerMode.Int: - return "int"; - - case LunarPersistentListenerMode.String: - return "string"; - - case LunarPersistentListenerMode.Object: - return "UnityEngine.Object"; - } - - return "???"; - } - - bool actionsEnabled - { - get { return LunarConsoleConfig.actionsEnabled; } - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/LunarConsoleAction.cs.meta b/Assets/LunarConsole/Scripts/LunarConsoleAction.cs.meta deleted file mode 100644 index 7ad7669..0000000 --- a/Assets/LunarConsole/Scripts/LunarConsoleAction.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: ec77148523b71dc4fa9c635588284aea -timeCreated: 1484261353 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils.meta b/Assets/LunarConsole/Scripts/Utils.meta deleted file mode 100644 index f7c5892..0000000 --- a/Assets/LunarConsole/Scripts/Utils.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: b9837f95f6e094d2d9530d6d7d6eb134 -folderAsset: yes -timeCreated: 1467072382 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/BaseList.cs b/Assets/LunarConsole/Scripts/Utils/BaseList.cs deleted file mode 100644 index c89425f..0000000 --- a/Assets/LunarConsole/Scripts/Utils/BaseList.cs +++ /dev/null @@ -1,156 +0,0 @@ -// -// BaseList.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections.Generic; - -namespace LunarConsolePluginInternal -{ - abstract class BaseList where T : class // TODO: thread safety - { - protected readonly List list; - - private readonly T nullElement; - private int removedCount; - private bool locked; - - protected BaseList(T nullElement) - : this(nullElement, 0) - { - } - - protected BaseList(T nullElement, int capacity) - : this(new List(capacity), nullElement) - { - if (nullElement == null) - { - throw new ArgumentNullException("nullElement"); - } - } - - protected BaseList(List list, T nullElement) - { - this.list = list; - this.nullElement = nullElement; - } - - public virtual bool Add(T e) - { - if (e == null) - { - throw new ArgumentNullException("e"); - } - - // Assert.NotContains(e, list); - list.Add(e); - - return true; - } - - public virtual bool Remove(T e) - { - int index = list.IndexOf(e); - if (index != -1) - { - RemoveAt(index); - return true; - } - - return false; - } - - public virtual T Get(int index) - { - return list[index]; - } - - public virtual int IndexOf(T e) - { - return list.IndexOf(e); - } - - public virtual void RemoveAt(int index) - { - if (locked) - { - ++removedCount; - list[index] = nullElement; - } - else - { - list.RemoveAt(index); - } - } - - public virtual void Clear() - { - if (locked) - { - for (int i = 0; i < list.Count; ++i) - { - list[i] = nullElement; - } - removedCount = list.Count; - } - else - { - list.Clear(); - removedCount = 0; - } - } - - public virtual bool Contains(T e) - { - return list.Contains(e); - } - - private void ClearRemoved() - { - for (int i = list.Count - 1; removedCount > 0 && i >= 0; --i) - { - if (list[i] == nullElement) - { - list.RemoveAt(i); - --removedCount; - } - } - } - - public virtual int Count - { - get { return list.Count - removedCount; } - } - - protected void Lock() - { - // Assert.IsFalse(locked); - locked = true; - } - - protected void Unlock() - { - // Assert.IsTrue(locked); - ClearRemoved(); - locked = false; - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Utils/BaseList.cs.meta b/Assets/LunarConsole/Scripts/Utils/BaseList.cs.meta deleted file mode 100644 index 1923f9e..0000000 --- a/Assets/LunarConsole/Scripts/Utils/BaseList.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 9acb3ffead3884146b74243d9ed5048d -timeCreated: 1459385754 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/ClassUtils.cs b/Assets/LunarConsole/Scripts/Utils/ClassUtils.cs deleted file mode 100644 index e8fdad7..0000000 --- a/Assets/LunarConsole/Scripts/Utils/ClassUtils.cs +++ /dev/null @@ -1,175 +0,0 @@ -// -// ClassUtils.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Reflection; - -using UnityEngine; - -namespace LunarConsolePluginInternal -{ - public delegate bool ListMethodsFilter(MethodInfo method); - - public static class ClassUtils - { - public static T Cast(object obj) where T : class - { - return obj as T; - } - - public static T TryCast(object obj) where T : class - { - return obj as T; - } - - public static T CreateInstance(Type t, params object[] args) where T : class - { - try - { - return (T) Activator.CreateInstance(t, args); - } - catch (Exception e) - { - Log.e(e, "Exception while creating an instance of type '{0}'", t); - } - - return null; - } - - public static bool IsValidEnumValue(int value) - { - return Enum.IsDefined(typeof(T), value); - } - - public static bool IsValidEnumValue(T value) - { - return Enum.IsDefined(typeof(T), value); - } - - public static string TypeShortName(Type type) - { - if (type != null) - { - if (type == typeof(int)) return "int"; - if (type == typeof(float)) return "float"; - if (type == typeof(string)) return "string"; - if (type == typeof(long)) return "long"; - if (type == typeof(bool)) return "bool"; - - return type.Name; - } - - return null; - } - - public static List ListInstanceMethods(Type type, ListMethodsFilter filter) - { - return ListInstanceMethods(new List(), type, filter); - } - - public static List ListInstanceMethods(List outList, Type type, ListMethodsFilter filter) - { - return ListMethods(outList, type, filter, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); - } - - public static List ListMethods(List outList, Type type, ListMethodsFilter filter, BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static) - { - MethodInfo[] methods = type.GetMethods(flags); - - if (filter == null) - { - outList.AddRange(methods); - return outList; - } - - foreach (MethodInfo m in methods) - { - if (filter(m)) - { - outList.Add(m); - } - } - return outList; - } - - public static bool ShouldListMethod(MethodInfo m, string prefix) - { - return StringUtils.StartsWithIgnoreCase(m.Name, prefix); - } - - public static T GetObjectField(object target, string name) - { - if (target == null) - { - throw new ArgumentNullException("target"); - } - - FieldInfo[] fields = target.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); - foreach (FieldInfo field in fields) - { - if (field.Name == name) - { - return (T)field.GetValue(target); - } - } - - throw new ArgumentException("Can't find field: " + name); - } - - public static Type TypeForName(string typeName) - { - if (typeName == null) - { - throw new ArgumentNullException("typeName"); - } - - try - { - foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) - { - try - { - foreach (Type type in assembly.GetTypes()) - { - if (type.FullName == typeName) - { - return type; - } - } - } - catch (Exception) - { - } - } - } - catch (Exception e) - { - Log.e(e, "Exception while resolving type for name '{0}'", typeName); - } - - return null; - } - } -} diff --git a/Assets/LunarConsole/Scripts/Utils/ClassUtils.cs.meta b/Assets/LunarConsole/Scripts/Utils/ClassUtils.cs.meta deleted file mode 100644 index 9422234..0000000 --- a/Assets/LunarConsole/Scripts/Utils/ClassUtils.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 5c9fba7e1e57a4d4080fa084cf1bbb5f -timeCreated: 1456188119 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/Collections.cs b/Assets/LunarConsole/Scripts/Utils/Collections.cs deleted file mode 100644 index c36a137..0000000 --- a/Assets/LunarConsole/Scripts/Utils/Collections.cs +++ /dev/null @@ -1,42 +0,0 @@ -// -// Collections.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System.Collections.Generic; -using System.Text; - -namespace LunarConsolePluginInternal -{ - public static class Collections - { - public static string Join(this IList list, string separator = ",") - { - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < list.Count; ++i) - { - builder.Append(list[i]); - if (i < list.Count - 1) builder.Append(separator); - } - - return builder.ToString(); - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Utils/Collections.cs.meta b/Assets/LunarConsole/Scripts/Utils/Collections.cs.meta deleted file mode 100644 index 2e7dc97..0000000 --- a/Assets/LunarConsole/Scripts/Utils/Collections.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 3b750e5655ab4ec8815d75147013f8bb -timeCreated: 1596493763 \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Utils/ColorUtils.cs b/Assets/LunarConsole/Scripts/Utils/ColorUtils.cs deleted file mode 100644 index 2f7ed02..0000000 --- a/Assets/LunarConsole/Scripts/Utils/ColorUtils.cs +++ /dev/null @@ -1,63 +0,0 @@ -// -// ColorUtils.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; -using System.Collections; - -namespace LunarConsolePluginInternal -{ - static class ColorUtils - { - private const float kMultiplier = 1.0f / 255.0f; - - public static Color FromRGBA(uint value) - { - float r = ((value >> 24) & 0xff) * kMultiplier; - float g = ((value >> 16) & 0xff) * kMultiplier; - float b = ((value >> 8) & 0xff) * kMultiplier; - float a = (value & 0xff) * kMultiplier; - - return new Color(r, g, b, a); - } - - public static Color FromRGB(uint value) - { - float r = ((value >> 16) & 0xff) * kMultiplier; - float g = ((value >> 8) & 0xff) * kMultiplier; - float b = (value & 0xff) * kMultiplier; - float a = 1.0f; - - return new Color(r, g, b, a); - } - - public static uint ToRGBA(ref Color value) - { - uint r = (uint)(value.r * 255.0f) & 0xff; - uint g = (uint)(value.g * 255.0f) & 0xff; - uint b = (uint)(value.b * 255.0f) & 0xff; - uint a = (uint)(value.a * 255.0f) & 0xff; - - return (r << 24) | (g << 16) | (b << 8) | a; - } - } -} - diff --git a/Assets/LunarConsole/Scripts/Utils/ColorUtils.cs.meta b/Assets/LunarConsole/Scripts/Utils/ColorUtils.cs.meta deleted file mode 100644 index ceebd76..0000000 --- a/Assets/LunarConsole/Scripts/Utils/ColorUtils.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: bae9f33e68808460c8751116f0f196e7 -timeCreated: 1459385833 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/FileUtils.cs b/Assets/LunarConsole/Scripts/Utils/FileUtils.cs deleted file mode 100644 index d785928..0000000 --- a/Assets/LunarConsole/Scripts/Utils/FileUtils.cs +++ /dev/null @@ -1,96 +0,0 @@ -// -// FileUtils.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -#if UNITY_EDITOR - -using System.Collections; -using System.Collections.Generic; -using System.IO; - -using UnityEngine; -using UnityEditor; - -using System; - -namespace LunarConsolePluginInternal -{ - public static class FileUtils - { - private static string projectDir; - private static string assetsDir; - - static FileUtils() - { - projectDir = new DirectoryInfo(Application.dataPath).Parent.FullName; - assetsDir = new DirectoryInfo(Application.dataPath).FullName; - } - - public static string GetAssetPath(params string[] pathComponents) - { - string path = pathComponents[0]; - for (int i = 1; i < pathComponents.Length; ++i) - { - path = Path.Combine(path, pathComponents[i]); - } - - return FixPath(MakeRelativePath(assetsDir, path)); - } - - public static bool AssetPathExists(string assetPath) - { - var fullPath = GetFullAssetPath(assetPath); - return File.Exists(fullPath) || Directory.Exists(fullPath); - } - - public static string GetFullAssetPath(string path) - { - return FixPath(Path.Combine(projectDir, path)); - } - - public static string FixAssetPath(string path) - { - return path.Replace('\\', '/'); - } - - public static string FixPath(string path) - { - #if UNITY_EDITOR_WIN - return path.Replace('/', '\\'); - #else - return path.Replace('\\', '/'); - #endif - } - - #pragma warning disable 0612 - #pragma warning disable 0618 - - public static string MakeRelativePath(string parentPath, string filePath) - { - return Uri.UnescapeDataString(new Uri(parentPath, false).MakeRelative(new Uri(filePath))); - } - - #pragma warning restore 0612 - #pragma warning restore 0618 - } -} - -#endif // UNITY_EDITOR diff --git a/Assets/LunarConsole/Scripts/Utils/FileUtils.cs.meta b/Assets/LunarConsole/Scripts/Utils/FileUtils.cs.meta deleted file mode 100644 index a9288ee..0000000 --- a/Assets/LunarConsole/Scripts/Utils/FileUtils.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 4475e6a7935a344c599e7791f5bc6a59 -timeCreated: 1491893172 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/Iterator.cs b/Assets/LunarConsole/Scripts/Utils/Iterator.cs deleted file mode 100644 index 357f413..0000000 --- a/Assets/LunarConsole/Scripts/Utils/Iterator.cs +++ /dev/null @@ -1,117 +0,0 @@ -// -// Iterator.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using UnityEngine; - -using System; -using System.Collections.Generic; - -namespace LunarConsolePluginInternal -{ - class Iterator - { - private IList m_target; - private int m_current; - - public Iterator(IList target) - { - Init(target); - } - - public void Init(IList target) - { - if (target == null) - { - throw new ArgumentNullException("target"); - } - - m_target = target; - m_current = -1; - } - - public bool HasNext(int items = 1) - { - return m_current + items < Count; - } - - public bool HasPrev(int items = 1) - { - return m_current - items >= 0; - } - - public void Skip(int items = 1) - { - m_current += items; - } - - public bool TrySkip(int items = 1) - { - if (HasNext(items)) - { - Skip(items); - return true; - } - - return false; - } - - public T Current() - { - return m_target[m_current]; - } - - public T Next() - { - ++m_current; - return Current(); - } - - public T Prev() - { - --m_current; - return Current(); - } - - public void Reset() - { - m_current = -1; - } - - public int Count - { - get { return m_target.Count; } - } - - public int Position - { - get { return m_current; } - set - { - if (value < -1 || value >= Count) - { - throw new IndexOutOfRangeException("Invalid position: " + value); - } - m_current = value; - } - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Utils/Iterator.cs.meta b/Assets/LunarConsole/Scripts/Utils/Iterator.cs.meta deleted file mode 100644 index c13e363..0000000 --- a/Assets/LunarConsole/Scripts/Utils/Iterator.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: e51ecc04c3fb247e9acabb5a25d2cf32 -timeCreated: 1456185692 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/Log.cs b/Assets/LunarConsole/Scripts/Utils/Log.cs deleted file mode 100644 index 26387b9..0000000 --- a/Assets/LunarConsole/Scripts/Utils/Log.cs +++ /dev/null @@ -1,116 +0,0 @@ -// -// Log.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -// -// Log.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2019 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -using System; -using System.Collections; -using System.Collections.Generic; - -using UnityEngine; - -namespace LunarConsolePluginInternal -{ - static class Log - { - static readonly string TAG = "[" + Constants.PluginDisplayName + "]"; - - [System.Diagnostics.Conditional("LUNAR_CONSOLE_DEVELOPMENT")] - public static void dev(string format, params object[] args) - { - Debug.Log(TAG + " " + StringUtils.TryFormat(format, args)); - } - - public static void e(Exception exception) - { - if (exception != null) - { - Debug.LogError(TAG + " " + exception.Message + "\n" + exception.StackTrace); - } - else - { - Debug.LogError(TAG + " Exception"); - } - } - - public static void e(Exception exception, string format, params object[] args) - { - e(exception, StringUtils.TryFormat(format, args)); - } - - public static void e(Exception exception, string message) - { - if (exception != null) - { - Debug.LogError(TAG + " " + message + "\n" + exception.Message + "\n" + exception.StackTrace); - Exception innerException = exception; - while ((innerException = innerException.InnerException) != null) - { - Debug.LogError(innerException.Message + "\n" + innerException.StackTrace); - } - } - else - { - Debug.LogError(TAG + " " + message); - } - } - - public static void e(string format, params object[] args) - { - e(StringUtils.TryFormat(format, args)); - } - - public static void e(string message) - { - Debug.LogError(TAG + " " + message); - } - - public static void w(string format, params object[] args) - { - w(StringUtils.TryFormat(format, args)); - } - - public static void w(string message) - { - Debug.LogWarning(TAG + " " + message); - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Utils/Log.cs.meta b/Assets/LunarConsole/Scripts/Utils/Log.cs.meta deleted file mode 100644 index 8e96c18..0000000 --- a/Assets/LunarConsole/Scripts/Utils/Log.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 29526edaa2fe449bca5fccc2985fe4b2 -timeCreated: 1484449846 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/ReflectionUtils.cs b/Assets/LunarConsole/Scripts/Utils/ReflectionUtils.cs deleted file mode 100644 index efce37f..0000000 --- a/Assets/LunarConsole/Scripts/Utils/ReflectionUtils.cs +++ /dev/null @@ -1,327 +0,0 @@ -// -// ReflectionUtils.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Text; - -using UnityEngine; - -namespace LunarConsolePluginInternal -{ - public delegate bool ReflectionTypeFilter(Type type); - - static class ReflectionUtils - { - #region Invocation - - private static readonly object[] EMPTY_INVOKE_ARGS = new object[0]; - - public static bool Invoke(Delegate del, string[] invokeArgs) - { - if (del == null) - { - throw new ArgumentNullException("del"); - } - - return Invoke(del.Target, del.Method, invokeArgs); - } - - public static bool Invoke(object target, MethodInfo method, string[] invokeArgs) - { - ParameterInfo[] parameters = method.GetParameters(); - if (parameters.Length == 0) - { - return Invoke(target, method, EMPTY_INVOKE_ARGS); - } - - List invokeList = new List(invokeArgs.Length); - - Iterator iter = new Iterator(invokeArgs); - foreach (ParameterInfo param in parameters) - { - invokeList.Add(ResolveInvokeParameter(param, iter)); - } - - return Invoke(target, method, invokeList.ToArray()); - } - - private static bool Invoke(object target, MethodInfo method, object[] args) - { - if (method.ReturnType == typeof(bool)) - { - return (bool)method.Invoke(target, args); - } - - method.Invoke(target, args); - return true; - } - - private static object ResolveInvokeParameter(ParameterInfo param, Iterator iter) - { - if (param.IsOptional && !iter.HasNext()) - { - return param.DefaultValue; - } - - Type type = param.ParameterType; - - if (type == typeof(string[])) - { - List values = new List(); - while (iter.HasNext()) - { - values.Add(NextArg(iter)); - } - return values.ToArray(); - } - - if (type == typeof(string)) - { - return NextArg(iter); - } - - if (type == typeof(float)) - { - return NextFloatArg(iter); - } - - if (type == typeof(int)) - { - return NextIntArg(iter); - } - - if (type == typeof(bool)) - { - return NextBoolArg(iter); - } - - if (type == typeof(Vector2)) - { - float x = NextFloatArg(iter); - float y = NextFloatArg(iter); - - return new Vector2(x, y); - } - - if (type == typeof(Vector3)) - { - float x = NextFloatArg(iter); - float y = NextFloatArg(iter); - float z = NextFloatArg(iter); - - return new Vector3(x, y, z); - } - - if (type == typeof(Vector4)) - { - float x = NextFloatArg(iter); - float y = NextFloatArg(iter); - float z = NextFloatArg(iter); - float w = NextFloatArg(iter); - - return new Vector4(x, y, z, w); - } - - if (type == typeof(int[])) - { - List values = new List(); - while (iter.HasNext()) - { - values.Add(NextIntArg(iter)); - } - return values.ToArray(); - } - - if (type == typeof(float[])) - { - List values = new List(); - while (iter.HasNext()) - { - values.Add(NextFloatArg(iter)); - } - return values.ToArray(); - } - - if (type == typeof(bool[])) - { - List values = new List(); - while (iter.HasNext()) - { - values.Add(NextBoolArg(iter)); - } - return values.ToArray(); - } - - throw new ReflectionException("Unsupported value type: " + type); - } - - public static int NextIntArg(Iterator iter) - { - string arg = NextArg(iter); - int value; - - if (int.TryParse(arg, out value)) - { - return value; - } - - throw new ReflectionException("Can't parse int arg: '" + arg + "'"); - } - - public static float NextFloatArg(Iterator iter) - { - string arg = NextArg(iter); - float value; - - if (float.TryParse(arg, out value)) - { - return value; - } - - throw new ReflectionException("Can't parse float arg: '" + arg + "'"); - } - - public static bool NextBoolArg(Iterator iter) - { - string arg = NextArg(iter).ToLower(); - if (arg == "1" || arg == "yes" || arg == "true") return true; - if (arg == "0" || arg == "no" || arg == "false") return false; - - throw new ReflectionException("Can't parse bool arg: '" + arg + "'"); - } - - public static string NextArg(Iterator iter) - { - if (iter.HasNext()) - { - string arg = StringUtils.UnArg(iter.Next()); - if (!IsValidArg(arg)) - { - throw new ReflectionException("Invalid arg: " + arg); - } - - return arg; - } - - throw new ReflectionException("Unexpected end of args"); - } - - public static bool IsValidArg(string arg) - { - // TODO: think about a better way of checking args - // check is omitted since it messes up with operation commands (e.g. "bind x -variable") - // return !arg.StartsWith("-") || StringUtils.IsNumeric(arg); - return true; - } - - #endregion - - #region Assembly Helper - - public static List ListAssemblies(Func filter) - { - List result = new List(); - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) - { - if (filter(assembly)) - { - result.Add(assembly); - } - } - return result; - } - - public static List FindAttributeTypes(Assembly assembly) where T : Attribute - { - return FindAttributeTypes(assembly, typeof(T)); - } - - public static List FindAttributeTypes(Assembly assembly, Type attributeType) - { - return FindTypes(assembly, delegate(Type type) - { - var attributes = type.GetCustomAttributes(attributeType, false); - return attributes != null && attributes.Length > 0; - }); - } - - public static List FindTypes(Assembly assembly, ReflectionTypeFilter filter) - { - var list = new List(); - - try - { - foreach (var type in GetAssemblyTypes(assembly)) - { - if (filter(type)) - { - list.Add(type); - } - } - } - catch (Exception e) - { - Log.e(e, "Unable to list types for assembly: {0}", assembly); - } - - return list; - } - - private static IEnumerable GetAssemblyTypes(Assembly assembly) - { - try - { - return assembly.GetTypes(); - } - catch (ReflectionTypeLoadException e) - { - List result = new List(); - Type[] types = e.Types; - for (int i = 0; i < types.Length; ++i) - { - if (types[i] != null) - { - result.Add(types[i]); - } - } - return result; - } - } - - #endregion - } - - class ReflectionException : Exception - { - public ReflectionException(string message) - : base(message) - { - } - - public ReflectionException(string format, params object[] args) - : this(StringUtils.TryFormat(format, args)) - { - } - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Utils/ReflectionUtils.cs.meta b/Assets/LunarConsole/Scripts/Utils/ReflectionUtils.cs.meta deleted file mode 100644 index 8728b1f..0000000 --- a/Assets/LunarConsole/Scripts/Utils/ReflectionUtils.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 1e20f19d8258b455bba5e611711636e7 -timeCreated: 1456188119 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts/Utils/StringUtils.cs b/Assets/LunarConsole/Scripts/Utils/StringUtils.cs deleted file mode 100644 index 0f5d853..0000000 --- a/Assets/LunarConsole/Scripts/Utils/StringUtils.cs +++ /dev/null @@ -1,693 +0,0 @@ -// -// StringUtils.cs -// -// Lunar Unity Mobile Console -// https://github.com/SpaceMadness/lunar-unity-console -// -// Copyright 2015-2021 Alex Lementuev, SpaceMadness. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Text; -using System.Text.RegularExpressions; - -using UnityEngine; - -namespace LunarConsolePluginInternal -{ - public static class StringUtils - { - private static readonly char[] kSpaceSplitChars = { ' ' }; - - internal static string TryFormat(string format, params object[] args) - { - if (format != null && args != null && args.Length > 0) - { - try - { - return string.Format(format, args); - } - catch (Exception e) - { - Debug.LogError("Error while formatting string: " + e.Message); - } - } - - return format; - } - - ////////////////////////////////////////////////////////////////////////////// - - public static bool StartsWithIgnoreCase(string str, string prefix) - { - return str != null && prefix != null && str.StartsWith(prefix, StringComparison.OrdinalIgnoreCase); - } - - public static bool EqualsIgnoreCase(string a, string b) - { - return string.Equals(a, b, StringComparison.OrdinalIgnoreCase); - } - - public static IList Filter(IList strings, string prefix) - { - if (string.IsNullOrEmpty(prefix)) - { - return strings; - } - - IList result = new List(); - foreach (string str in strings) - { - if (StartsWithIgnoreCase(str, prefix)) - { - result.Add(str); - } - } - - return result; - } - - ////////////////////////////////////////////////////////////////////////////// - - #region Parsing - - public static int ParseInt(string str) - { - return ParseInt(str, 0); - } - - public static int ParseInt(string str, int defValue) - { - if (!string.IsNullOrEmpty(str)) - { - int value; - bool succeed = int.TryParse(str, out value); - return succeed ? value : defValue; - } - - return defValue; - } - - public static int ParseInt(string str, out bool succeed) - { - if (!string.IsNullOrEmpty(str)) - { - int value; - succeed = int.TryParse(str, out value); - return succeed ? value : 0; - } - - succeed = false; - return 0; - } - - public static float ParseFloat(string str) - { - return ParseFloat(str, 0.0f); - } - - public static float ParseFloat(string str, float defValue) - { - if (!string.IsNullOrEmpty(str)) - { - float value; - bool succeed = float.TryParse(str, out value); - return succeed ? value : defValue; - } - - return defValue; - } - - public static float ParseFloat(string str, out bool succeed) - { - if (!string.IsNullOrEmpty(str)) - { - float value; - succeed = float.TryParse(str, out value); - return succeed ? value : 0.0f; - } - - succeed = false; - return 0.0f; - } - - public static bool ParseBool(string str) - { - return ParseBool(str, false); - } - - public static bool ParseBool(string str, bool defValue) - { - if (!string.IsNullOrEmpty(str)) - { - bool value; - bool succeed = bool.TryParse(str, out value); - return succeed ? value : defValue; - } - - return defValue; - } - - public static bool ParseBool(string str, out bool succeed) - { - if (!string.IsNullOrEmpty(str)) - { - bool value; - succeed = bool.TryParse(str, out value); - return succeed ? value : false; - } - - succeed = false; - return false; - } - - public static float[] ParseFloats(string str) - { - return str != null ? ParseFloats(str.Split(kSpaceSplitChars, StringSplitOptions.RemoveEmptyEntries)) : null; - } - - public static float[] ParseFloats(string[] args) - { - if (args != null) - { - float[] floats = new float[args.Length]; - for (int i = 0; i < args.Length; ++i) - { - if (!float.TryParse(args[i], out floats[i])) - { - return null; - } - } - - return floats; - } - - return null; - } - - public static bool IsNumeric(string str) - { - double value; - return double.TryParse(str, out value); - } - - public static bool IsInteger(string str) - { - int value; - return int.TryParse(str, out value); - } - - #endregion - - ////////////////////////////////////////////////////////////////////////////// - - #region Words - - internal static int StartOfTheWordOffset(string value, int index) - { - return StartOfTheWord(value, index) - index; - } - - internal static int StartOfTheWord(string value, int index) - { - int i = index - 1; - - while (i >= 0 && IsSeparator(value[i])) - { - --i; - } - - while (i >= 0 && !IsSeparator(value[i])) - { - --i; - } - - return i + 1; - } - - internal static int EndOfTheWordOffset(string value, int index) - { - return EndOfTheWord(value, index) - index; - } - - internal static int EndOfTheWord(string value, int index) - { - int i = index; - - while (i < value.Length && IsSeparator(value[i])) - { - ++i; - } - - while (i < value.Length && !IsSeparator(value[i])) - { - ++i; - } - - return i; - } - - private static bool IsSeparator(char ch) - { - return !(char.IsLetter(ch) || char.IsDigit(ch)); - } - - #endregion - - ////////////////////////////////////////////////////////////////////////////// - - #region Lines - - internal static int MoveLineUp(string value, int index) - { - if (index > 0 && index <= value.Length) - { - int startOfPrevLineIndex = StartOfPrevLineIndex(value, index); - if (startOfPrevLineIndex == -1) // this is the first line (or single line): can't move up - { - return index; - } - - int offsetInLine = OffsetInLine(value, index); - int endOfPrevLineIndex = EndOfPrevLineIndex(value, index); - - return Mathf.Min(startOfPrevLineIndex + offsetInLine, endOfPrevLineIndex); - } - - return index; - } - - internal static int MoveLineDown(string value, int index) - { - if (index >= 0 && index < value.Length) - { - int startOfNextLineIndex = StartOfNextLineIndex(value, index); - if (startOfNextLineIndex == -1) - { - return index; // the last line (of single line): can't move down - } - - int offsetInLine = OffsetInLine(value, index); - int endOfNextLineIndex = EndOfNextLineIndex(value, index); - - return Mathf.Min(startOfNextLineIndex + offsetInLine, endOfNextLineIndex); - } - - return index; - } - - internal static int StartOfLineOffset(string value, int index) - { - return StartOfLineIndex(value, index) - index; - } - - internal static int StartOfLineIndex(string value, int index) - { - return index > 0 ? value.LastIndexOf('\n', index - 1) + 1 : 0; - } - - internal static int EndOfLineOffset(string value, int index) - { - return EndOfLineIndex(value, index) - index; - } - - internal static int EndOfLineIndex(string value, int index) - { - if (index < value.Length) - { - int nextLineBreakIndex = value.IndexOf('\n', index); - if (nextLineBreakIndex != -1) - { - return nextLineBreakIndex; - } - } - - return value.Length; - } - - internal static int OffsetInLine(string value, int index) - { - return index - StartOfLineIndex(value, index); - } - - internal static int StartOfPrevLineIndex(string value, int index) - { - int endOfPrevLine = EndOfPrevLineIndex(value, index); - return endOfPrevLine != -1 ? StartOfLineIndex(value, endOfPrevLine) : -1; - } - - internal static int EndOfPrevLineIndex(string value, int index) - { - return StartOfLineIndex(value, index) - 1; - } - - internal static int StartOfNextLineIndex(string value, int index) - { - int endOfLineIndex = EndOfLineIndex(value, index); - return endOfLineIndex < value.Length ? endOfLineIndex + 1 : -1; - } - - internal static int EndOfNextLineIndex(string value, int index) - { - int startOfNextLineIndex = StartOfNextLineIndex(value, index); - return startOfNextLineIndex != -1 ? EndOfLineIndex(value, startOfNextLineIndex) : -1; - } - - internal static int LinesBreaksCount(string value) - { - if (value != null) - { - int count = 0; - for (int i = 0; i < value.Length; ++i) - { - if (value[i] == '\n') - { - ++count; - } - } - - return count; - } - - return 0; - } - - internal static int Strlen(string str) - { - return str != null ? str.Length : 0; - } - - #endregion - - #region Suggestion - - private static List s_tempList; - - internal static string GetSuggestedText(string token, string[] strings, bool removeTags = false) - { - return GetSuggestedText0(token, strings, removeTags); - } - - internal static string GetSuggestedText(string token, IList strings, bool removeTags = false) - { - return GetSuggestedText0(token, (IList)strings, removeTags); - } - - private static string GetSuggestedText0(string token, IList strings, bool removeTags) - { - if (token == null) - { - return null; - } - - if (s_tempList == null) s_tempList = new List(); // TODO: use 'recyclable' list - else s_tempList.Clear(); - - foreach (string str in strings) - { - string temp = str; - if (token.Length == 0 || StartsWithIgnoreCase(temp, token)) - { - s_tempList.Add(temp); - } - } - - return GetSuggestedTextFiltered0(token, s_tempList); - } - - internal static string GetSuggestedTextFiltered(string token, IList strings) - { - return GetSuggestedTextFiltered0(token, (IList)strings); - } - - internal static string GetSuggestedTextFiltered(string token, string[] strings) - { - return GetSuggestedTextFiltered0(token, strings); - } - - private static string GetSuggestedTextFiltered0(string token, IList strings) - { - if (token == null) return null; - if (strings.Count == 0) return null; - if (strings.Count == 1) return (string)strings[0]; - - string firstString = (string)strings[0]; - if (token.Length == 0) - { - token = firstString; - } - - StringBuilder suggestedToken = new StringBuilder(); - - for (int charIndex = 0; charIndex < firstString.Length; ++charIndex) - { - char chr = firstString[charIndex]; - char chrLower = char.ToLower(chr); - - bool searchFinished = false; - for (int strIndex = 1; strIndex < strings.Count; ++strIndex) - { - string otherString = (string)strings[strIndex]; - if (charIndex >= otherString.Length || char.ToLower(otherString[charIndex]) != chrLower) - { - searchFinished = true; - break; - } - } - - if (searchFinished) - { - return suggestedToken.Length > 0 ? suggestedToken.ToString() : null; - } - - suggestedToken.Append(chr); - } - - return suggestedToken.Length > 0 ? suggestedToken.ToString() : null; - } - - #endregion - - ////////////////////////////////////////////////////////////////////////////// - - private static readonly string Quote = "\""; - private static readonly string SingleQuote = "'"; - - private static readonly string EscapedQuote = "\\\""; - private static readonly string EscapedSingleQuote = "\\'"; - - internal static string Arg(string value) - { - if (value != null && value.Length > 0) - { - value = value.Replace(Quote, EscapedQuote); - value = value.Replace(SingleQuote, EscapedSingleQuote); - - if (value.IndexOf(' ') != -1) - { - value = StringUtils.TryFormat("\"{0}\"", value); - } - - return value; - } - - return "\"\""; - } - - internal static string UnArg(string value) - { - if (value != null && value.Length > 0) - { - if (value.StartsWith(Quote) && value.EndsWith(Quote) || - value.StartsWith(SingleQuote) && value.EndsWith(SingleQuote)) - { - value = value.Substring(1, value.Length - 2); - } - - value = value.Replace(EscapedQuote, Quote); - value = value.Replace(EscapedSingleQuote, SingleQuote); - - return value; - } - - return ""; - } - - ////////////////////////////////////////////////////////////////////////////// - - #region Null and stuff - - internal static string NonNullOrEmpty(string str) - { - return str != null ? str : ""; - } - - #endregion - - ////////////////////////////////////////////////////////////////////////////// - - #region string representation - - internal static string ToString(object value) - { - return value != null ? value.ToString() : null; - } - - internal static string ToString(int value) - { - return value.ToString(); - } - - internal static string ToString(float value) - { - return value.ToString("G"); - } - - internal static string ToString(bool value) - { - return value.ToString(); - } - - internal static string ToString(ref Color value) - { - if (value.a > 0.0f) - { - return string.Format("{0} {1} {2} {3}", - value.r.ToString("G"), - value.g.ToString("G"), - value.b.ToString("G"), - value.a.ToString("G") - ); - } - - return string.Format("{0} {1} {2}", - value.r.ToString("G"), - value.g.ToString("G"), - value.b.ToString("G") - ); - } - - internal static string ToString(ref Rect value) - { - return string.Format("{0} {1} {2} {3}", - value.x.ToString("G"), - value.y.ToString("G"), - value.width.ToString("G"), - value.height.ToString("G") - ); - } - - internal static string ToString(ref Vector2 value) - { - return string.Format("{0} {1}", - value.x.ToString("G"), - value.y.ToString("G") - ); - } - - internal static string ToString(ref Vector3 value) - { - return string.Format("{0} {1} {2}", - value.x.ToString("G"), - value.y.ToString("G"), - value.z.ToString("G") - ); - } - - internal static string ToString(ref Vector4 value) - { - return string.Format("{0} {1} {2} {3}", - value.x.ToString("G"), - value.y.ToString("G"), - value.z.ToString("G"), - value.w.ToString("G") - ); - } - - public static string Join(IList list, string separator = ",") - { - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < list.Count; ++i) - { - builder.Append(list[i]); - if (i < list.Count-1) builder.Append(separator); - } - return builder.ToString(); - } - - #endregion - - #region Display name - - public static String ToDisplayName(string value) - { - if (string.IsNullOrEmpty(value)) - { - return value; - } - - StringBuilder result = new StringBuilder(); - - char prevChr = '\0'; - for (int i = 0; i < value.Length; ++i) - { - var chr = value[i]; - - if (i == 0) - { - chr = Char.ToUpper(chr); - } - else if (Char.IsUpper(chr) || Char.IsDigit(chr) && !Char.IsDigit(prevChr)) - { - if (result.Length > 0) - { - result.Append(' '); - } - } - - result.Append(chr); - - prevChr = chr; - } - - return result.ToString(); - } - - #endregion - - #region Serialization - - public static IDictionary DeserializeString(string data) - { - // can't use Json here since Unity doesn't support Json-to-Dictionary deserialization - // don't want to use 3rd party so custom format it is - string[] lines = data.Split('\n'); - IDictionary dict = new Dictionary(); - foreach (string line in lines) - { - int index = line.IndexOf(':'); - string key = line.Substring(0, index); - string value = line.Substring(index + 1, line.Length - (index + 1)).Replace(@"\n", "\n"); // restore new lines - dict[key] = value; - } - return dict; - } - - #endregion - } -} \ No newline at end of file diff --git a/Assets/LunarConsole/Scripts/Utils/StringUtils.cs.meta b/Assets/LunarConsole/Scripts/Utils/StringUtils.cs.meta deleted file mode 100644 index 691f84d..0000000 --- a/Assets/LunarConsole/Scripts/Utils/StringUtils.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: e58d1d38d81ad434696ddaf1b709a27a -timeCreated: 1456185692 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/LunarConsole/readme.txt b/Assets/LunarConsole/readme.txt deleted file mode 100644 index 16e06eb..0000000 --- a/Assets/LunarConsole/readme.txt +++ /dev/null @@ -1,13 +0,0 @@ -# Lunar Unity Mobile Console - -GitHub page: -https://github.com/SpaceMadness/lunar-unity-console - -Wiki page: -https://github.com/SpaceMadness/lunar-unity-console/wiki - -Asset store link: -https://www.assetstore.unity3d.com/#!/content/43800 - -Forum thread: -http://forum.unity3d.com/threads/lunar-mobile-console-high-performance-unity-ios-android-logger-built-with-native-platform-ui.347650/ diff --git a/Assets/LunarConsole.meta b/Assets/Plugins.meta similarity index 77% rename from Assets/LunarConsole.meta rename to Assets/Plugins.meta index 72ff24f..355bd15 100644 --- a/Assets/LunarConsole.meta +++ b/Assets/Plugins.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e663fdb6dbc0e184388d20296aa775ba +guid: c4a03b3b836db334a800ad503443722c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/LunarConsole/Editor/Legacy.meta b/Assets/Plugins/IngameDebugConsole.meta similarity index 67% rename from Assets/LunarConsole/Editor/Legacy.meta rename to Assets/Plugins/IngameDebugConsole.meta index 6dbd58f..92bcd43 100644 --- a/Assets/LunarConsole/Editor/Legacy.meta +++ b/Assets/Plugins/IngameDebugConsole.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: b0cb1771d92263149a49b077f292ff74 +guid: 3c57523b63ddb094b835b6613da12763 folderAsset: yes -timeCreated: 1502869557 +timeCreated: 1596819199 licenseType: Store DefaultImporter: userData: diff --git a/Assets/LunarConsole/Editor/UI.meta b/Assets/Plugins/IngameDebugConsole/Android.meta similarity index 67% rename from Assets/LunarConsole/Editor/UI.meta rename to Assets/Plugins/IngameDebugConsole/Android.meta index d8f5930..fcaef24 100644 --- a/Assets/LunarConsole/Editor/UI.meta +++ b/Assets/Plugins/IngameDebugConsole/Android.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: 734ebf2e216f64271b27dc62b5e92c14 +guid: 3d7d7a61a5341904eb3c65af025b1d86 folderAsset: yes -timeCreated: 1493260813 +timeCreated: 1510075633 licenseType: Store DefaultImporter: userData: diff --git a/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs new file mode 100644 index 0000000..95e8df7 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs @@ -0,0 +1,54 @@ +#if !UNITY_EDITOR && UNITY_ANDROID +using System.Collections.Generic; +using UnityEngine; + +// Credit: https://stackoverflow.com/a/41018028/2373034 +namespace IngameDebugConsole +{ + public class DebugLogLogcatListener : AndroidJavaProxy + { + private Queue queuedLogs; + private AndroidJavaObject nativeObject; + + public DebugLogLogcatListener() : base( "com.yasirkula.unity.DebugConsoleLogcatLogReceiver" ) + { + queuedLogs = new Queue( 16 ); + } + + ~DebugLogLogcatListener() + { + Stop(); + + if( nativeObject != null ) + nativeObject.Dispose(); + } + + public void Start( string arguments ) + { + if( nativeObject == null ) + nativeObject = new AndroidJavaObject( "com.yasirkula.unity.DebugConsoleLogcatLogger" ); + + nativeObject.Call( "Start", this, arguments ); + } + + public void Stop() + { + if( nativeObject != null ) + nativeObject.Call( "Stop" ); + } + + public void OnLogReceived( string log ) + { + queuedLogs.Enqueue( log ); + } + + public string GetLog() + { + if( queuedLogs.Count > 0 ) + return queuedLogs.Dequeue(); + + return null; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Autorun.cs.meta b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs.meta similarity index 76% rename from Assets/LunarConsole/Editor/Autorun.cs.meta rename to Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs.meta index 421517a..8f332f6 100644 --- a/Assets/LunarConsole/Editor/Autorun.cs.meta +++ b/Assets/Plugins/IngameDebugConsole/Android/DebugLogLogcatListener.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: a76cb7272dee04012a51d51648e95531 -timeCreated: 1439248247 +guid: dd3b7385882055d4a8c2b91deb6b2470 +timeCreated: 1510076185 licenseType: Store MonoImporter: serializedVersion: 2 diff --git a/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar new file mode 100644 index 0000000..759bab3 Binary files /dev/null and b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar differ diff --git a/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar.meta b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar.meta new file mode 100644 index 0000000..b67820b --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Android/IngameDebugConsole.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: bf909fab1c14af446b0a854de42289b2 +timeCreated: 1510086220 +licenseType: Store +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LunarConsole/Editor/Automation.meta b/Assets/Plugins/IngameDebugConsole/Editor.meta similarity index 67% rename from Assets/LunarConsole/Editor/Automation.meta rename to Assets/Plugins/IngameDebugConsole/Editor.meta index 9ce0154..89ddb4f 100644 --- a/Assets/LunarConsole/Editor/Automation.meta +++ b/Assets/Plugins/IngameDebugConsole/Editor.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: d4e850fe7b6044182b4b5f3ec9836a11 +guid: 86f54622630720f4abe279acdbb8886f folderAsset: yes -timeCreated: 1443648990 +timeCreated: 1561217660 licenseType: Store DefaultImporter: userData: diff --git a/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs new file mode 100644 index 0000000..f2897c5 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs @@ -0,0 +1,160 @@ +using UnityEditor; +using UnityEngine; + +namespace IngameDebugConsole +{ + [CustomEditor( typeof( DebugLogManager ) )] + public class DebugLogManagerEditor : Editor + { + private SerializedProperty singleton; + private SerializedProperty minimumHeight; + private SerializedProperty enableHorizontalResizing; + private SerializedProperty resizeFromRight; + private SerializedProperty minimumWidth; + private SerializedProperty enablePopup; + private SerializedProperty startInPopupMode; + private SerializedProperty startMinimized; + private SerializedProperty toggleWithKey; + private SerializedProperty toggleKey; + private SerializedProperty enableSearchbar; + private SerializedProperty topSearchbarMinWidth; + private SerializedProperty receiveLogsWhileInactive; + private SerializedProperty receiveInfoLogs; + private SerializedProperty receiveWarningLogs; + private SerializedProperty receiveErrorLogs; + private SerializedProperty receiveExceptionLogs; + private SerializedProperty captureLogTimestamps; + private SerializedProperty alwaysDisplayTimestamps; + private SerializedProperty queuedLogLimit; + private SerializedProperty clearCommandAfterExecution; + private SerializedProperty commandHistorySize; + private SerializedProperty showCommandSuggestions; + private SerializedProperty receiveLogcatLogsInAndroid; + private SerializedProperty logcatArguments; + private SerializedProperty avoidScreenCutout; + private SerializedProperty popupAvoidsScreenCutout; + private SerializedProperty autoFocusOnCommandInputField; + + private readonly GUIContent receivedLogTypesLabel = new GUIContent( "Received Log Types", "Only these logs will be received by the console window, other logs will simply be skipped" ); + private readonly GUIContent receiveInfoLogsLabel = new GUIContent( "Info" ); + private readonly GUIContent receiveWarningLogsLabel = new GUIContent( "Warning" ); + private readonly GUIContent receiveErrorLogsLabel = new GUIContent( "Error" ); + private readonly GUIContent receiveExceptionLogsLabel = new GUIContent( "Exception" ); + + private void OnEnable() + { + singleton = serializedObject.FindProperty( "singleton" ); + minimumHeight = serializedObject.FindProperty( "minimumHeight" ); + enableHorizontalResizing = serializedObject.FindProperty( "enableHorizontalResizing" ); + resizeFromRight = serializedObject.FindProperty( "resizeFromRight" ); + minimumWidth = serializedObject.FindProperty( "minimumWidth" ); + enablePopup = serializedObject.FindProperty( "enablePopup" ); + startInPopupMode = serializedObject.FindProperty( "startInPopupMode" ); + startMinimized = serializedObject.FindProperty( "startMinimized" ); + toggleWithKey = serializedObject.FindProperty( "toggleWithKey" ); +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + toggleKey = serializedObject.FindProperty( "toggleBinding" ); +#else + toggleKey = serializedObject.FindProperty( "toggleKey" ); +#endif + enableSearchbar = serializedObject.FindProperty( "enableSearchbar" ); + topSearchbarMinWidth = serializedObject.FindProperty( "topSearchbarMinWidth" ); + receiveLogsWhileInactive = serializedObject.FindProperty( "receiveLogsWhileInactive" ); + receiveInfoLogs = serializedObject.FindProperty( "receiveInfoLogs" ); + receiveWarningLogs = serializedObject.FindProperty( "receiveWarningLogs" ); + receiveErrorLogs = serializedObject.FindProperty( "receiveErrorLogs" ); + receiveExceptionLogs = serializedObject.FindProperty( "receiveExceptionLogs" ); + captureLogTimestamps = serializedObject.FindProperty( "captureLogTimestamps" ); + alwaysDisplayTimestamps = serializedObject.FindProperty( "alwaysDisplayTimestamps" ); + queuedLogLimit = serializedObject.FindProperty( "queuedLogLimit" ); + clearCommandAfterExecution = serializedObject.FindProperty( "clearCommandAfterExecution" ); + commandHistorySize = serializedObject.FindProperty( "commandHistorySize" ); + showCommandSuggestions = serializedObject.FindProperty( "showCommandSuggestions" ); + receiveLogcatLogsInAndroid = serializedObject.FindProperty( "receiveLogcatLogsInAndroid" ); + logcatArguments = serializedObject.FindProperty( "logcatArguments" ); + avoidScreenCutout = serializedObject.FindProperty( "avoidScreenCutout" ); + popupAvoidsScreenCutout = serializedObject.FindProperty( "popupAvoidsScreenCutout" ); + autoFocusOnCommandInputField = serializedObject.FindProperty( "autoFocusOnCommandInputField" ); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.PropertyField( singleton ); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField( minimumHeight ); + + EditorGUILayout.PropertyField( enableHorizontalResizing ); + if( enableHorizontalResizing.boolValue ) + { + DrawSubProperty( resizeFromRight ); + DrawSubProperty( minimumWidth ); + } + + EditorGUILayout.PropertyField( avoidScreenCutout ); + DrawSubProperty( popupAvoidsScreenCutout ); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField( enablePopup ); + if( enablePopup.boolValue ) + DrawSubProperty( startInPopupMode ); + else + DrawSubProperty( startMinimized ); + + EditorGUILayout.PropertyField( toggleWithKey ); + if( toggleWithKey.boolValue ) + DrawSubProperty( toggleKey ); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField( enableSearchbar ); + if( enableSearchbar.boolValue ) + DrawSubProperty( topSearchbarMinWidth ); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField( receiveLogsWhileInactive ); + + EditorGUILayout.PrefixLabel( receivedLogTypesLabel ); + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField( receiveInfoLogs, receiveInfoLogsLabel ); + EditorGUILayout.PropertyField( receiveWarningLogs, receiveWarningLogsLabel ); + EditorGUILayout.PropertyField( receiveErrorLogs, receiveErrorLogsLabel ); + EditorGUILayout.PropertyField( receiveExceptionLogs, receiveExceptionLogsLabel ); + EditorGUI.indentLevel--; + + EditorGUILayout.PropertyField( receiveLogcatLogsInAndroid ); + if( receiveLogcatLogsInAndroid.boolValue ) + DrawSubProperty( logcatArguments ); + + EditorGUILayout.PropertyField( captureLogTimestamps ); + if( captureLogTimestamps.boolValue ) + DrawSubProperty( alwaysDisplayTimestamps ); + + EditorGUILayout.PropertyField( queuedLogLimit ); + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField( clearCommandAfterExecution ); + EditorGUILayout.PropertyField( commandHistorySize ); + EditorGUILayout.PropertyField( showCommandSuggestions ); + EditorGUILayout.PropertyField( autoFocusOnCommandInputField ); + + EditorGUILayout.Space(); + + DrawPropertiesExcluding( serializedObject, "m_Script" ); + serializedObject.ApplyModifiedProperties(); + } + + private void DrawSubProperty( SerializedProperty property ) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField( property ); + EditorGUI.indentLevel--; + } + } +} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/AndroidPlugin.cs.meta b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs.meta similarity index 76% rename from Assets/LunarConsole/Editor/AndroidPlugin.cs.meta rename to Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs.meta index 6ce0d0a..2fcd70e 100644 --- a/Assets/LunarConsole/Editor/AndroidPlugin.cs.meta +++ b/Assets/Plugins/IngameDebugConsole/Editor/DebugLogManagerEditor.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: d8fd4a203d95240148a54759841ce39c -timeCreated: 1491886923 +guid: 4c23e5c521cb0c54b9a638b2a653d1d3 +timeCreated: 1561217671 licenseType: Store MonoImporter: serializedVersion: 2 diff --git a/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef new file mode 100644 index 0000000..c2ac006 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef @@ -0,0 +1,17 @@ +{ + "name": "IngameDebugConsole.Editor", + "references": [ + "IngameDebugConsole.Runtime" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/LunarConsoleEditor.asmdef.meta b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef.meta similarity index 76% rename from Assets/LunarConsole/Editor/LunarConsoleEditor.asmdef.meta rename to Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef.meta index 501ea39..e2378b7 100644 --- a/Assets/LunarConsole/Editor/LunarConsoleEditor.asmdef.meta +++ b/Assets/Plugins/IngameDebugConsole/Editor/IngameDebugConsole.Editor.asmdef.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5c7d218fa468a46909ce7ce06167450d +guid: 466e67dabd1db22468246c39eddb6c3f AssemblyDefinitionImporter: externalObjects: {} userData: diff --git a/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef new file mode 100644 index 0000000..9f4bfcf --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef @@ -0,0 +1,3 @@ +{ + "name": "IngameDebugConsole.Runtime" +} diff --git a/Assets/LunarConsole/Scripts/LunarConsole.asmdef.meta b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef.meta similarity index 76% rename from Assets/LunarConsole/Scripts/LunarConsole.asmdef.meta rename to Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef.meta index 3404dd0..7e13cb2 100644 --- a/Assets/LunarConsole/Scripts/LunarConsole.asmdef.meta +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.Runtime.asmdef.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 151e1d3dcf0104802a1fb7215b881031 +guid: 3de88c88fbbb8f944b9210d496af9762 AssemblyDefinitionImporter: externalObjects: {} userData: diff --git a/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab new file mode 100644 index 0000000..09320ba --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab @@ -0,0 +1,4410 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100406 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22478474} + - component: {fileID: 22292746} + - component: {fileID: 11476740} + m_Layer: 5 + m_Name: NewInfoCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22478474 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100406} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22414360} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.45, y: 0.675} + m_AnchorMax: {x: 1, y: 0.975} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22292746 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100406} + m_CullTransparentMesh: 1 +--- !u!114 &11476740 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!1 &109254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 437128} + - component: {fileID: 11418932} + - component: {fileID: 11492840} + - component: {fileID: 114575087663981696} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &437128 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 109254} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22457152} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &11418932 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 109254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 0 + m_DragThreshold: 5 +--- !u!114 &11492840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 109254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &114575087663981696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 109254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1511ccae7919cfc46b603b9b337fdc94, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &110786 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22460680} + - component: {fileID: 22261918} + - component: {fileID: 11431488} + - component: {fileID: 114538072837526774} + m_Layer: 5 + m_Name: DebugLogWindowResize + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22460680 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110786} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22420992} + m_Father: {fileID: 22477946} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 64, y: 36} + m_Pivot: {x: 1, y: 0} +--- !u!222 &22261918 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110786} + m_CullTransparentMesh: 1 +--- !u!114 &11431488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114538072837526774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 110786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6565f2084f5aef44abe57c988745b9c3, type: 3} + m_Name: + m_EditorClassIdentifier: + debugManager: {fileID: 11452418} +--- !u!1 &118212 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22429100} + - component: {fileID: 22207004} + - component: {fileID: 11499344} + - component: {fileID: 11414302} + - component: {fileID: 11460786} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22429100 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22482970} + m_Father: {fileID: 22436850} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 28, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &22207004 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118212} + m_CullTransparentMesh: 1 +--- !u!114 &11499344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11414302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11419798} + m_HandleRect: {fileID: 22426080} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &11460786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 13 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11414998} + m_TargetAssemblyTypeName: + m_MethodName: OnScrollbarDragStart + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - eventID: 14 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11414998} + m_TargetAssemblyTypeName: + m_MethodName: OnScrollbarDragEnd + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &119972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22485076} + - component: {fileID: 11471588} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22485076 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22400762} + - {fileID: 224170087475393432} + m_Father: {fileID: 22436850} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -29, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &11471588 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 119972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: 0, y: 0, z: 0, w: 0} + m_Softness: {x: 0, y: 0} +--- !u!1 &121708 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22456566} + - component: {fileID: 222466100300644746} + - component: {fileID: 114944715489184838} + - component: {fileID: 114777798721274074} + m_Layer: 5 + m_Name: Buttons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22456566 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 121708} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224856348943071238} + - {fileID: 22488670} + - {fileID: 224619367409363176} + - {fileID: 22428984} + - {fileID: 22455554} + - {fileID: 22495692} + - {fileID: 22468896} + m_Father: {fileID: 22477946} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 36} + m_Pivot: {x: 1, y: 1} +--- !u!222 &222466100300644746 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 121708} + m_CullTransparentMesh: 1 +--- !u!114 &114944715489184838 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 121708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114777798721274074 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 121708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &123548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22466754} + - component: {fileID: 22288586} + - component: {fileID: 11495556} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22466754 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123548} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22455554} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.55, y: 1} + m_AnchoredPosition: {x: 1, y: 0.5} + m_SizeDelta: {x: -2, y: -7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22288586 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123548} + m_CullTransparentMesh: 1 +--- !u!114 &11495556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 123548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &132536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22457152} + - component: {fileID: 22331464} + - component: {fileID: 11440770} + - component: {fileID: 11490438} + - component: {fileID: 11452418} + - component: {fileID: 114573443145823088} + m_Layer: 5 + m_Name: IngameDebugConsole + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22457152 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132536} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22477946} + - {fileID: 22414360} + - {fileID: 437128} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &22331464 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 1001 + m_TargetDisplay: 0 +--- !u!114 &11440770 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &11490438 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11452418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6a4f16ed905adcd4ab0d7c8c11f0d72c, type: 3} + m_Name: + m_EditorClassIdentifier: + singleton: 1 + minimumHeight: 200 + enableHorizontalResizing: 0 + resizeFromRight: 1 + minimumWidth: 240 + enablePopup: 1 + startInPopupMode: 1 + startMinimized: 0 + toggleWithKey: 1 + toggleKey: 282 + enableSearchbar: 1 + topSearchbarMinWidth: 360 + receiveLogsWhileInactive: 0 + receiveInfoLogs: 1 + receiveWarningLogs: 1 + receiveErrorLogs: 1 + receiveExceptionLogs: 1 + captureLogTimestamps: 0 + alwaysDisplayTimestamps: 0 + queuedLogLimit: 256 + clearCommandAfterExecution: 1 + commandHistorySize: 15 + showCommandSuggestions: 1 + receiveLogcatLogsInAndroid: 0 + logcatArguments: + avoidScreenCutout: 1 + popupAvoidsScreenCutout: 0 + maxLogLength: 10000 + autoFocusOnCommandInputField: 1 + logItemPrefab: {fileID: 11408050, guid: 391be5df5ef62f345bb76a1051c04da7, type: 3} + commandSuggestionPrefab: {fileID: 114169395487023046, guid: 5e66896448428cf46a1854dbdc014914, type: 3} + infoLog: {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3} + warningLog: {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3} + errorLog: {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3} + resizeIconAllDirections: {fileID: 21300000, guid: 7f0db3cf23c93fc4eac01cb3a52388ee, type: 3} + resizeIconVerticalOnly: {fileID: 21300000, guid: a9fd8f6b461461f4a92eafc60921ee78, type: 3} + collapseButtonNormalColor: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + collapseButtonSelectedColor: {r: 0.44117647, g: 0.4346886, b: 0.4346886, a: 1} + filterButtonsNormalColor: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + filterButtonsSelectedColor: {r: 0.44117647, g: 0.4346886, b: 0.4346886, a: 1} + commandSuggestionHighlightStart: + commandSuggestionHighlightEnd: + logWindowTR: {fileID: 22477946} + logItemsContainer: {fileID: 22400762} + commandSuggestionsContainer: {fileID: 224982529675224150} + commandInputField: {fileID: 114000010993257018} + hideButton: {fileID: 11477250} + clearButton: {fileID: 114466839828933532} + collapseButton: {fileID: 11491814} + filterInfoButton: {fileID: 11400378} + filterWarningButton: {fileID: 11490350} + filterErrorButton: {fileID: 11406916} + infoEntryCountText: {fileID: 11400274} + warningEntryCountText: {fileID: 11496004} + errorEntryCountText: {fileID: 11450122} + searchbar: {fileID: 224927884203097686} + searchbarSlotTop: {fileID: 224619367409363176} + searchbarSlotBottom: {fileID: 224755787573573022} + resizeButton: {fileID: 11419610} + snapToBottomButton: {fileID: 1486651836328188} + logWindowCanvasGroup: {fileID: 22509978} + popupManager: {fileID: 11491080} + logItemsScrollRect: {fileID: 11405548} + recycledListView: {fileID: 11453682} +--- !u!114 &114573443145823088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c3cc1b407f337e641ad32a2e91d5b478, type: 3} + m_Name: + m_EditorClassIdentifier: + embeddedEventSystem: {fileID: 109254} +--- !u!1 &133140 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22428984} + - component: {fileID: 22231690} + - component: {fileID: 11400378} + - component: {fileID: 11466918} + m_Layer: 5 + m_Name: FilterLogButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22428984 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133140} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22497984} + - {fileID: 22452314} + m_Father: {fileID: 22456566} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22231690 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133140} + m_CullTransparentMesh: 1 +--- !u!114 &11400378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11466918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11400378} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &133612 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22468896} + - component: {fileID: 22255062} + - component: {fileID: 11448508} + - component: {fileID: 11477250} + m_Layer: 5 + m_Name: HideButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22468896 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133612} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22485120} + m_Father: {fileID: 22456566} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22255062 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133612} + m_CullTransparentMesh: 1 +--- !u!114 &11448508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11477250 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 133612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11448508} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &135210 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22496878} + - component: {fileID: 22213036} + - component: {fileID: 11450122} + m_Layer: 5 + m_Name: ErrorCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22496878 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135210} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22495692} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22213036 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135210} + m_CullTransparentMesh: 1 +--- !u!114 &11450122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135210} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!1 &142160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22488670} + - component: {fileID: 22236784} + - component: {fileID: 11491814} + - component: {fileID: 11437802} + m_Layer: 5 + m_Name: CollapseButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22488670 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 142160} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224781297716539566} + m_Father: {fileID: 22456566} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22236784 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 142160} + m_CullTransparentMesh: 1 +--- !u!114 &11491814 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 142160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11437802 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 142160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11491814} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &145092 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22497984} + - component: {fileID: 22209426} + - component: {fileID: 11437286} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22497984 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145092} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22428984} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.55, y: 1} + m_AnchoredPosition: {x: 1, y: 0.5} + m_SizeDelta: {x: -2, y: -7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22209426 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145092} + m_CullTransparentMesh: 1 +--- !u!114 &11437286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145092} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &148506 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22435388} + - component: {fileID: 22236120} + - component: {fileID: 11430762} + m_Layer: 5 + m_Name: WarningImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22435388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148506} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22414360} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.35} + m_AnchorMax: {x: 0.45, y: 0.65} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -1, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &22236120 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148506} + m_CullTransparentMesh: 1 +--- !u!114 &11430762 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148506} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &160714 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22439026} + - component: {fileID: 22209194} + - component: {fileID: 11486984} + m_Layer: 5 + m_Name: InfoImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22439026 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160714} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22414360} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.675} + m_AnchorMax: {x: 0.45, y: 0.975} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -1, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &22209194 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160714} + m_CullTransparentMesh: 1 +--- !u!114 &11486984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160714} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &161086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22420992} + - component: {fileID: 22290652} + - component: {fileID: 11419610} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22420992 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161086} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22460680} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22290652 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161086} + m_CullTransparentMesh: 1 +--- !u!114 &11419610 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 161086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: a9fd8f6b461461f4a92eafc60921ee78, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &163938 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22455554} + - component: {fileID: 22258478} + - component: {fileID: 11490350} + - component: {fileID: 11472314} + m_Layer: 5 + m_Name: FilterWarningButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22455554 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163938} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22466754} + - {fileID: 22427174} + m_Father: {fileID: 22456566} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22258478 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163938} + m_CullTransparentMesh: 1 +--- !u!114 &11490350 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11472314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11490350} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &164562 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22485120} + - component: {fileID: 22261724} + - component: {fileID: 114435636144975300} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22485120 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164562} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22468896} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22261724 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164562} + m_CullTransparentMesh: 1 +--- !u!114 &114435636144975300 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164562} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b3905a73a6672d9449647aaf036e23fc, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &165242 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22452256} + - component: {fileID: 22278414} + - component: {fileID: 11431640} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22452256 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165242} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22495692} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.55, y: 1} + m_AnchoredPosition: {x: 1, y: 0.5} + m_SizeDelta: {x: -2, y: -7} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22278414 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165242} + m_CullTransparentMesh: 1 +--- !u!114 &11431640 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 165242} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &166206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22412306} + - component: {fileID: 22260676} + - component: {fileID: 11421290} + m_Layer: 5 + m_Name: ErrorImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22412306 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166206} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22414360} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.025} + m_AnchorMax: {x: 0.45, y: 0.325} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -1, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &22260676 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166206} + m_CullTransparentMesh: 1 +--- !u!114 &11421290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 166206} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &168792 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22431144} + - component: {fileID: 22240830} + - component: {fileID: 11411602} + m_Layer: 5 + m_Name: NewErrorCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22431144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168792} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22414360} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.45, y: 0.025} + m_AnchorMax: {x: 1, y: 0.325} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22240830 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168792} + m_CullTransparentMesh: 1 +--- !u!114 &11411602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 168792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!1 &170186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22495692} + - component: {fileID: 22248262} + - component: {fileID: 11406916} + - component: {fileID: 11420596} + m_Layer: 5 + m_Name: FilterErrorButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22495692 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170186} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22452256} + - {fileID: 22496878} + m_Father: {fileID: 22456566} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22248262 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170186} + m_CullTransparentMesh: 1 +--- !u!114 &11406916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11420596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11406916} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &171206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22482970} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22482970 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22426080} + m_Father: {fileID: 22429100} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &173314 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22436850} + - component: {fileID: 11405548} + - component: {fileID: 22273436} + - component: {fileID: 11410364} + - component: {fileID: 11414998} + m_Layer: 5 + m_Name: Debugs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22436850 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173314} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22485076} + - {fileID: 22429100} + m_Father: {fileID: 22477946} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -72} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &11405548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173314} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 22400762} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.01 + m_ScrollSensitivity: 25 + m_Viewport: {fileID: 22485076} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 11414302} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 0 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!222 &22273436 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173314} + m_CullTransparentMesh: 1 +--- !u!114 &11410364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173314} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11414998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 173314} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cb564dcb180e586429c57456166a76b5, type: 3} + m_Name: + m_EditorClassIdentifier: + debugsScrollRect: {fileID: 11405548} + debugLogManager: {fileID: 11452418} +--- !u!1 &176246 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22427174} + - component: {fileID: 22242412} + - component: {fileID: 11496004} + m_Layer: 5 + m_Name: WarningCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22427174 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176246} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22455554} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22242412 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176246} + m_CullTransparentMesh: 1 +--- !u!114 &11496004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!1 &176876 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22452314} + - component: {fileID: 22235120} + - component: {fileID: 11400274} + m_Layer: 5 + m_Name: LogCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22452314 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176876} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22428984} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.55, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22235120 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176876} + m_CullTransparentMesh: 1 +--- !u!114 &11400274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176876} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!1 &178532 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22414360} + - component: {fileID: 22223402} + - component: {fileID: 11410584} + - component: {fileID: 11491080} + - component: {fileID: 22505754} + m_Layer: 5 + m_Name: DebugLogPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22414360 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178532} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22439026} + - {fileID: 22435388} + - {fileID: 22412306} + - {fileID: 22478474} + - {fileID: 22436794} + - {fileID: 22431144} + m_Father: {fileID: 22457152} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 1000, y: 0} + m_SizeDelta: {x: 72, y: 72} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22223402 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178532} + m_CullTransparentMesh: 1 +--- !u!114 &11410584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178532} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.30588236, g: 0.30588236, b: 0.30588236, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &11491080 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178532} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 05cc4b1999716644c9308528e38e7081, type: 3} + m_Name: + m_EditorClassIdentifier: + debugManager: {fileID: 11452418} + newInfoCountText: {fileID: 11476740} + newWarningCountText: {fileID: 11414436} + newErrorCountText: {fileID: 11411602} + alertColorInfo: {r: 0.050980393, g: 0.32941177, b: 0.5647059, a: 1} + alertColorWarning: {r: 0.59607846, g: 0.45490196, b: 0, a: 1} + alertColorError: {r: 0.5647059, g: 0.050980393, b: 0.050980393, a: 1} +--- !u!225 &22505754 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 178532} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &183006 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22477946} + - component: {fileID: 22230524} + - component: {fileID: 11400672} + - component: {fileID: 22509978} + m_Layer: 5 + m_Name: DebugLogWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22477946 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183006} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 22456566} + - {fileID: 224755787573573022} + - {fileID: 22436850} + - {fileID: 224175272648112170} + - {fileID: 224000011255372986} + - {fileID: 22460680} + m_Father: {fileID: 22457152} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &22230524 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183006} + m_CullTransparentMesh: 1 +--- !u!114 &11400672 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960784, g: 0.21960784, b: 0.21960784, a: 0.797} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!225 &22509978 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183006} + m_Enabled: 1 + m_Alpha: 0 + m_Interactable: 1 + m_BlocksRaycasts: 0 + m_IgnoreParentGroups: 0 +--- !u!1 &187566 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22400762} + - component: {fileID: 11453682} + m_Layer: 5 + m_Name: LogsContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22400762 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187566} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22485076} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.00012207031} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0, y: 1} +--- !u!114 &11453682 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 187566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ce231987d32488f43b6fb798f7df43f6, type: 3} + m_Name: + m_EditorClassIdentifier: + transformComponent: {fileID: 22400762} + viewportTransform: {fileID: 22485076} + logItemNormalColor1: {r: 0.23529412, g: 0.23529412, b: 0.23529412, a: 0.697} + logItemNormalColor2: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.697} + logItemSelectedColor: {r: 0.32941177, g: 0.4862745, b: 0.7058824, a: 0.697} +--- !u!1 &189604 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22426080} + - component: {fileID: 22270452} + - component: {fileID: 11419798} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22426080 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189604} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22482970} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22270452 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189604} + m_CullTransparentMesh: 1 +--- !u!114 &11419798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 189604} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &192924 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 22436794} + - component: {fileID: 22260966} + - component: {fileID: 11414436} + m_Layer: 5 + m_Name: NewWarningCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &22436794 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 192924} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22414360} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.45, y: 0.35} + m_AnchorMax: {x: 1, y: 0.65} + m_AnchoredPosition: {x: -1, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &22260966 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 192924} + m_CullTransparentMesh: 1 +--- !u!114 &11414436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 192924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 +--- !u!1 &1000010562689872 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224000014081388310} + - component: {fileID: 222000011960742964} + - component: {fileID: 114000012764979206} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224000014081388310 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010562689872} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224000011255372986} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222000011960742964 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010562689872} + m_CullTransparentMesh: 1 +--- !u!114 &114000012764979206 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010562689872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!1 &1000013017939458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224000014244241328} + - component: {fileID: 222000010368327546} + - component: {fileID: 114000013429243584} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224000014244241328 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013017939458} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224000011255372986} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222000010368327546 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013017939458} + m_CullTransparentMesh: 1 +--- !u!114 &114000013429243584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013017939458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 0.653} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (type help for list of commands) +--- !u!1 &1000013131456698 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224000011255372986} + - component: {fileID: 222000010912077860} + - component: {fileID: 114000013324539428} + - component: {fileID: 114000010993257018} + m_Layer: 5 + m_Name: CommandInputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224000011255372986 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013131456698} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224000014244241328} + - {fileID: 224000014081388310} + m_Father: {fileID: 22477946} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -32, y: 0} + m_SizeDelta: {x: -64, y: 36} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &222000010912077860 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013131456698} + m_CullTransparentMesh: 1 +--- !u!114 &114000013324539428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013131456698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114000010993257018 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013131456698} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114000013324539428} + m_TextComponent: {fileID: 114000012764979206} + m_Placeholder: {fileID: 114000013429243584} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 2 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!1 &1023677686285356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224755787573573022} + - component: {fileID: 222554695212194500} + - component: {fileID: 114565304207243400} + m_Layer: 5 + m_Name: SearchbarSlotBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &224755787573573022 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023677686285356} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22477946} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -36} + m_SizeDelta: {x: 0, y: 36} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &222554695212194500 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023677686285356} + m_CullTransparentMesh: 1 +--- !u!114 &114565304207243400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1023677686285356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1046123681008450 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224757625655964314} + - component: {fileID: 222859164510105872} + - component: {fileID: 114958054160062352} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224757625655964314 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046123681008450} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224927884203097686} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 15, y: -0.5} + m_SizeDelta: {x: -30, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222859164510105872 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046123681008450} + m_CullTransparentMesh: 1 +--- !u!114 &114958054160062352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046123681008450} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8392157, g: 0.84313726, b: 0.84313726, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!1 &1065080943999816 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224982529675224150} + - component: {fileID: 222691170673863110} + - component: {fileID: 114095641519247160} + - component: {fileID: 114749866180229960} + m_Layer: 5 + m_Name: CommandSuggestionsContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &224982529675224150 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065080943999816} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224175272648112170} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: -0.00005340576} + m_SizeDelta: {x: 24, y: 24} + m_Pivot: {x: 0, y: 0} +--- !u!222 &222691170673863110 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065080943999816} + m_CullTransparentMesh: 1 +--- !u!114 &114095641519247160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065080943999816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.334, g: 0.3286984, b: 0.3286984, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114749866180229960 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1065080943999816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 6 + m_Spacing: 2 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1164238372139318 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224669170713768380} + - component: {fileID: 222006696964694420} + - component: {fileID: 114590115059802926} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224669170713768380 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164238372139318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224927884203097686} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 15, y: -0.5} + m_SizeDelta: {x: -30, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222006696964694420 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164238372139318} + m_CullTransparentMesh: 1 +--- !u!114 &114590115059802926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164238372139318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 0.653} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 2 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Search... +--- !u!1 &1197649202466618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224927884203097686} + - component: {fileID: 222677458225366564} + - component: {fileID: 114677982133495580} + - component: {fileID: 114664465529608634} + m_Layer: 5 + m_Name: Searchbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224927884203097686 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197649202466618} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224332069547574292} + - {fileID: 224669170713768380} + - {fileID: 224757625655964314} + m_Father: {fileID: 224619367409363176} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222677458225366564 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197649202466618} + m_CullTransparentMesh: 1 +--- !u!114 &114677982133495580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197649202466618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114664465529608634 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197649202466618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114677982133495580} + m_TextComponent: {fileID: 114958054160062352} + m_Placeholder: {fileID: 114590115059802926} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!1 &1316062289193744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224781297716539566} + - component: {fileID: 222390805710412110} + - component: {fileID: 114375211676648468} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224781297716539566 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1316062289193744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 22488670} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222390805710412110 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1316062289193744} + m_CullTransparentMesh: 1 +--- !u!114 &114375211676648468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1316062289193744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: d1546f8db185caf4dafcfa58efa3ba2c, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1419055185851692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224175272648112170} + - component: {fileID: 114201206152803294} + m_Layer: 5 + m_Name: CommandSuggestions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224175272648112170 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419055185851692} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224982529675224150} + m_Father: {fileID: 22477946} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 36} + m_SizeDelta: {x: 0, y: 5000} + m_Pivot: {x: 0, y: 0} +--- !u!114 &114201206152803294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419055185851692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 6 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1486651836328188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224170087475393432} + - component: {fileID: 222255240242372310} + - component: {fileID: 114590956026916120} + - component: {fileID: 114786672304321734} + m_Layer: 5 + m_Name: SnapToBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &224170087475393432 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486651836328188} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224726770285678000} + m_Father: {fileID: 22485076} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 8} + m_SizeDelta: {x: 42, y: 42} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &222255240242372310 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486651836328188} + m_CullTransparentMesh: 1 +--- !u!114 &114590956026916120 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486651836328188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.30980393, g: 0.30980393, b: 0.30980393, a: 0.6862745} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b902f763d0e47364dae25207b7e47800, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114786672304321734 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486651836328188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114590956026916120} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1608527955020594 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224619367409363176} + - component: {fileID: 222199124140025852} + - component: {fileID: 114533172895795940} + - component: {fileID: 114425215294804516} + m_Layer: 5 + m_Name: SearchbarSlotTop + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224619367409363176 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608527955020594} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224927884203097686} + m_Father: {fileID: 22456566} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222199124140025852 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608527955020594} + m_CullTransparentMesh: 1 +--- !u!114 &114533172895795940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608527955020594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.24264705, g: 0.24443123, b: 0.24443123, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114425215294804516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1608527955020594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 2 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1797932393879816 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224479789572691966} + - component: {fileID: 222428315485768352} + - component: {fileID: 114704198421030094} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224479789572691966 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797932393879816} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224856348943071238} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.15, y: 0.12} + m_AnchorMax: {x: 0.85, y: 0.88} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222428315485768352 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797932393879816} + m_CullTransparentMesh: 1 +--- !u!114 &114704198421030094 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797932393879816} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7a9e374666ad6cc47807bb001844f3d8, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1828058091608518 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224856348943071238} + - component: {fileID: 222172057957339964} + - component: {fileID: 114501864645789684} + - component: {fileID: 114466839828933532} + m_Layer: 5 + m_Name: ClearButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224856348943071238 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1828058091608518} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 224479789572691966} + m_Father: {fileID: 22456566} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222172057957339964 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1828058091608518} + m_CullTransparentMesh: 1 +--- !u!114 &114501864645789684 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1828058091608518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31617647, g: 0.31617647, b: 0.31617647, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &114466839828933532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1828058091608518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114501864645789684} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1837270565088688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224726770285678000} + - component: {fileID: 222974975071271426} + - component: {fileID: 114796147118253168} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224726770285678000 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837270565088688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224170087475393432} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.2, y: 0.2} + m_AnchorMax: {x: 0.8, y: 0.8} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &222974975071271426 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837270565088688} + m_CullTransparentMesh: 1 +--- !u!114 &114796147118253168 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837270565088688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 066c0b04be98cd348abb79add91d42bf, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1926020646996780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 224332069547574292} + - component: {fileID: 222821544406435052} + - component: {fileID: 114187932873892064} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224332069547574292 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926020646996780} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 224927884203097686} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 2, y: 0} + m_SizeDelta: {x: 25, y: -6} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &222821544406435052 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926020646996780} + m_CullTransparentMesh: 1 +--- !u!114 &114187932873892064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1926020646996780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9485294, g: 0.9485294, b: 0.9485294, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e04e6c970b950d946a782ea08e5f971d, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/LunarConsole/Scripts/LunarConsole.prefab.meta b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab.meta similarity index 65% rename from Assets/LunarConsole/Scripts/LunarConsole.prefab.meta rename to Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab.meta index edf4402..cb0d55b 100644 --- a/Assets/LunarConsole/Scripts/LunarConsole.prefab.meta +++ b/Assets/Plugins/IngameDebugConsole/IngameDebugConsole.prefab.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 6d0acc00cc82d436b9d11446d2ddfef6 -timeCreated: 1438665349 +guid: 67117722a812a2e46ab8cb8eafbf5f5e +timeCreated: 1466014755 licenseType: Store NativeFormatImporter: userData: diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs.meta b/Assets/Plugins/IngameDebugConsole/Prefabs.meta new file mode 100644 index 0000000..5eae9ad --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7dbc36665bc0d684db9a4447e27a7a4b +folderAsset: yes +timeCreated: 1520417401 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab new file mode 100644 index 0000000..0f8cf14 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab @@ -0,0 +1,87 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1386426139070838} + m_IsPrefabParent: 1 +--- !u!1 &1386426139070838 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224955737853170496} + - component: {fileID: 222541766812100524} + - component: {fileID: 114169395487023046} + m_Layer: 5 + m_Name: CommandSuggestion + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114169395487023046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1386426139070838} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: help +--- !u!222 &222541766812100524 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1386426139070838} +--- !u!224 &224955737853170496 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1386426139070838} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab.meta b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab.meta new file mode 100644 index 0000000..4407222 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/CommandSuggestion.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5e66896448428cf46a1854dbdc014914 +timeCreated: 1601390136 +licenseType: Store +NativeFormatImporter: + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab new file mode 100644 index 0000000..c4af8f9 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab @@ -0,0 +1,640 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &104862 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22461494} + - component: {fileID: 22233942} + - component: {fileID: 11411806} + m_Layer: 5 + m_Name: LogCount + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &151462 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22420350} + - component: {fileID: 22200920} + - component: {fileID: 11432936} + m_Layer: 5 + m_Name: LogCountText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &152362 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22427300} + - component: {fileID: 22262284} + - component: {fileID: 11404142} + m_Layer: 5 + m_Name: LogType + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &166880 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22479264} + - component: {fileID: 22288988} + - component: {fileID: 11459012} + - component: {fileID: 11408050} + - component: {fileID: 11456372} + - component: {fileID: 225819852034701160} + m_Layer: 5 + m_Name: DebugLogItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11404142 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152362} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 33b115bf5efdfa04d8e2e0b70a6643cd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11408050 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2ea291be9de70a4abfec595203c96c1, type: 3} + m_Name: + m_EditorClassIdentifier: + transformComponent: {fileID: 22479264} + imageComponent: {fileID: 11459012} + canvasGroupComponent: {fileID: 225819852034701160} + logText: {fileID: 114694493629914950} + logTypeImage: {fileID: 11404142} + logCountParent: {fileID: 104862} + logCountText: {fileID: 11432936} + copyLogButton: {fileID: 224006190298411330} +--- !u!114 &11411806 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11432936 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 1 + m_MaxSize: 16 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 1 +--- !u!114 &11456372 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11459012} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11459012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.23529412, g: 0.23529412, b: 0.23529412, a: 0.697} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22200920 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151462} +--- !u!222 &22233942 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104862} +--- !u!222 &22262284 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152362} +--- !u!222 &22288988 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} +--- !u!224 &22420350 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151462} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22461494} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22427300 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152362} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22479264} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 18, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22461494 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104862} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22420350} + m_Father: {fileID: 22479264} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -28, y: 0} + m_SizeDelta: {x: 38, y: 28} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22479264 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22427300} + - {fileID: 224737693311518052} + - {fileID: 22461494} + - {fileID: 224006190298411330} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 35} + m_Pivot: {x: 0, y: 1} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 166880} + m_IsPrefabParent: 1 +--- !u!1 &1396836967994216 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224006190298411330} + - component: {fileID: 222870443111501910} + - component: {fileID: 114119781176956926} + - component: {fileID: 114694923173451186} + m_Layer: 5 + m_Name: CopyLogButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1503640463151286 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224887990600088790} + - component: {fileID: 222313182602304162} + - component: {fileID: 114549765989288124} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1785910143472904 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224737693311518052} + - component: {fileID: 222175805939703770} + - component: {fileID: 114694493629914950} + m_Layer: 5 + m_Name: LogText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &114119781176956926 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114549765989288124 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503640463151286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Copy +--- !u!114 &114694493629914950 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1785910143472904} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 15 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Debug.Log summary +--- !u!114 &114694923173451186 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 114119781176956926} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11408050} + m_MethodName: CopyLog + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &222175805939703770 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1785910143472904} +--- !u!222 &222313182602304162 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503640463151286} +--- !u!222 &222870443111501910 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} +--- !u!224 &224006190298411330 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1396836967994216} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224887990600088790} + m_Father: {fileID: 22479264} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: -70, y: 36} + m_Pivot: {x: 0.5, y: 0} +--- !u!224 &224737693311518052 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1785910143472904} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22479264} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 15, y: 0} + m_SizeDelta: {x: -40, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224887990600088790 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1503640463151286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224006190298411330} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &225819852034701160 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 166880} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 diff --git a/Assets/LunarConsole/Editor/Automation/disable_lunar_console.sh.meta b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab.meta similarity index 53% rename from Assets/LunarConsole/Editor/Automation/disable_lunar_console.sh.meta rename to Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab.meta index 5aef660..b2a7577 100644 --- a/Assets/LunarConsole/Editor/Automation/disable_lunar_console.sh.meta +++ b/Assets/Plugins/IngameDebugConsole/Prefabs/DebugLogItem.prefab.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: d62277e1046af4360b3dc9826bbf1c72 -timeCreated: 1443648884 +guid: 391be5df5ef62f345bb76a1051c04da7 +timeCreated: 1465919887 licenseType: Store -DefaultImporter: +NativeFormatImporter: userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/README.txt b/Assets/Plugins/IngameDebugConsole/README.txt new file mode 100644 index 0000000..bc76e27 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/README.txt @@ -0,0 +1,20 @@ += In-game Debug Console (v1.5.8) = + +Online documentation available at: https://github.com/yasirkula/UnityIngameDebugConsole +E-mail: yasirkula@gmail.com + +### ABOUT +This asset helps you see debug messages (logs, warnings, errors, exceptions) runtime in a build (also assertions in editor) and execute commands using its built-in console. + + +### HOW TO +You can simply place the IngameDebugConsole prefab to your scene. Hovering the cursor over its properties in the Inspector will reveal explanatory tooltips. + + +### NEW INPUT SYSTEM SUPPORT +This plugin supports Unity's new Input System but it requires some manual modifications (if both the legacy and the new input systems are active at the same time, no changes are needed): + +- the plugin mustn't be installed as a package, i.e. it must reside inside the Assets folder and not the Packages folder (it can reside inside a subfolder of Assets like Assets/Plugins) +- if Unity 2019.2.5 or earlier is used, add ENABLE_INPUT_SYSTEM compiler directive to "Player Settings/Scripting Define Symbols" (these symbols are platform specific, so if you change the active platform later, you'll have to add the compiler directive again) +- add "Unity.InputSystem" assembly to "IngameDebugConsole.Runtime" Assembly Definition File's "Assembly Definition References" list +- open IngameDebugConsole prefab, select EventSystem child object and replace StandaloneInputModule component with InputSystemUIInputModule component (or, if your scene(s) already have EventSystem objects, you can delete IngameDebugConsole prefab's EventSystem child object) \ No newline at end of file diff --git a/Assets/LunarConsole/readme.txt.meta b/Assets/Plugins/IngameDebugConsole/README.txt.meta similarity index 54% rename from Assets/LunarConsole/readme.txt.meta rename to Assets/Plugins/IngameDebugConsole/README.txt.meta index 550e848..21f8dae 100644 --- a/Assets/LunarConsole/readme.txt.meta +++ b/Assets/Plugins/IngameDebugConsole/README.txt.meta @@ -1,7 +1,8 @@ fileFormatVersion: 2 -guid: 46b886d965cb74cdf9ccdfc0162376e6 +guid: edf2ac73f7bc3064c96d53009106dc53 +timeCreated: 1563307881 +licenseType: Store TextScriptImporter: - externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/LunarConsole/Scripts.meta b/Assets/Plugins/IngameDebugConsole/Scripts.meta similarity index 67% rename from Assets/LunarConsole/Scripts.meta rename to Assets/Plugins/IngameDebugConsole/Scripts.meta index 71e268a..1040eb3 100644 --- a/Assets/LunarConsole/Scripts.meta +++ b/Assets/Plugins/IngameDebugConsole/Scripts.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: 9ec3db27f4ce9484b9b6bdb042024cc9 +guid: 860c08388401a6d4e858fe4910ea9337 folderAsset: yes -timeCreated: 1439330382 +timeCreated: 1465930645 licenseType: Store DefaultImporter: userData: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs new file mode 100644 index 0000000..82d1371 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs @@ -0,0 +1,118 @@ +// #define RESET_REMOVED_ELEMENTS + +namespace IngameDebugConsole +{ + public class CircularBuffer + { + private T[] arr; + private int startIndex; + + public int Count { get; private set; } + public T this[int index] { get { return arr[( startIndex + index ) % arr.Length]; } } + + public CircularBuffer( int capacity ) + { + arr = new T[capacity]; + } + + // Old elements are overwritten when capacity is reached + public void Add( T value ) + { + if( Count < arr.Length ) + arr[Count++] = value; + else + { + arr[startIndex] = value; + if( ++startIndex >= arr.Length ) + startIndex = 0; + } + } + } + + public class DynamicCircularBuffer + { + private T[] arr; + private int startIndex; + + public int Count { get; private set; } + public int Capacity { get { return arr.Length; } } + + public T this[int index] + { + get { return arr[( startIndex + index ) % arr.Length]; } + set { arr[( startIndex + index ) % arr.Length] = value; } + } + + public DynamicCircularBuffer( int initialCapacity = 2 ) + { + arr = new T[initialCapacity]; + } + + public void Add( T value ) + { + if( Count >= arr.Length ) + { + int prevSize = arr.Length; + int newSize = prevSize > 0 ? prevSize * 2 : 2; // Size must be doubled (at least), or the shift operation below must consider IndexOutOfRange situations + + System.Array.Resize( ref arr, newSize ); + + if( startIndex > 0 ) + { + if( startIndex <= ( prevSize - 1 ) / 2 ) + { + // Move elements [0,startIndex) to the end + for( int i = 0; i < startIndex; i++ ) + { + arr[i + prevSize] = arr[i]; +#if RESET_REMOVED_ELEMENTS + arr[i] = default( T ); +#endif + } + } + else + { + // Move elements [startIndex,prevSize) to the end + int delta = newSize - prevSize; + for( int i = prevSize - 1; i >= startIndex; i-- ) + { + arr[i + delta] = arr[i]; +#if RESET_REMOVED_ELEMENTS + arr[i] = default( T ); +#endif + } + + startIndex += delta; + } + } + } + + this[Count++] = value; + } + + public T RemoveFirst() + { + T element = arr[startIndex]; +#if RESET_REMOVED_ELEMENTS + arr[startIndex] = default( T ); +#endif + + if( ++startIndex >= arr.Length ) + startIndex = 0; + + Count--; + return element; + } + + public T RemoveLast() + { + T element = arr[Count - 1]; +#if RESET_REMOVED_ELEMENTS + arr[Count - 1] = default( T ); +#endif + + Count--; + return element; + } + } +} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/BuildPostProcessor.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs.meta similarity index 76% rename from Assets/LunarConsole/Editor/BuildPostProcessor.cs.meta rename to Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs.meta index 7426421..cbd5ebc 100644 --- a/Assets/LunarConsole/Editor/BuildPostProcessor.cs.meta +++ b/Assets/Plugins/IngameDebugConsole/Scripts/CircularBuffer.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: e299aa1d646a8434c88ec185974ea661 -timeCreated: 1439270519 +guid: 6136cb3c00eac0149901b8e7f2fecef8 +timeCreated: 1550943949 licenseType: Store MonoImporter: serializedVersion: 2 diff --git a/Assets/LunarConsole/Editor/iOS/Common.meta b/Assets/Plugins/IngameDebugConsole/Scripts/Commands.meta similarity index 77% rename from Assets/LunarConsole/Editor/iOS/Common.meta rename to Assets/Plugins/IngameDebugConsole/Scripts/Commands.meta index f7a772a..1d1ef40 100644 --- a/Assets/LunarConsole/Editor/iOS/Common.meta +++ b/Assets/Plugins/IngameDebugConsole/Scripts/Commands.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f05ff9902d38e462ca5c2df51254b40d +guid: bb9b6e1ab379cec46bfae8f8abcc1f45 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/Commands/PlayerPrefsCommands.cs b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/PlayerPrefsCommands.cs new file mode 100644 index 0000000..b4da4fc --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/PlayerPrefsCommands.cs @@ -0,0 +1,58 @@ +using UnityEngine; + +namespace IngameDebugConsole.Commands +{ + public class PlayerPrefsCommands + { + [ConsoleMethod( "prefs.int", "Returns the value of an Integer PlayerPrefs field" ), UnityEngine.Scripting.Preserve] + public static string PlayerPrefsGetInt( string key ) + { + if( !PlayerPrefs.HasKey( key ) ) return "Key Not Found"; + return PlayerPrefs.GetInt( key ).ToString(); + } + + [ConsoleMethod( "prefs.int", "Sets the value of an Integer PlayerPrefs field" ), UnityEngine.Scripting.Preserve] + public static void PlayerPrefsSetInt( string key, int value ) + { + PlayerPrefs.SetInt( key, value ); + } + + [ConsoleMethod( "prefs.float", "Returns the value of a Float PlayerPrefs field" ), UnityEngine.Scripting.Preserve] + public static string PlayerPrefsGetFloat( string key ) + { + if( !PlayerPrefs.HasKey( key ) ) return "Key Not Found"; + return PlayerPrefs.GetFloat( key ).ToString(); + } + + [ConsoleMethod( "prefs.float", "Sets the value of a Float PlayerPrefs field" ), UnityEngine.Scripting.Preserve] + public static void PlayerPrefsSetFloat( string key, float value ) + { + PlayerPrefs.SetFloat( key, value ); + } + + [ConsoleMethod( "prefs.string", "Returns the value of a String PlayerPrefs field" ), UnityEngine.Scripting.Preserve] + public static string PlayerPrefsGetString( string key ) + { + if( !PlayerPrefs.HasKey( key ) ) return "Key Not Found"; + return PlayerPrefs.GetString( key ); + } + + [ConsoleMethod( "prefs.string", "Sets the value of a String PlayerPrefs field" ), UnityEngine.Scripting.Preserve] + public static void PlayerPrefsSetString( string key, string value ) + { + PlayerPrefs.SetString( key, value ); + } + + [ConsoleMethod( "prefs.delete", "Deletes a PlayerPrefs field" ), UnityEngine.Scripting.Preserve] + public static void PlayerPrefsDelete( string key ) + { + PlayerPrefs.DeleteKey( key ); + } + + [ConsoleMethod( "prefs.clear", "Deletes all PlayerPrefs fields" ), UnityEngine.Scripting.Preserve] + public static void PlayerPrefsClear() + { + PlayerPrefs.DeleteAll(); + } + } +} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/Compatibility.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/PlayerPrefsCommands.cs.meta similarity index 83% rename from Assets/LunarConsole/Editor/Compatibility.cs.meta rename to Assets/Plugins/IngameDebugConsole/Scripts/Commands/PlayerPrefsCommands.cs.meta index ff5a146..dfbaa4f 100644 --- a/Assets/LunarConsole/Editor/Compatibility.cs.meta +++ b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/PlayerPrefsCommands.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f1b1621a313ce2a42ad2fe08aee9d4a3 +guid: 33fb3ee25c8764f4c905fa3ac7c4eb89 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/Commands/SceneCommands.cs b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/SceneCommands.cs new file mode 100644 index 0000000..50167c1 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/SceneCommands.cs @@ -0,0 +1,58 @@ +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace IngameDebugConsole.Commands +{ + public class SceneCommands + { + [ConsoleMethod( "scene.load", "Loads a scene" ), UnityEngine.Scripting.Preserve] + public static void LoadScene( string sceneName ) + { + LoadSceneInternal( sceneName, false, LoadSceneMode.Single ); + } + + [ConsoleMethod( "scene.load", "Loads a scene" ), UnityEngine.Scripting.Preserve] + public static void LoadScene( string sceneName, LoadSceneMode mode ) + { + LoadSceneInternal( sceneName, false, mode ); + } + + [ConsoleMethod( "scene.loadasync", "Loads a scene asynchronously" ), UnityEngine.Scripting.Preserve] + public static void LoadSceneAsync( string sceneName ) + { + LoadSceneInternal( sceneName, true, LoadSceneMode.Single ); + } + + [ConsoleMethod( "scene.loadasync", "Loads a scene asynchronously" ), UnityEngine.Scripting.Preserve] + public static void LoadSceneAsync( string sceneName, LoadSceneMode mode ) + { + LoadSceneInternal( sceneName, true, mode ); + } + + private static void LoadSceneInternal( string sceneName, bool isAsync, LoadSceneMode mode ) + { + if( SceneManager.GetSceneByName( sceneName ).IsValid() ) + { + Debug.Log( "Scene " + sceneName + " is already loaded" ); + return; + } + + if( isAsync ) + SceneManager.LoadSceneAsync( sceneName, mode ); + else + SceneManager.LoadScene( sceneName, mode ); + } + + [ConsoleMethod( "scene.unload", "Unloads a scene" ), UnityEngine.Scripting.Preserve] + public static void UnloadScene( string sceneName ) + { + SceneManager.UnloadSceneAsync( sceneName ); + } + + [ConsoleMethod( "scene.restart", "Restarts the active scene" ), UnityEngine.Scripting.Preserve] + public static void RestartScene() + { + SceneManager.LoadScene( SceneManager.GetActiveScene().name, LoadSceneMode.Single ); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/Commands/SceneCommands.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/SceneCommands.cs.meta new file mode 100644 index 0000000..d1003b2 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/SceneCommands.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45984eacd62d9a3489fd62689265a23c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/Commands/TimeCommands.cs b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/TimeCommands.cs new file mode 100644 index 0000000..71eb017 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/TimeCommands.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +namespace IngameDebugConsole.Commands +{ + public class TimeCommands + { + [ConsoleMethod( "time.scale", "Sets the Time.timeScale value" ), UnityEngine.Scripting.Preserve] + public static void SetTimeScale( float value ) + { + Time.timeScale = Mathf.Max( value, 0f ); + } + + [ConsoleMethod( "time.scale", "Returns the current Time.timeScale value" ), UnityEngine.Scripting.Preserve] + public static float GetTimeScale() + { + return Time.timeScale; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/Commands/TimeCommands.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/TimeCommands.cs.meta new file mode 100644 index 0000000..c7da305 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/Commands/TimeCommands.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb12a1f557fffa541909fcfe92d9c1bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs new file mode 100644 index 0000000..c1259d0 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs @@ -0,0 +1,23 @@ +using System; + +namespace IngameDebugConsole +{ + [AttributeUsage( AttributeTargets.Method, Inherited = false, AllowMultiple = true )] + public class ConsoleMethodAttribute : Attribute + { + private string m_command; + private string m_description; + private string[] m_parameterNames; + + public string Command { get { return m_command; } } + public string Description { get { return m_description; } } + public string[] ParameterNames { get { return m_parameterNames; } } + + public ConsoleMethodAttribute( string command, string description, params string[] parameterNames ) + { + m_command = command; + m_description = description; + m_parameterNames = parameterNames; + } + } +} \ No newline at end of file diff --git a/Assets/LunarConsole/Editor/EditorConstants.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs.meta similarity index 76% rename from Assets/LunarConsole/Editor/EditorConstants.cs.meta rename to Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs.meta index b603ab1..a55a26b 100644 --- a/Assets/LunarConsole/Editor/EditorConstants.cs.meta +++ b/Assets/Plugins/IngameDebugConsole/Scripts/ConsoleMethodAttribute.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: a98e8898eee0f452680136bc0f8524a7 -timeCreated: 1441311398 +guid: 324bb39c0bff0f74fa42f83e91f07e3a +timeCreated: 1520710946 licenseType: Store MonoImporter: serializedVersion: 2 diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs new file mode 100644 index 0000000..87f54b5 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs @@ -0,0 +1,1505 @@ +#if UNITY_EDITOR || UNITY_STANDALONE +// Unity's Text component doesn't render tag correctly on mobile devices +#define USE_BOLD_COMMAND_SIGNATURES +#endif + +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.Reflection; +using System.Text; +using Object = UnityEngine.Object; +#if UNITY_EDITOR && UNITY_2021_1_OR_NEWER +using SystemInfo = UnityEngine.Device.SystemInfo; // To support Device Simulator on Unity 2021.1+ +#endif + +// Manages the console commands, parses console input and handles execution of commands +// Supported method parameter types: int, float, bool, string, Vector2, Vector3, Vector4 + +// Helper class to store important information about a command +namespace IngameDebugConsole +{ + public class ConsoleMethodInfo + { + public readonly MethodInfo method; + public readonly Type[] parameterTypes; + public readonly object instance; + + public readonly string command; + public readonly string signature; + public readonly string[] parameters; + + public ConsoleMethodInfo( MethodInfo method, Type[] parameterTypes, object instance, string command, string signature, string[] parameters ) + { + this.method = method; + this.parameterTypes = parameterTypes; + this.instance = instance; + this.command = command; + this.signature = signature; + this.parameters = parameters; + } + + public bool IsValid() + { + if( !method.IsStatic && ( instance == null || instance.Equals( null ) ) ) + return false; + + return true; + } + } + + public static class DebugLogConsole + { + public delegate bool ParseFunction( string input, out object output ); + + // All the commands + private static readonly List methods = new List(); + private static readonly List matchingMethods = new List( 4 ); + + // All the parse functions + private static readonly Dictionary parseFunctions = new Dictionary() + { + { typeof( string ), ParseString }, + { typeof( bool ), ParseBool }, + { typeof( int ), ParseInt }, + { typeof( uint ), ParseUInt }, + { typeof( long ), ParseLong }, + { typeof( ulong ), ParseULong }, + { typeof( byte ), ParseByte }, + { typeof( sbyte ), ParseSByte }, + { typeof( short ), ParseShort }, + { typeof( ushort ), ParseUShort }, + { typeof( char ), ParseChar }, + { typeof( float ), ParseFloat }, + { typeof( double ), ParseDouble }, + { typeof( decimal ), ParseDecimal }, + { typeof( Vector2 ), ParseVector2 }, + { typeof( Vector3 ), ParseVector3 }, + { typeof( Vector4 ), ParseVector4 }, + { typeof( Quaternion ), ParseQuaternion }, + { typeof( Color ), ParseColor }, + { typeof( Color32 ), ParseColor32 }, + { typeof( Rect ), ParseRect }, + { typeof( RectOffset ), ParseRectOffset }, + { typeof( Bounds ), ParseBounds }, + { typeof( GameObject ), ParseGameObject }, +#if UNITY_2017_2_OR_NEWER + { typeof( Vector2Int ), ParseVector2Int }, + { typeof( Vector3Int ), ParseVector3Int }, + { typeof( RectInt ), ParseRectInt }, + { typeof( BoundsInt ), ParseBoundsInt }, +#endif + }; + + // All the readable names of accepted types + private static readonly Dictionary typeReadableNames = new Dictionary() + { + { typeof( string ), "String" }, + { typeof( bool ), "Boolean" }, + { typeof( int ), "Integer" }, + { typeof( uint ), "Unsigned Integer" }, + { typeof( long ), "Long" }, + { typeof( ulong ), "Unsigned Long" }, + { typeof( byte ), "Byte" }, + { typeof( sbyte ), "Short Byte" }, + { typeof( short ), "Short" }, + { typeof( ushort ), "Unsigned Short" }, + { typeof( char ), "Char" }, + { typeof( float ), "Float" }, + { typeof( double ), "Double" }, + { typeof( decimal ), "Decimal" } + }; + + // Split arguments of an entered command + private static readonly List commandArguments = new List( 8 ); + + // Command parameter delimeter groups + private static readonly string[] inputDelimiters = new string[] { "\"\"", "''", "{}", "()", "[]" }; + + // CompareInfo used for case-insensitive command name comparison + internal static readonly CompareInfo caseInsensitiveComparer = new CultureInfo( "en-US" ).CompareInfo; + + static DebugLogConsole() + { + AddCommand( "help", "Prints all commands", LogAllCommands ); + AddCommand( "help", "Prints all matching commands", LogAllCommandsWithName ); + AddCommand( "sysinfo", "Prints system information", LogSystemInfo ); + +#if UNITY_EDITOR || !NETFX_CORE + // Find all [ConsoleMethod] functions + // Don't search built-in assemblies for console methods since they can't have any + string[] ignoredAssemblies = new string[] + { + "Unity", + "System", + "Mono.", + "mscorlib", + "netstandard", + "TextMeshPro", + "Microsoft.GeneratedCode", + "I18N", + "Boo.", + "UnityScript.", + "ICSharpCode.", + "ExCSS.Unity", +#if UNITY_EDITOR + "Assembly-CSharp-Editor", + "Assembly-UnityScript-Editor", + "nunit.", + "SyntaxTree.", + "AssetStoreTools", +#endif + }; +#endif + +#if UNITY_EDITOR || !NETFX_CORE + foreach( Assembly assembly in AppDomain.CurrentDomain.GetAssemblies() ) +#else + foreach( Assembly assembly in new Assembly[] { typeof( DebugLogConsole ).Assembly } ) // On UWP, at least search this plugin's Assembly for console methods +#endif + { +#if( NET_4_6 || NET_STANDARD_2_0 ) && ( UNITY_EDITOR || !NETFX_CORE ) + if( assembly.IsDynamic ) + continue; +#endif + + string assemblyName = assembly.GetName().Name; + +#if UNITY_EDITOR || !NETFX_CORE + bool ignoreAssembly = false; + for( int i = 0; i < ignoredAssemblies.Length; i++ ) + { + if( caseInsensitiveComparer.IsPrefix( assemblyName, ignoredAssemblies[i], CompareOptions.IgnoreCase ) ) + { + ignoreAssembly = true; + break; + } + } + + if( ignoreAssembly ) + continue; +#endif + + try + { + foreach( Type type in assembly.GetExportedTypes() ) + { + foreach( MethodInfo method in type.GetMethods( BindingFlags.Static | BindingFlags.Public | BindingFlags.DeclaredOnly ) ) + { + foreach( object attribute in method.GetCustomAttributes( typeof( ConsoleMethodAttribute ), false ) ) + { + ConsoleMethodAttribute consoleMethod = attribute as ConsoleMethodAttribute; + if( consoleMethod != null ) + AddCommand( consoleMethod.Command, consoleMethod.Description, method, null, consoleMethod.ParameterNames ); + } + } + } + } + catch( NotSupportedException ) { } + catch( System.IO.FileNotFoundException ) { } + catch( ReflectionTypeLoadException ) { } + catch( Exception e ) + { + Debug.LogError( "Couldn't search assembly for [ConsoleMethod] attributes: " + assemblyName + "\n" + e.ToString() ); + } + } + } + + // Logs the list of available commands + public static void LogAllCommands() + { + int length = 25; + for( int i = 0; i < methods.Count; i++ ) + { + if( methods[i].IsValid() ) + length += methods[i].signature.Length + 7; + } + + StringBuilder stringBuilder = new StringBuilder( length ); + stringBuilder.Append( "Available commands:" ); + + for( int i = 0; i < methods.Count; i++ ) + { + if( methods[i].IsValid() ) + stringBuilder.Append( "\n - " ).Append( methods[i].signature ); + } + + Debug.Log( stringBuilder.ToString() ); + + // After typing help, the log that lists all the commands should automatically be expanded for better UX + if( DebugLogManager.Instance ) + DebugLogManager.Instance.AdjustLatestPendingLog( true, true ); + } + + // Logs the list of available commands that are either equal to commandName or contain commandName as substring + public static void LogAllCommandsWithName( string commandName ) + { + matchingMethods.Clear(); + + // First, try to find commands that exactly match the commandName. If there are no such commands, try to find + // commands that contain commandName as substring + FindCommands( commandName, false, matchingMethods ); + if( matchingMethods.Count == 0 ) + FindCommands( commandName, true, matchingMethods ); + + if( matchingMethods.Count == 0 ) + Debug.LogWarning( string.Concat( "ERROR: can't find command '", commandName, "'" ) ); + else + { + int commandsLength = 25; + for( int i = 0; i < matchingMethods.Count; i++ ) + commandsLength += matchingMethods[i].signature.Length + 7; + + StringBuilder stringBuilder = new StringBuilder( commandsLength ); + stringBuilder.Append( "Matching commands:" ); + + for( int i = 0; i < matchingMethods.Count; i++ ) + stringBuilder.Append( "\n - " ).Append( matchingMethods[i].signature ); + + Debug.Log( stringBuilder.ToString() ); + + if( DebugLogManager.Instance ) + DebugLogManager.Instance.AdjustLatestPendingLog( true, true ); + } + } + + // Logs system information + public static void LogSystemInfo() + { + StringBuilder stringBuilder = new StringBuilder( 1024 ); + stringBuilder.Append( "Rig: " ).AppendSysInfoIfPresent( SystemInfo.deviceModel ).AppendSysInfoIfPresent( SystemInfo.processorType ) + .AppendSysInfoIfPresent( SystemInfo.systemMemorySize, "MB RAM" ).Append( SystemInfo.processorCount ).Append( " cores\n" ); + stringBuilder.Append( "OS: " ).Append( SystemInfo.operatingSystem ).Append( "\n" ); + stringBuilder.Append( "GPU: " ).Append( SystemInfo.graphicsDeviceName ).Append( " " ).Append( SystemInfo.graphicsMemorySize ) + .Append( "MB " ).Append( SystemInfo.graphicsDeviceVersion ) + .Append( SystemInfo.graphicsMultiThreaded ? " multi-threaded\n" : "\n" ); + stringBuilder.Append( "Data Path: " ).Append( Application.dataPath ).Append( "\n" ); + stringBuilder.Append( "Persistent Data Path: " ).Append( Application.persistentDataPath ).Append( "\n" ); + stringBuilder.Append( "StreamingAssets Path: " ).Append( Application.streamingAssetsPath ).Append( "\n" ); + stringBuilder.Append( "Temporary Cache Path: " ).Append( Application.temporaryCachePath ).Append( "\n" ); + stringBuilder.Append( "Device ID: " ).Append( SystemInfo.deviceUniqueIdentifier ).Append( "\n" ); + stringBuilder.Append( "Max Texture Size: " ).Append( SystemInfo.maxTextureSize ).Append( "\n" ); +#if UNITY_5_6_OR_NEWER + stringBuilder.Append( "Max Cubemap Size: " ).Append( SystemInfo.maxCubemapSize ).Append( "\n" ); +#endif + stringBuilder.Append( "Accelerometer: " ).Append( SystemInfo.supportsAccelerometer ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Gyro: " ).Append( SystemInfo.supportsGyroscope ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Location Service: " ).Append( SystemInfo.supportsLocationService ? "supported\n" : "not supported\n" ); +#if !UNITY_2019_1_OR_NEWER + stringBuilder.Append( "Image Effects: " ).Append( SystemInfo.supportsImageEffects ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "RenderToCubemap: " ).Append( SystemInfo.supportsRenderToCubemap ? "supported\n" : "not supported\n" ); +#endif + stringBuilder.Append( "Compute Shaders: " ).Append( SystemInfo.supportsComputeShaders ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Shadows: " ).Append( SystemInfo.supportsShadows ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Instancing: " ).Append( SystemInfo.supportsInstancing ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Motion Vectors: " ).Append( SystemInfo.supportsMotionVectors ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "3D Textures: " ).Append( SystemInfo.supports3DTextures ? "supported\n" : "not supported\n" ); +#if UNITY_5_6_OR_NEWER + stringBuilder.Append( "3D Render Textures: " ).Append( SystemInfo.supports3DRenderTextures ? "supported\n" : "not supported\n" ); +#endif + stringBuilder.Append( "2D Array Textures: " ).Append( SystemInfo.supports2DArrayTextures ? "supported\n" : "not supported\n" ); + stringBuilder.Append( "Cubemap Array Textures: " ).Append( SystemInfo.supportsCubemapArrayTextures ? "supported" : "not supported" ); + + Debug.Log( stringBuilder.ToString() ); + + // After typing sysinfo, the log that lists system information should automatically be expanded for better UX + if( DebugLogManager.Instance ) + DebugLogManager.Instance.AdjustLatestPendingLog( true, true ); + } + + private static StringBuilder AppendSysInfoIfPresent( this StringBuilder sb, string info, string postfix = null ) + { + if( info != SystemInfo.unsupportedIdentifier ) + { + sb.Append( info ); + + if( postfix != null ) + sb.Append( postfix ); + + sb.Append( " " ); + } + + return sb; + } + + private static StringBuilder AppendSysInfoIfPresent( this StringBuilder sb, int info, string postfix = null ) + { + if( info > 0 ) + { + sb.Append( info ); + + if( postfix != null ) + sb.Append( postfix ); + + sb.Append( " " ); + } + + return sb; + } + + // Add a custom Type to the list of recognized command parameter Types + public static void AddCustomParameterType( Type type, ParseFunction parseFunction, string typeReadableName = null ) + { + if( type == null ) + { + Debug.LogError( "Parameter type can't be null!" ); + return; + } + else if( parseFunction == null ) + { + Debug.LogError( "Parameter parseFunction can't be null!" ); + return; + } + + parseFunctions[type] = parseFunction; + + if( !string.IsNullOrEmpty( typeReadableName ) ) + typeReadableNames[type] = typeReadableName; + } + + // Remove a custom Type from the list of recognized command parameter Types + public static void RemoveCustomParameterType( Type type ) + { + parseFunctions.Remove( type ); + typeReadableNames.Remove( type ); + } + + // Add a command related with an instance method (i.e. non static method) + public static void AddCommandInstance( string command, string description, string methodName, object instance, params string[] parameterNames ) + { + if( instance == null ) + { + Debug.LogError( "Instance can't be null!" ); + return; + } + + AddCommand( command, description, methodName, instance.GetType(), instance, parameterNames ); + } + + // Add a command related with a static method (i.e. no instance is required to call the method) + public static void AddCommandStatic( string command, string description, string methodName, Type ownerType, params string[] parameterNames ) + { + AddCommand( command, description, methodName, ownerType, null, parameterNames ); + } + + // Add a command that can be related to either a static or an instance method + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Action method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Func method ) { AddCommand( command, description, method.Method, method.Target, null ); } + public static void AddCommand( string command, string description, Delegate method ) { AddCommand( command, description, method.Method, method.Target, null ); } + + // Add a command with custom parameter names + public static void AddCommand( string command, string description, Action method, string parameterName ) { AddCommand( command, description, method.Method, method.Target, new string[1] { parameterName } ); } + public static void AddCommand( string command, string description, Action method, string parameterName1, string parameterName2 ) { AddCommand( command, description, method.Method, method.Target, new string[2] { parameterName1, parameterName2 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName ) { AddCommand( command, description, method.Method, method.Target, new string[1] { parameterName } ); } + public static void AddCommand( string command, string description, Action method, string parameterName1, string parameterName2, string parameterName3 ) { AddCommand( command, description, method.Method, method.Target, new string[3] { parameterName1, parameterName2, parameterName3 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName1, string parameterName2 ) { AddCommand( command, description, method.Method, method.Target, new string[2] { parameterName1, parameterName2 } ); } + public static void AddCommand( string command, string description, Action method, string parameterName1, string parameterName2, string parameterName3, string parameterName4 ) { AddCommand( command, description, method.Method, method.Target, new string[4] { parameterName1, parameterName2, parameterName3, parameterName4 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName1, string parameterName2, string parameterName3 ) { AddCommand( command, description, method.Method, method.Target, new string[3] { parameterName1, parameterName2, parameterName3 } ); } + public static void AddCommand( string command, string description, Func method, string parameterName1, string parameterName2, string parameterName3, string parameterName4 ) { AddCommand( command, description, method.Method, method.Target, new string[4] { parameterName1, parameterName2, parameterName3, parameterName4 } ); } + public static void AddCommand( string command, string description, Delegate method, params string[] parameterNames ) { AddCommand( command, description, method.Method, method.Target, parameterNames ); } + + // Create a new command and set its properties + private static void AddCommand( string command, string description, string methodName, Type ownerType, object instance, string[] parameterNames ) + { + // Get the method from the class + MethodInfo method = ownerType.GetMethod( methodName, BindingFlags.Public | BindingFlags.NonPublic | ( instance != null ? BindingFlags.Instance : BindingFlags.Static ) ); + if( method == null ) + { + Debug.LogError( methodName + " does not exist in " + ownerType ); + return; + } + + AddCommand( command, description, method, instance, parameterNames ); + } + + private static void AddCommand( string command, string description, MethodInfo method, object instance, string[] parameterNames ) + { + if( string.IsNullOrEmpty( command ) ) + { + Debug.LogError( "Command name can't be empty!" ); + return; + } + + command = command.Trim(); + if( command.IndexOf( ' ' ) >= 0 ) + { + Debug.LogError( "Command name can't contain whitespace: " + command ); + return; + } + + // Fetch the parameters of the class + ParameterInfo[] parameters = method.GetParameters(); + if( parameters == null ) + parameters = new ParameterInfo[0]; + + // Store the parameter types in an array + Type[] parameterTypes = new Type[parameters.Length]; + for( int i = 0; i < parameters.Length; i++ ) + { + if( parameters[i].ParameterType.IsByRef ) + { + Debug.LogError( "Command can't have 'out' or 'ref' parameters" ); + return; + } + + Type parameterType = parameters[i].ParameterType; + if( parseFunctions.ContainsKey( parameterType ) || typeof( Component ).IsAssignableFrom( parameterType ) || parameterType.IsEnum || IsSupportedArrayType( parameterType ) ) + parameterTypes[i] = parameterType; + else + { + Debug.LogError( string.Concat( "Parameter ", parameters[i].Name, "'s Type ", parameterType, " isn't supported" ) ); + return; + } + } + + int commandIndex = FindCommandIndex( command ); + if( commandIndex < 0 ) + commandIndex = ~commandIndex; + else + { + int commandFirstIndex = commandIndex; + int commandLastIndex = commandIndex; + + while( commandFirstIndex > 0 && caseInsensitiveComparer.Compare( methods[commandFirstIndex - 1].command, command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandFirstIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.Compare( methods[commandLastIndex + 1].command, command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandLastIndex++; + + commandIndex = commandFirstIndex; + for( int i = commandFirstIndex; i <= commandLastIndex; i++ ) + { + int parameterCountDiff = methods[i].parameterTypes.Length - parameterTypes.Length; + if( parameterCountDiff <= 0 ) + { + // We are sorting the commands in 2 steps: + // 1: Sorting by their 'command' names which is handled by FindCommandIndex + // 2: Sorting by their parameter counts which is handled here (parameterCountDiff <= 0) + commandIndex = i + 1; + + // Check if this command has been registered before and if it is, overwrite that command + if( parameterCountDiff == 0 ) + { + int j = 0; + while( j < parameterTypes.Length && parameterTypes[j] == methods[i].parameterTypes[j] ) + j++; + + if( j >= parameterTypes.Length ) + { + commandIndex = i; + commandLastIndex--; + methods.RemoveAt( i-- ); + + continue; + } + } + } + } + } + + // Create the command + StringBuilder methodSignature = new StringBuilder( 256 ); + string[] parameterSignatures = new string[parameterTypes.Length]; + +#if USE_BOLD_COMMAND_SIGNATURES + methodSignature.Append( "" ); +#endif + methodSignature.Append( command ); + + if( parameterTypes.Length > 0 ) + { + methodSignature.Append( " " ); + + for( int i = 0; i < parameterTypes.Length; i++ ) + { + int parameterSignatureStartIndex = methodSignature.Length; + + methodSignature.Append( "[" ).Append( GetTypeReadableName( parameterTypes[i] ) ).Append( " " ).Append( ( parameterNames != null && i < parameterNames.Length && !string.IsNullOrEmpty( parameterNames[i] ) ) ? parameterNames[i] : parameters[i].Name ).Append( "]" ); + + if( i < parameterTypes.Length - 1 ) + methodSignature.Append( " " ); + + parameterSignatures[i] = methodSignature.ToString( parameterSignatureStartIndex, methodSignature.Length - parameterSignatureStartIndex ); + } + } + +#if USE_BOLD_COMMAND_SIGNATURES + methodSignature.Append( "" ); +#endif + + if( !string.IsNullOrEmpty( description ) ) + methodSignature.Append( ": " ).Append( description ); + + methods.Insert( commandIndex, new ConsoleMethodInfo( method, parameterTypes, instance, command, methodSignature.ToString(), parameterSignatures ) ); + } + + // Remove all commands with the matching command name from the console + public static void RemoveCommand( string command ) + { + if( !string.IsNullOrEmpty( command ) ) + { + for( int i = methods.Count - 1; i >= 0; i-- ) + { + if( caseInsensitiveComparer.Compare( methods[i].command, command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + methods.RemoveAt( i ); + } + } + } + + // Remove all commands with the matching method from the console + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Action method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Func method ) { RemoveCommand( method.Method ); } + public static void RemoveCommand( Delegate method ) { RemoveCommand( method.Method ); } + + public static void RemoveCommand( MethodInfo method ) + { + if( method != null ) + { + for( int i = methods.Count - 1; i >= 0; i-- ) + { + if( methods[i].method == method ) + methods.RemoveAt( i ); + } + } + } + + // Returns the first command that starts with the entered argument + public static string GetAutoCompleteCommand( string commandStart, string previousSuggestion ) + { + int commandIndex = FindCommandIndex( !string.IsNullOrEmpty( previousSuggestion ) ? previousSuggestion : commandStart ); + if( commandIndex < 0 ) + { + commandIndex = ~commandIndex; + return ( commandIndex < methods.Count && caseInsensitiveComparer.IsPrefix( methods[commandIndex].command, commandStart, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) ? methods[commandIndex].command : null; + } + + // Find the next command that starts with commandStart and is different from previousSuggestion + for( int i = commandIndex + 1; i < methods.Count; i++ ) + { + if( caseInsensitiveComparer.Compare( methods[i].command, previousSuggestion, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + continue; + else if( caseInsensitiveComparer.IsPrefix( methods[i].command, commandStart, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) + return methods[i].command; + else + break; + } + + // Couldn't find a command that follows previousSuggestion and satisfies commandStart, loop back to the beginning of the autocomplete suggestions + string result = null; + for( int i = commandIndex - 1; i >= 0 && caseInsensitiveComparer.IsPrefix( methods[i].command, commandStart, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ); i-- ) + result = methods[i].command; + + return result; + } + + // Parse the command and try to execute it + public static void ExecuteCommand( string command ) + { + if( command == null ) + return; + + command = command.Trim(); + + if( command.Length == 0 ) + return; + + // Split the command's arguments + commandArguments.Clear(); + FetchArgumentsFromCommand( command, commandArguments ); + + // Find all matching commands + matchingMethods.Clear(); + bool parameterCountMismatch = false; + int commandIndex = FindCommandIndex( commandArguments[0] ); + if( commandIndex >= 0 ) + { + string _command = commandArguments[0]; + + int commandLastIndex = commandIndex; + while( commandIndex > 0 && caseInsensitiveComparer.Compare( methods[commandIndex - 1].command, _command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.Compare( methods[commandLastIndex + 1].command, _command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandLastIndex++; + + while( commandIndex <= commandLastIndex ) + { + if( !methods[commandIndex].IsValid() ) + { + methods.RemoveAt( commandIndex ); + commandLastIndex--; + } + else + { + // Check if number of parameters match + if( methods[commandIndex].parameterTypes.Length == commandArguments.Count - 1 ) + matchingMethods.Add( methods[commandIndex] ); + else + parameterCountMismatch = true; + + commandIndex++; + } + } + } + + if( matchingMethods.Count == 0 ) + { + string _command = commandArguments[0]; + FindCommands( _command, !parameterCountMismatch, matchingMethods ); + + if( matchingMethods.Count == 0 ) + Debug.LogWarning( string.Concat( "ERROR: can't find command '", _command, "'" ) ); + else + { + int commandsLength = _command.Length + 75; + for( int i = 0; i < matchingMethods.Count; i++ ) + commandsLength += matchingMethods[i].signature.Length + 7; + + StringBuilder stringBuilder = new StringBuilder( commandsLength ); + if( parameterCountMismatch ) + stringBuilder.Append( "ERROR: '" ).Append( _command ).Append( "' doesn't take " ).Append( commandArguments.Count - 1 ).Append( " parameter(s). Available command(s):" ); + else + stringBuilder.Append( "ERROR: can't find command '" ).Append( _command ).Append( "'. Did you mean:" ); + + for( int i = 0; i < matchingMethods.Count; i++ ) + stringBuilder.Append( "\n - " ).Append( matchingMethods[i].signature ); + + Debug.LogWarning( stringBuilder.ToString() ); + + // The log that lists method signature(s) for this command should automatically be expanded for better UX + if( DebugLogManager.Instance ) + DebugLogManager.Instance.AdjustLatestPendingLog( true, true ); + } + + return; + } + + ConsoleMethodInfo methodToExecute = null; + object[] parameters = new object[commandArguments.Count - 1]; + string errorMessage = null; + for( int i = 0; i < matchingMethods.Count && methodToExecute == null; i++ ) + { + ConsoleMethodInfo methodInfo = matchingMethods[i]; + + // Parse the parameters into objects + bool success = true; + for( int j = 0; j < methodInfo.parameterTypes.Length && success; j++ ) + { + try + { + string argument = commandArguments[j + 1]; + Type parameterType = methodInfo.parameterTypes[j]; + + object val; + if( ParseArgument( argument, parameterType, out val ) ) + parameters[j] = val; + else + { + success = false; + errorMessage = string.Concat( "ERROR: couldn't parse ", argument, " to ", GetTypeReadableName( parameterType ) ); + } + } + catch( Exception e ) + { + success = false; + errorMessage = "ERROR: " + e.ToString(); + } + } + + if( success ) + methodToExecute = methodInfo; + } + + if( methodToExecute == null ) + Debug.LogWarning( !string.IsNullOrEmpty( errorMessage ) ? errorMessage : "ERROR: something went wrong" ); + else + { + // Execute the method associated with the command + object result = methodToExecute.method.Invoke( methodToExecute.instance, parameters ); + if( methodToExecute.method.ReturnType != typeof( void ) ) + { + // Print the returned value to the console + if( result == null || result.Equals( null ) ) + Debug.Log( "Returned: null" ); + else + Debug.Log( "Returned: " + result.ToString() ); + } + } + } + + public static void FetchArgumentsFromCommand( string command, List commandArguments ) + { + for( int i = 0; i < command.Length; i++ ) + { + if( char.IsWhiteSpace( command[i] ) ) + continue; + + int delimiterIndex = IndexOfDelimiterGroup( command[i] ); + if( delimiterIndex >= 0 ) + { + int endIndex = IndexOfDelimiterGroupEnd( command, delimiterIndex, i + 1 ); + commandArguments.Add( command.Substring( i + 1, endIndex - i - 1 ) ); + i = ( endIndex < command.Length - 1 && command[endIndex + 1] == ',' ) ? endIndex + 1 : endIndex; + } + else + { + int endIndex = IndexOfChar( command, ' ', i + 1 ); + commandArguments.Add( command.Substring( i, command[endIndex - 1] == ',' ? endIndex - 1 - i : endIndex - i ) ); + i = endIndex; + } + } + } + + public static void FindCommands( string commandName, bool allowSubstringMatching, List matchingCommands ) + { + if( allowSubstringMatching ) + { + for( int i = 0; i < methods.Count; i++ ) + { + if( methods[i].IsValid() && caseInsensitiveComparer.IndexOf( methods[i].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ) + matchingCommands.Add( methods[i] ); + } + } + else + { + for( int i = 0; i < methods.Count; i++ ) + { + if( methods[i].IsValid() && caseInsensitiveComparer.Compare( methods[i].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + matchingCommands.Add( methods[i] ); + } + } + } + + // Finds all commands that have a matching signature with command + // - caretIndexIncrements: indices inside "string command" that separate two arguments in the command. This is used to + // figure out which argument the caret is standing on + // - commandName: command's name (first argument) + internal static void GetCommandSuggestions( string command, List matchingCommands, List caretIndexIncrements, ref string commandName, out int numberOfParameters ) + { + bool commandNameCalculated = false; + bool commandNameFullyTyped = false; + numberOfParameters = -1; + for( int i = 0; i < command.Length; i++ ) + { + if( char.IsWhiteSpace( command[i] ) ) + continue; + + int delimiterIndex = IndexOfDelimiterGroup( command[i] ); + if( delimiterIndex >= 0 ) + { + int endIndex = IndexOfDelimiterGroupEnd( command, delimiterIndex, i + 1 ); + if( !commandNameCalculated ) + { + commandNameCalculated = true; + commandNameFullyTyped = command.Length > endIndex; + + int commandNameLength = endIndex - i - 1; + if( commandName == null || commandNameLength == 0 || commandName.Length != commandNameLength || caseInsensitiveComparer.IndexOf( command, commandName, i + 1, commandNameLength, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) != i + 1 ) + commandName = command.Substring( i + 1, commandNameLength ); + } + + i = ( endIndex < command.Length - 1 && command[endIndex + 1] == ',' ) ? endIndex + 1 : endIndex; + caretIndexIncrements.Add( i + 1 ); + } + else + { + int endIndex = IndexOfChar( command, ' ', i + 1 ); + if( !commandNameCalculated ) + { + commandNameCalculated = true; + commandNameFullyTyped = command.Length > endIndex; + + int commandNameLength = command[endIndex - 1] == ',' ? endIndex - 1 - i : endIndex - i; + if( commandName == null || commandNameLength == 0 || commandName.Length != commandNameLength || caseInsensitiveComparer.IndexOf( command, commandName, i, commandNameLength, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) != i ) + commandName = command.Substring( i, commandNameLength ); + } + + i = endIndex; + caretIndexIncrements.Add( i ); + } + + numberOfParameters++; + } + + if( !commandNameCalculated ) + commandName = string.Empty; + + if( !string.IsNullOrEmpty( commandName ) ) + { + int commandIndex = FindCommandIndex( commandName ); + if( commandIndex < 0 ) + commandIndex = ~commandIndex; + + int commandLastIndex = commandIndex; + if( !commandNameFullyTyped ) + { + // Match all commands that start with commandName + if( commandIndex < methods.Count && caseInsensitiveComparer.IsPrefix( methods[commandIndex].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) + { + while( commandIndex > 0 && caseInsensitiveComparer.IsPrefix( methods[commandIndex - 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) + commandIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.IsPrefix( methods[commandLastIndex + 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) ) + commandLastIndex++; + } + else + commandLastIndex = -1; + } + else + { + // Match only the commands that are equal to commandName + if( commandIndex < methods.Count && caseInsensitiveComparer.Compare( methods[commandIndex].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + { + while( commandIndex > 0 && caseInsensitiveComparer.Compare( methods[commandIndex - 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandIndex--; + while( commandLastIndex < methods.Count - 1 && caseInsensitiveComparer.Compare( methods[commandLastIndex + 1].command, commandName, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) == 0 ) + commandLastIndex++; + } + else + commandLastIndex = -1; + } + + for( ; commandIndex <= commandLastIndex; commandIndex++ ) + { + if( methods[commandIndex].parameterTypes.Length >= numberOfParameters ) + matchingCommands.Add( methods[commandIndex] ); + } + } + } + + // Find the index of the delimiter group that 'c' belongs to + private static int IndexOfDelimiterGroup( char c ) + { + for( int i = 0; i < inputDelimiters.Length; i++ ) + { + if( c == inputDelimiters[i][0] ) + return i; + } + + return -1; + } + + private static int IndexOfDelimiterGroupEnd( string command, int delimiterIndex, int startIndex ) + { + char startChar = inputDelimiters[delimiterIndex][0]; + char endChar = inputDelimiters[delimiterIndex][1]; + + // Check delimiter's depth for array support (e.g. [[1 2] [3 4]] for Vector2 array) + int depth = 1; + + for( int i = startIndex; i < command.Length; i++ ) + { + char c = command[i]; + if( c == endChar && --depth <= 0 ) + return i; + else if( c == startChar ) + depth++; + } + + return command.Length; + } + + // Find the index of char in the string, or return the length of string instead of -1 + private static int IndexOfChar( string command, char c, int startIndex ) + { + int result = command.IndexOf( c, startIndex ); + if( result < 0 ) + result = command.Length; + + return result; + } + + // Find command's index in the list of registered commands using binary search + private static int FindCommandIndex( string command ) + { + int min = 0; + int max = methods.Count - 1; + while( min <= max ) + { + int mid = ( min + max ) / 2; + int comparison = caseInsensitiveComparer.Compare( command, methods[mid].command, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ); + if( comparison == 0 ) + return mid; + else if( comparison < 0 ) + max = mid - 1; + else + min = mid + 1; + } + + return ~min; + } + + public static bool IsSupportedArrayType( Type type ) + { + if( type.IsArray ) + { + if( type.GetArrayRank() != 1 ) + return false; + + type = type.GetElementType(); + } + else if( type.IsGenericType ) + { + if( type.GetGenericTypeDefinition() != typeof( List<> ) ) + return false; + + type = type.GetGenericArguments()[0]; + } + else + return false; + + return parseFunctions.ContainsKey( type ) || typeof( Component ).IsAssignableFrom( type ) || type.IsEnum; + } + + public static string GetTypeReadableName( Type type ) + { + string result; + if( typeReadableNames.TryGetValue( type, out result ) ) + return result; + + if( IsSupportedArrayType( type ) ) + { + Type elementType = type.IsArray ? type.GetElementType() : type.GetGenericArguments()[0]; + if( typeReadableNames.TryGetValue( elementType, out result ) ) + return result + "[]"; + else + return elementType.Name + "[]"; + } + + return type.Name; + } + + public static bool ParseArgument( string input, Type argumentType, out object output ) + { + ParseFunction parseFunction; + if( parseFunctions.TryGetValue( argumentType, out parseFunction ) ) + return parseFunction( input, out output ); + else if( typeof( Component ).IsAssignableFrom( argumentType ) ) + return ParseComponent( input, argumentType, out output ); + else if( argumentType.IsEnum ) + return ParseEnum( input, argumentType, out output ); + else if( IsSupportedArrayType( argumentType ) ) + return ParseArray( input, argumentType, out output ); + else + { + output = null; + return false; + } + } + + public static bool ParseString( string input, out object output ) + { + output = input; + return true; + } + + public static bool ParseBool( string input, out object output ) + { + if( input == "1" || input.ToLowerInvariant() == "true" ) + { + output = true; + return true; + } + + if( input == "0" || input.ToLowerInvariant() == "false" ) + { + output = false; + return true; + } + + output = false; + return false; + } + + public static bool ParseInt( string input, out object output ) + { + int value; + bool result = int.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseUInt( string input, out object output ) + { + uint value; + bool result = uint.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseLong( string input, out object output ) + { + long value; + bool result = long.TryParse( !input.EndsWith( "L", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseULong( string input, out object output ) + { + ulong value; + bool result = ulong.TryParse( !input.EndsWith( "L", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseByte( string input, out object output ) + { + byte value; + bool result = byte.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseSByte( string input, out object output ) + { + sbyte value; + bool result = sbyte.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseShort( string input, out object output ) + { + short value; + bool result = short.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseUShort( string input, out object output ) + { + ushort value; + bool result = ushort.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseChar( string input, out object output ) + { + char value; + bool result = char.TryParse( input, out value ); + + output = value; + return result; + } + + public static bool ParseFloat( string input, out object output ) + { + float value; + bool result = float.TryParse( !input.EndsWith( "f", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseDouble( string input, out object output ) + { + double value; + bool result = double.TryParse( !input.EndsWith( "f", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseDecimal( string input, out object output ) + { + decimal value; + bool result = decimal.TryParse( !input.EndsWith( "f", StringComparison.OrdinalIgnoreCase ) ? input : input.Substring( 0, input.Length - 1 ), out value ); + + output = value; + return result; + } + + public static bool ParseVector2( string input, out object output ) + { + return ParseVector( input, typeof( Vector2 ), out output ); + } + + public static bool ParseVector3( string input, out object output ) + { + return ParseVector( input, typeof( Vector3 ), out output ); + } + + public static bool ParseVector4( string input, out object output ) + { + return ParseVector( input, typeof( Vector4 ), out output ); + } + + public static bool ParseQuaternion( string input, out object output ) + { + return ParseVector( input, typeof( Quaternion ), out output ); + } + + public static bool ParseColor( string input, out object output ) + { + return ParseVector( input, typeof( Color ), out output ); + } + + public static bool ParseColor32( string input, out object output ) + { + return ParseVector( input, typeof( Color32 ), out output ); + } + + public static bool ParseRect( string input, out object output ) + { + return ParseVector( input, typeof( Rect ), out output ); + } + + public static bool ParseRectOffset( string input, out object output ) + { + return ParseVector( input, typeof( RectOffset ), out output ); + } + + public static bool ParseBounds( string input, out object output ) + { + return ParseVector( input, typeof( Bounds ), out output ); + } + +#if UNITY_2017_2_OR_NEWER + public static bool ParseVector2Int( string input, out object output ) + { + return ParseVector( input, typeof( Vector2Int ), out output ); + } + + public static bool ParseVector3Int( string input, out object output ) + { + return ParseVector( input, typeof( Vector3Int ), out output ); + } + + public static bool ParseRectInt( string input, out object output ) + { + return ParseVector( input, typeof( RectInt ), out output ); + } + + public static bool ParseBoundsInt( string input, out object output ) + { + return ParseVector( input, typeof( BoundsInt ), out output ); + } +#endif + + public static bool ParseGameObject( string input, out object output ) + { + output = input == "null" ? null : GameObject.Find( input ); + return true; + } + + public static bool ParseComponent( string input, Type componentType, out object output ) + { + GameObject gameObject = input == "null" ? null : GameObject.Find( input ); + output = gameObject ? gameObject.GetComponent( componentType ) : null; + return true; + } + + public static bool ParseEnum( string input, Type enumType, out object output ) + { + const int NONE = 0, OR = 1, AND = 2; + + int outputInt = 0; + int operation = NONE; // 0: nothing, 1: OR with outputInt, 2: AND with outputInt + for( int i = 0; i < input.Length; i++ ) + { + string enumStr; + int orIndex = input.IndexOf( '|', i ); + int andIndex = input.IndexOf( '&', i ); + if( orIndex < 0 ) + enumStr = input.Substring( i, ( andIndex < 0 ? input.Length : andIndex ) - i ).Trim(); + else + enumStr = input.Substring( i, ( andIndex < 0 ? orIndex : Mathf.Min( andIndex, orIndex ) ) - i ).Trim(); + + int value; + if( !int.TryParse( enumStr, out value ) ) + { + try + { + // Case-insensitive enum parsing + value = Convert.ToInt32( Enum.Parse( enumType, enumStr, true ) ); + } + catch + { + output = null; + return false; + } + } + + if( operation == NONE ) + outputInt = value; + else if( operation == OR ) + outputInt |= value; + else + outputInt &= value; + + if( orIndex >= 0 ) + { + if( andIndex > orIndex ) + { + operation = AND; + i = andIndex; + } + else + { + operation = OR; + i = orIndex; + } + } + else if( andIndex >= 0 ) + { + operation = AND; + i = andIndex; + } + else + i = input.Length; + } + + output = Enum.ToObject( enumType, outputInt ); + return true; + } + + public static bool ParseArray( string input, Type arrayType, out object output ) + { + List valuesToParse = new List( 2 ); + FetchArgumentsFromCommand( input, valuesToParse ); + + IList result = (IList) Activator.CreateInstance( arrayType, new object[1] { valuesToParse.Count } ); + output = result; + + if( arrayType.IsArray ) + { + Type elementType = arrayType.GetElementType(); + for( int i = 0; i < valuesToParse.Count; i++ ) + { + object obj; + if( !ParseArgument( valuesToParse[i], elementType, out obj ) ) + return false; + + result[i] = obj; + } + } + else + { + Type elementType = arrayType.GetGenericArguments()[0]; + for( int i = 0; i < valuesToParse.Count; i++ ) + { + object obj; + if( !ParseArgument( valuesToParse[i], elementType, out obj ) ) + return false; + + result.Add( obj ); + } + } + + return true; + } + + // Create a vector of specified type (fill the blank slots with 0 or ignore unnecessary slots) + private static bool ParseVector( string input, Type vectorType, out object output ) + { + List tokens = new List( input.Replace( ',', ' ' ).Trim().Split( ' ' ) ); + for( int i = tokens.Count - 1; i >= 0; i-- ) + { + tokens[i] = tokens[i].Trim(); + if( tokens[i].Length == 0 ) + tokens.RemoveAt( i ); + } + + float[] tokenValues = new float[tokens.Count]; + for( int i = 0; i < tokens.Count; i++ ) + { + object val; + if( !ParseFloat( tokens[i], out val ) ) + { + if( vectorType == typeof( Vector3 ) ) + output = Vector3.zero; + else if( vectorType == typeof( Vector2 ) ) + output = Vector2.zero; + else + output = Vector4.zero; + + return false; + } + + tokenValues[i] = (float) val; + } + + if( vectorType == typeof( Vector3 ) ) + { + Vector3 result = Vector3.zero; + + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Vector2 ) ) + { + Vector2 result = Vector2.zero; + + for( int i = 0; i < tokenValues.Length && i < 2; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Vector4 ) ) + { + Vector4 result = Vector4.zero; + + for( int i = 0; i < tokenValues.Length && i < 4; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Quaternion ) ) + { + Quaternion result = Quaternion.identity; + + for( int i = 0; i < tokenValues.Length && i < 4; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Color ) ) + { + Color result = Color.black; + + for( int i = 0; i < tokenValues.Length && i < 4; i++ ) + result[i] = tokenValues[i]; + + output = result; + } + else if( vectorType == typeof( Color32 ) ) + { + Color32 result = new Color32( 0, 0, 0, 255 ); + + if( tokenValues.Length > 0 ) + result.r = (byte) Mathf.RoundToInt( tokenValues[0] ); + if( tokenValues.Length > 1 ) + result.g = (byte) Mathf.RoundToInt( tokenValues[1] ); + if( tokenValues.Length > 2 ) + result.b = (byte) Mathf.RoundToInt( tokenValues[2] ); + if( tokenValues.Length > 3 ) + result.a = (byte) Mathf.RoundToInt( tokenValues[3] ); + + output = result; + } + else if( vectorType == typeof( Rect ) ) + { + Rect result = Rect.zero; + + if( tokenValues.Length > 0 ) + result.x = tokenValues[0]; + if( tokenValues.Length > 1 ) + result.y = tokenValues[1]; + if( tokenValues.Length > 2 ) + result.width = tokenValues[2]; + if( tokenValues.Length > 3 ) + result.height = tokenValues[3]; + + output = result; + } + else if( vectorType == typeof( RectOffset ) ) + { + RectOffset result = new RectOffset(); + + if( tokenValues.Length > 0 ) + result.left = Mathf.RoundToInt( tokenValues[0] ); + if( tokenValues.Length > 1 ) + result.right = Mathf.RoundToInt( tokenValues[1] ); + if( tokenValues.Length > 2 ) + result.top = Mathf.RoundToInt( tokenValues[2] ); + if( tokenValues.Length > 3 ) + result.bottom = Mathf.RoundToInt( tokenValues[3] ); + + output = result; + } + else if( vectorType == typeof( Bounds ) ) + { + Vector3 center = Vector3.zero; + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + center[i] = tokenValues[i]; + + Vector3 size = Vector3.zero; + for( int i = 3; i < tokenValues.Length && i < 6; i++ ) + size[i - 3] = tokenValues[i]; + + output = new Bounds( center, size ); + } +#if UNITY_2017_2_OR_NEWER + else if( vectorType == typeof( Vector3Int ) ) + { + Vector3Int result = Vector3Int.zero; + + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + result[i] = Mathf.RoundToInt( tokenValues[i] ); + + output = result; + } + else if( vectorType == typeof( Vector2Int ) ) + { + Vector2Int result = Vector2Int.zero; + + for( int i = 0; i < tokenValues.Length && i < 2; i++ ) + result[i] = Mathf.RoundToInt( tokenValues[i] ); + + output = result; + } + else if( vectorType == typeof( RectInt ) ) + { + RectInt result = new RectInt(); + + if( tokenValues.Length > 0 ) + result.x = Mathf.RoundToInt( tokenValues[0] ); + if( tokenValues.Length > 1 ) + result.y = Mathf.RoundToInt( tokenValues[1] ); + if( tokenValues.Length > 2 ) + result.width = Mathf.RoundToInt( tokenValues[2] ); + if( tokenValues.Length > 3 ) + result.height = Mathf.RoundToInt( tokenValues[3] ); + + output = result; + } + else if( vectorType == typeof( BoundsInt ) ) + { + Vector3Int center = Vector3Int.zero; + for( int i = 0; i < tokenValues.Length && i < 3; i++ ) + center[i] = Mathf.RoundToInt( tokenValues[i] ); + + Vector3Int size = Vector3Int.zero; + for( int i = 3; i < tokenValues.Length && i < 6; i++ ) + size[i - 3] = Mathf.RoundToInt( tokenValues[i] ); + + output = new BoundsInt( center, size ); + } +#endif + else + { + output = null; + return false; + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs.meta new file mode 100644 index 0000000..756bdf7 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogConsole.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d15693a03d0d33b4892c6365a2a97e19 +timeCreated: 1472036503 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs new file mode 100644 index 0000000..e0020fa --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs @@ -0,0 +1,170 @@ +using System.Globalization; +using System.Text; +using UnityEngine; + +// Container for a simple debug entry +namespace IngameDebugConsole +{ + public class DebugLogEntry : System.IEquatable + { + private const int HASH_NOT_CALCULATED = -623218; + + public string logString; + public string stackTrace; + + private string completeLog; + + // Sprite to show with this entry + public Sprite logTypeSpriteRepresentation; + + // Collapsed count + public int count; + + private int hashValue; + + public void Initialize( string logString, string stackTrace ) + { + this.logString = logString; + this.stackTrace = stackTrace; + + completeLog = null; + count = 1; + hashValue = HASH_NOT_CALCULATED; + } + + // Check if two entries have the same origin + public bool Equals( DebugLogEntry other ) + { + return this.logString == other.logString && this.stackTrace == other.stackTrace; + } + + // Checks if logString or stackTrace contains the search term + public bool MatchesSearchTerm( string searchTerm ) + { + return ( logString != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( logString, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ) || + ( stackTrace != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( stackTrace, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ); + } + + // Return a string containing complete information about this debug entry + public override string ToString() + { + if( completeLog == null ) + completeLog = string.Concat( logString, "\n", stackTrace ); + + return completeLog; + } + + // Credit: https://stackoverflow.com/a/19250516/2373034 + public override int GetHashCode() + { + if( hashValue == HASH_NOT_CALCULATED ) + { + unchecked + { + hashValue = 17; + hashValue = hashValue * 23 + ( logString == null ? 0 : logString.GetHashCode() ); + hashValue = hashValue * 23 + ( stackTrace == null ? 0 : stackTrace.GetHashCode() ); + } + } + + return hashValue; + } + } + + public struct QueuedDebugLogEntry + { + public readonly string logString; + public readonly string stackTrace; + public readonly LogType logType; + + public QueuedDebugLogEntry( string logString, string stackTrace, LogType logType ) + { + this.logString = logString; + this.stackTrace = stackTrace; + this.logType = logType; + } + + // Checks if logString or stackTrace contains the search term + public bool MatchesSearchTerm( string searchTerm ) + { + return ( logString != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( logString, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ) || + ( stackTrace != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( stackTrace, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ); + } + } + + public struct DebugLogEntryTimestamp + { + public readonly System.DateTime dateTime; +#if !IDG_OMIT_ELAPSED_TIME + public readonly float elapsedSeconds; +#endif +#if !IDG_OMIT_FRAMECOUNT + public readonly int frameCount; +#endif + +#if !IDG_OMIT_ELAPSED_TIME && !IDG_OMIT_FRAMECOUNT + public DebugLogEntryTimestamp( System.DateTime dateTime, float elapsedSeconds, int frameCount ) +#elif !IDG_OMIT_ELAPSED_TIME + public DebugLogEntryTimestamp( System.DateTime dateTime, float elapsedSeconds ) +#elif !IDG_OMIT_FRAMECOUNT + public DebugLogEntryTimestamp( System.DateTime dateTime, int frameCount ) +#else + public DebugLogEntryTimestamp( System.DateTime dateTime ) +#endif + { + this.dateTime = dateTime; +#if !IDG_OMIT_ELAPSED_TIME + this.elapsedSeconds = elapsedSeconds; +#endif +#if !IDG_OMIT_FRAMECOUNT + this.frameCount = frameCount; +#endif + } + + public void AppendTime( StringBuilder sb ) + { + // Add DateTime in format: [HH:mm:ss] + sb.Append( "[" ); + + int hour = dateTime.Hour; + if( hour >= 10 ) + sb.Append( hour ); + else + sb.Append( "0" ).Append( hour ); + + sb.Append( ":" ); + + int minute = dateTime.Minute; + if( minute >= 10 ) + sb.Append( minute ); + else + sb.Append( "0" ).Append( minute ); + + sb.Append( ":" ); + + int second = dateTime.Second; + if( second >= 10 ) + sb.Append( second ); + else + sb.Append( "0" ).Append( second ); + + sb.Append( "]" ); + } + + public void AppendFullTimestamp( StringBuilder sb ) + { + AppendTime( sb ); + +#if !IDG_OMIT_ELAPSED_TIME && !IDG_OMIT_FRAMECOUNT + // Append elapsed seconds and frame count in format: [1.0s at #Frame] + sb.Append( "[" ).Append( elapsedSeconds.ToString( "F1" ) ).Append( "s at " ).Append( "#" ).Append( frameCount ).Append( "]" ); +#elif !IDG_OMIT_ELAPSED_TIME + // Append elapsed seconds in format: [1.0s] + sb.Append( "[" ).Append( elapsedSeconds.ToString( "F1" ) ).Append( "s]" ); +#elif !IDG_OMIT_FRAMECOUNT + // Append frame count in format: [#Frame] + sb.Append( "[#" ).Append( frameCount ).Append( "]" ); +#endif + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs.meta new file mode 100644 index 0000000..3a1dd21 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogEntry.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e7b1a420c564be040bf73b8a377fc2c2 +timeCreated: 1466375168 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs new file mode 100644 index 0000000..e98dd53 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs @@ -0,0 +1,39 @@ +namespace IngameDebugConsole +{ + public class DebugLogIndexList + { + private T[] indices; + private int size; + + public int Count { get { return size; } } + public T this[int index] + { + get { return indices[index]; } + set { indices[index] = value; } + } + + public DebugLogIndexList() + { + indices = new T[64]; + size = 0; + } + + public void Add( T value ) + { + if( size == indices.Length ) + System.Array.Resize( ref indices, size * 2 ); + + indices[size++] = value; + } + + public void Clear() + { + size = 0; + } + + public int IndexOf( T value ) + { + return System.Array.IndexOf( indices, value ); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs.meta new file mode 100644 index 0000000..5f86ef5 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogIndexList.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 37c6c91e5bfac6f499698c03f593bcbb +timeCreated: 1520627934 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs new file mode 100644 index 0000000..7256de7 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs @@ -0,0 +1,283 @@ +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using System.Text; +#if UNITY_EDITOR +using UnityEditor; +using System.Text.RegularExpressions; +#endif + +// A UI element to show information about a debug entry +namespace IngameDebugConsole +{ + public class DebugLogItem : MonoBehaviour, IPointerClickHandler + { + #region Platform Specific Elements +#if !UNITY_2018_1_OR_NEWER +#if !UNITY_EDITOR && UNITY_ANDROID + private static AndroidJavaClass m_ajc = null; + private static AndroidJavaClass AJC + { + get + { + if( m_ajc == null ) + m_ajc = new AndroidJavaClass( "com.yasirkula.unity.DebugConsole" ); + + return m_ajc; + } + } + + private static AndroidJavaObject m_context = null; + private static AndroidJavaObject Context + { + get + { + if( m_context == null ) + { + using( AndroidJavaObject unityClass = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" ) ) + { + m_context = unityClass.GetStatic( "currentActivity" ); + } + } + + return m_context; + } + } +#elif !UNITY_EDITOR && UNITY_IOS + [System.Runtime.InteropServices.DllImport( "__Internal" )] + private static extern void _DebugConsole_CopyText( string text ); +#endif +#endif + #endregion + +#pragma warning disable 0649 + // Cached components + [SerializeField] + private RectTransform transformComponent; + public RectTransform Transform { get { return transformComponent; } } + + [SerializeField] + private Image imageComponent; + public Image Image { get { return imageComponent; } } + + [SerializeField] + private CanvasGroup canvasGroupComponent; + public CanvasGroup CanvasGroup { get { return canvasGroupComponent; } } + + [SerializeField] + private Text logText; + [SerializeField] + private Image logTypeImage; + + // Objects related to the collapsed count of the debug entry + [SerializeField] + private GameObject logCountParent; + [SerializeField] + private Text logCountText; + + [SerializeField] + private RectTransform copyLogButton; +#pragma warning restore 0649 + + // Debug entry to show with this log item + private DebugLogEntry logEntry; + public DebugLogEntry Entry { get { return logEntry; } } + + private DebugLogEntryTimestamp? logEntryTimestamp; + public DebugLogEntryTimestamp? Timestamp { get { return logEntryTimestamp; } } + + // Index of the entry in the list of entries + private int entryIndex; + public int Index { get { return entryIndex; } } + + private bool isExpanded; + public bool Expanded { get { return isExpanded; } } + + private Vector2 logTextOriginalPosition; + private Vector2 logTextOriginalSize; + private float copyLogButtonHeight; + + private DebugLogRecycledListView listView; + + public void Initialize( DebugLogRecycledListView listView ) + { + this.listView = listView; + + logTextOriginalPosition = logText.rectTransform.anchoredPosition; + logTextOriginalSize = logText.rectTransform.sizeDelta; + copyLogButtonHeight = copyLogButton.anchoredPosition.y + copyLogButton.sizeDelta.y + 2f; // 2f: space between text and button + +#if !UNITY_EDITOR && UNITY_WEBGL + copyLogButton.gameObject.AddComponent().Initialize( this ); +#endif + } + + public void SetContent( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp, int entryIndex, bool isExpanded ) + { + this.logEntry = logEntry; + this.logEntryTimestamp = logEntryTimestamp; + this.entryIndex = entryIndex; + this.isExpanded = isExpanded; + + Vector2 size = transformComponent.sizeDelta; + if( isExpanded ) + { + logText.horizontalOverflow = HorizontalWrapMode.Wrap; + size.y = listView.SelectedItemHeight; + + if( !copyLogButton.gameObject.activeSelf ) + { + copyLogButton.gameObject.SetActive( true ); + + logText.rectTransform.anchoredPosition = new Vector2( logTextOriginalPosition.x, logTextOriginalPosition.y + copyLogButtonHeight * 0.5f ); + logText.rectTransform.sizeDelta = logTextOriginalSize - new Vector2( 0f, copyLogButtonHeight ); + } + } + else + { + logText.horizontalOverflow = HorizontalWrapMode.Overflow; + size.y = listView.ItemHeight; + + if( copyLogButton.gameObject.activeSelf ) + { + copyLogButton.gameObject.SetActive( false ); + + logText.rectTransform.anchoredPosition = logTextOriginalPosition; + logText.rectTransform.sizeDelta = logTextOriginalSize; + } + } + + transformComponent.sizeDelta = size; + + SetText( logEntry, logEntryTimestamp, isExpanded ); + logTypeImage.sprite = logEntry.logTypeSpriteRepresentation; + } + + // Show the collapsed count of the debug entry + public void ShowCount() + { + logCountText.text = logEntry.count.ToString(); + + if( !logCountParent.activeSelf ) + logCountParent.SetActive( true ); + } + + // Hide the collapsed count of the debug entry + public void HideCount() + { + if( logCountParent.activeSelf ) + logCountParent.SetActive( false ); + } + + // Update the debug entry's displayed timestamp + public void UpdateTimestamp( DebugLogEntryTimestamp timestamp ) + { + logEntryTimestamp = timestamp; + + if( isExpanded || listView.manager.alwaysDisplayTimestamps ) + SetText( logEntry, timestamp, isExpanded ); + } + + private void SetText( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp, bool isExpanded ) + { + if( !logEntryTimestamp.HasValue || ( !isExpanded && !listView.manager.alwaysDisplayTimestamps ) ) + logText.text = isExpanded ? logEntry.ToString() : logEntry.logString; + else + { + StringBuilder sb = listView.manager.sharedStringBuilder; + sb.Length = 0; + + if( isExpanded ) + { + logEntryTimestamp.Value.AppendFullTimestamp( sb ); + sb.Append( ": " ).Append( logEntry.ToString() ); + } + else + { + logEntryTimestamp.Value.AppendTime( sb ); + sb.Append( " " ).Append( logEntry.logString ); + } + + logText.text = sb.ToString(); + } + } + + // This log item is clicked, show the debug entry's stack trace + public void OnPointerClick( PointerEventData eventData ) + { +#if UNITY_EDITOR + if( eventData.button == PointerEventData.InputButton.Right ) + { + Match regex = Regex.Match( logEntry.stackTrace, @"\(at .*\.cs:[0-9]+\)$", RegexOptions.Multiline ); + if( regex.Success ) + { + string line = logEntry.stackTrace.Substring( regex.Index + 4, regex.Length - 5 ); + int lineSeparator = line.IndexOf( ':' ); + MonoScript script = AssetDatabase.LoadAssetAtPath( line.Substring( 0, lineSeparator ) ); + if( script != null ) + AssetDatabase.OpenAsset( script, int.Parse( line.Substring( lineSeparator + 1 ) ) ); + } + } + else + listView.OnLogItemClicked( this ); +#else + listView.OnLogItemClicked( this ); +#endif + } + + public void CopyLog() + { +#if UNITY_EDITOR || !UNITY_WEBGL + string log = GetCopyContent(); + if( string.IsNullOrEmpty( log ) ) + return; + +#if UNITY_EDITOR || UNITY_2018_1_OR_NEWER || ( !UNITY_ANDROID && !UNITY_IOS ) + GUIUtility.systemCopyBuffer = log; +#elif UNITY_ANDROID + AJC.CallStatic( "CopyText", Context, log ); +#elif UNITY_IOS + _DebugConsole_CopyText( log ); +#endif +#endif + } + + internal string GetCopyContent() + { + if( !logEntryTimestamp.HasValue ) + return logEntry.ToString(); + else + { + StringBuilder sb = listView.manager.sharedStringBuilder; + sb.Length = 0; + + logEntryTimestamp.Value.AppendFullTimestamp( sb ); + sb.Append( ": " ).Append( logEntry.ToString() ); + + return sb.ToString(); + } + } + + public float CalculateExpandedHeight( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp ) + { + string text = logText.text; + HorizontalWrapMode wrapMode = logText.horizontalOverflow; + + SetText( logEntry, logEntryTimestamp, true ); + logText.horizontalOverflow = HorizontalWrapMode.Wrap; + + float result = logText.preferredHeight + copyLogButtonHeight; + + logText.text = text; + logText.horizontalOverflow = wrapMode; + + return Mathf.Max( listView.ItemHeight, result ); + } + + // Return a string containing complete information about the debug entry + public override string ToString() + { + return logEntry.ToString(); + } + } +} \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs.meta new file mode 100644 index 0000000..15a0f84 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItem.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2ea291be9de70a4abfec595203c96c1 +timeCreated: 1465919949 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs new file mode 100644 index 0000000..a02f3ad --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs @@ -0,0 +1,36 @@ +#if !UNITY_EDITOR && UNITY_WEBGL +using System.Runtime.InteropServices; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace IngameDebugConsole +{ + public class DebugLogItemCopyWebGL : MonoBehaviour, IPointerDownHandler, IPointerUpHandler + { + [DllImport( "__Internal" )] + private static extern void IngameDebugConsoleStartCopy( string textToCopy ); + [DllImport( "__Internal" )] + private static extern void IngameDebugConsoleCancelCopy(); + + private DebugLogItem logItem; + + public void Initialize( DebugLogItem logItem ) + { + this.logItem = logItem; + } + + public void OnPointerDown( PointerEventData eventData ) + { + string log = logItem.GetCopyContent(); + if( !string.IsNullOrEmpty( log ) ) + IngameDebugConsoleStartCopy( log ); + } + + public void OnPointerUp( PointerEventData eventData ) + { + if( eventData.dragging ) + IngameDebugConsoleCancelCopy(); + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs.meta b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs.meta new file mode 100644 index 0000000..539dfd8 --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogItemCopyWebGL.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a7d9d894141e704d8160fb4632121ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogManager.cs b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogManager.cs new file mode 100644 index 0000000..019c08f --- /dev/null +++ b/Assets/Plugins/IngameDebugConsole/Scripts/DebugLogManager.cs @@ -0,0 +1,1754 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER +using UnityEngine.InputSystem; +#endif +#if UNITY_EDITOR && UNITY_2021_1_OR_NEWER +using Screen = UnityEngine.Device.Screen; // To support Device Simulator on Unity 2021.1+ +#endif + +// Receives debug entries and custom events (e.g. Clear, Collapse, Filter by Type) +// and notifies the recycled list view of changes to the list of debug entries +// +// - Vocabulary - +// Debug/Log entry: a Debug.Log/LogError/LogWarning/LogException/LogAssertion request made by +// the client and intercepted by this manager object +// Debug/Log item: a visual (uGUI) representation of a debug entry +// +// There can be a lot of debug entries in the system but there will only be a handful of log items +// to show their properties on screen (these log items are recycled as the list is scrolled) + +// An enum to represent filtered log types +namespace IngameDebugConsole +{ + public enum DebugLogFilter + { + None = 0, + Info = 1, + Warning = 2, + Error = 4, + All = 7 + } + + public class DebugLogManager : MonoBehaviour + { + public static DebugLogManager Instance { get; private set; } + +#pragma warning disable 0649 + [Header( "Properties" )] + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console window will persist between scenes (i.e. not be destroyed when scene changes)" )] + private bool singleton = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "Minimum height of the console window" )] + private float minimumHeight = 200f; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console window can be resized horizontally, as well" )] + private bool enableHorizontalResizing = false; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console window's resize button will be located at bottom-right corner. Otherwise, it will be located at bottom-left corner" )] + private bool resizeFromRight = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "Minimum width of the console window" )] + private float minimumWidth = 240f; + + [SerializeField] + [HideInInspector] + [Tooltip( "If disabled, no popup will be shown when the console window is hidden" )] + private bool enablePopup = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console will be initialized as a popup" )] + private bool startInPopupMode = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, console window will initially be invisible" )] + private bool startMinimized = false; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, pressing the Toggle Key will show/hide (i.e. toggle) the console window at runtime" )] + private bool toggleWithKey = false; + +#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + [SerializeField] + [HideInInspector] + public InputAction toggleBinding = new InputAction( "Toggle Binding", type: InputActionType.Button, binding: "/backquote", expectedControlType: "Button" ); +#else + [SerializeField] + [HideInInspector] + private KeyCode toggleKey = KeyCode.BackQuote; +#endif + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, the console window will have a searchbar" )] + private bool enableSearchbar = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "Width of the canvas determines whether the searchbar will be located inside the menu bar or underneath the menu bar. This way, the menu bar doesn't get too crowded on narrow screens. This value determines the minimum width of the canvas for the searchbar to appear inside the menu bar" )] + private float topSearchbarMinWidth = 360f; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, the console window will continue receiving logs in the background even if its GameObject is inactive. But the console window's GameObject needs to be activated at least once because its Awake function must be triggered for this to work" )] + private bool receiveLogsWhileInactive = false; + + [SerializeField] + [HideInInspector] + private bool receiveInfoLogs = true, receiveWarningLogs = true, receiveErrorLogs = true, receiveExceptionLogs = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, the arrival times of logs will be recorded and displayed when a log is expanded" )] + private bool captureLogTimestamps = false; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, timestamps will be displayed for logs even if they aren't expanded" )] + internal bool alwaysDisplayTimestamps = false; + + [SerializeField] + [HideInInspector] + [Tooltip( "While the console window is hidden, incoming logs will be queued but not immediately processed until the console window is opened (to avoid wasting CPU resources). When the log queue exceeds this limit, the first logs in the queue will be processed to enforce this limit. Processed logs won't increase RAM usage if they've been seen before (i.e. collapsible logs) but this is not the case for queued logs, so if a log is spammed every frame, it will fill the whole queue in an instant. Which is why there is a queue limit" )] + private int queuedLogLimit = 256; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, the command input field at the bottom of the console window will automatically be cleared after entering a command" )] + private bool clearCommandAfterExecution = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "Console keeps track of the previously entered commands. This value determines the capacity of the command history (you can scroll through the history via up and down arrow keys while the command input field is focused)" )] + private int commandHistorySize = 15; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, while typing a command, all of the matching commands' signatures will be displayed in a popup" )] + private bool showCommandSuggestions = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, on Android platform, logcat entries of the application will also be logged to the console with the prefix \"LOGCAT: \". This may come in handy especially if you want to access the native logs of your Android plugins (like Admob)" )] + private bool receiveLogcatLogsInAndroid = false; + +#pragma warning disable 0414 +#if UNITY_2018_3_OR_NEWER // On older Unity versions, disabling CS0169 is problematic: "Cannot restore warning 'CS0169' because it was disabled globally" +#pragma warning disable 0169 +#endif + [SerializeField] + [HideInInspector] + [Tooltip( "Native logs will be filtered using these arguments. If left blank, all native logs of the application will be logged to the console. But if you want to e.g. see Admob's logs only, you can enter \"-s Ads\" (without quotes) here" )] + private string logcatArguments; +#if UNITY_2018_3_OR_NEWER +#pragma warning restore 0169 +#endif +#pragma warning restore 0414 + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, on Android and iOS devices with notch screens, the console window will be repositioned so that the cutout(s) don't obscure it" )] + private bool avoidScreenCutout = true; + + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, on Android and iOS devices with notch screens, the console window's popup won't be obscured by the screen cutouts" )] + internal bool popupAvoidsScreenCutout = false; + + [SerializeField] + [Tooltip( "If a log is longer than this limit, it will be truncated. This helps avoid reaching Unity's 65000 vertex limit for UI canvases" )] + private int maxLogLength = 10000; + +#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBGL + [SerializeField] + [HideInInspector] + [Tooltip( "If enabled, on standalone platforms, command input field will automatically be focused (start receiving keyboard input) after opening the console window" )] + private bool autoFocusOnCommandInputField = true; +#endif + + [Header( "Visuals" )] + [SerializeField] + private DebugLogItem logItemPrefab; + + [SerializeField] + private Text commandSuggestionPrefab; + + // Visuals for different log types + [SerializeField] + private Sprite infoLog; + [SerializeField] + private Sprite warningLog; + [SerializeField] + private Sprite errorLog; + + // Visuals for resize button + [SerializeField] + private Sprite resizeIconAllDirections; + [SerializeField] + private Sprite resizeIconVerticalOnly; + + private Dictionary logSpriteRepresentations; + + [SerializeField] + private Color collapseButtonNormalColor; + [SerializeField] + private Color collapseButtonSelectedColor; + + [SerializeField] + private Color filterButtonsNormalColor; + [SerializeField] + private Color filterButtonsSelectedColor; + + [SerializeField] + private string commandSuggestionHighlightStart = ""; + [SerializeField] + private string commandSuggestionHighlightEnd = ""; + + [Header( "Internal References" )] + [SerializeField] + private RectTransform logWindowTR; + + internal RectTransform canvasTR; + + [SerializeField] + private RectTransform logItemsContainer; + + [SerializeField] + private RectTransform commandSuggestionsContainer; + + [SerializeField] + private InputField commandInputField; + + [SerializeField] + private Button hideButton; + + [SerializeField] + private Button clearButton; + + [SerializeField] + private Image collapseButton; + + [SerializeField] + private Image filterInfoButton; + [SerializeField] + private Image filterWarningButton; + [SerializeField] + private Image filterErrorButton; + + [SerializeField] + private Text infoEntryCountText; + [SerializeField] + private Text warningEntryCountText; + [SerializeField] + private Text errorEntryCountText; + + [SerializeField] + private RectTransform searchbar; + [SerializeField] + private RectTransform searchbarSlotTop; + [SerializeField] + private RectTransform searchbarSlotBottom; + + [SerializeField] + private Image resizeButton; + + [SerializeField] + private GameObject snapToBottomButton; + + // Canvas group to modify visibility of the log window + [SerializeField] + private CanvasGroup logWindowCanvasGroup; + + [SerializeField] + private DebugLogPopup popupManager; + + [SerializeField] + private ScrollRect logItemsScrollRect; + private RectTransform logItemsScrollRectTR; + private Vector2 logItemsScrollRectOriginalSize; + + // Recycled list view to handle the log items efficiently + [SerializeField] + private DebugLogRecycledListView recycledListView; +#pragma warning restore 0649 + + private bool isLogWindowVisible = true; + public bool IsLogWindowVisible { get { return isLogWindowVisible; } } + + public bool PopupEnabled + { + get { return popupManager.gameObject.activeSelf; } + set { popupManager.gameObject.SetActive( value ); } + } + + private bool screenDimensionsChanged = true; + private float logWindowPreviousWidth; + + // Number of entries filtered by their types + private int infoEntryCount = 0, warningEntryCount = 0, errorEntryCount = 0; + private bool entryCountTextsDirty; + + // Number of new entries received this frame + private int newInfoEntryCount = 0, newWarningEntryCount = 0, newErrorEntryCount = 0; + + // Filters to apply to the list of debug entries to show + private bool isCollapseOn = false; + private DebugLogFilter logFilter = DebugLogFilter.All; + + // Search filter + private string searchTerm; + private bool isInSearchMode; + + // If the last log item is completely visible (scrollbar is at the bottom), + // scrollbar will remain at the bottom when new debug entries are received + private bool snapToBottom = true; + + // List of unique debug entries (duplicates of entries are not kept) + private List collapsedLogEntries; + private List collapsedLogEntriesTimestamps; + + // Dictionary to quickly find if a log already exists in collapsedLogEntries + private Dictionary collapsedLogEntriesMap; + + // The order the collapsedLogEntries are received + // (duplicate entries have the same index (value)) + private DebugLogIndexList uncollapsedLogEntriesIndices; + private DebugLogIndexList uncollapsedLogEntriesTimestamps; + + // Filtered list of debug entries to show + private DebugLogIndexList indicesOfListEntriesToShow; + private DebugLogIndexList timestampsOfListEntriesToShow; + + // The log entry that must be focused this frame + private int indexOfLogEntryToSelectAndFocus = -1; + + // Whether or not logs list view should be updated this frame + private bool shouldUpdateRecycledListView = false; + + // Logs that should be registered in Update-loop + private DynamicCircularBuffer queuedLogEntries; + private DynamicCircularBuffer queuedLogEntriesTimestamps; + private object logEntriesLock; + private int pendingLogToAutoExpand; + + // Command suggestions that match the currently entered command + private List commandSuggestionInstances; + private int visibleCommandSuggestionInstances = 0; + private List matchingCommandSuggestions; + private List commandCaretIndexIncrements; + private string commandInputFieldPrevCommand; + private string commandInputFieldPrevCommandName; + private int commandInputFieldPrevParamCount = -1; + private int commandInputFieldPrevCaretPos = -1; + private int commandInputFieldPrevCaretArgumentIndex = -1; + + // Value of the command input field when autocomplete was first requested + private string commandInputFieldAutoCompleteBase; + private bool commandInputFieldAutoCompletedNow; + + // Pools for memory efficiency + private List pooledLogEntries; + private List pooledLogItems; + + // History of the previously entered commands + private CircularBuffer commandHistory; + private int commandHistoryIndex = -1; + private string unfinishedCommand; + + // StringBuilder used by various functions + internal StringBuilder sharedStringBuilder; + + // Offset of DateTime.Now from DateTime.UtcNow + private System.TimeSpan localTimeUtcOffset; + + // Last recorded values of Time.realtimeSinceStartup and Time.frameCount on the main thread (because these Time properties can't be accessed from other threads) +#if !IDG_OMIT_ELAPSED_TIME + private float lastElapsedSeconds; +#endif +#if !IDG_OMIT_FRAMECOUNT + private int lastFrameCount; +#endif + + private DebugLogEntryTimestamp dummyLogEntryTimestamp; + + // Required in ValidateScrollPosition() function + private PointerEventData nullPointerEventData; + + // Callbacks for log window show/hide events + public System.Action OnLogWindowShown, OnLogWindowHidden; + +#if UNITY_EDITOR + private bool isQuittingApplication; +#endif + +#if !UNITY_EDITOR && UNITY_ANDROID + private DebugLogLogcatListener logcatListener; +#endif + + private void Awake() + { + // Only one instance of debug console is allowed + if( !Instance ) + { + Instance = this; + + // If it is a singleton object, don't destroy it between scene changes + if( singleton ) + DontDestroyOnLoad( gameObject ); + } + else if( Instance != this ) + { + Destroy( gameObject ); + return; + } + + pooledLogEntries = new List( 16 ); + pooledLogItems = new List( 16 ); + commandSuggestionInstances = new List( 8 ); + matchingCommandSuggestions = new List( 8 ); + commandCaretIndexIncrements = new List( 8 ); + queuedLogEntries = new DynamicCircularBuffer( Mathf.Clamp( queuedLogLimit, 16, 4096 ) ); + commandHistory = new CircularBuffer( commandHistorySize ); + + logEntriesLock = new object(); + sharedStringBuilder = new StringBuilder( 1024 ); + + canvasTR = (RectTransform) transform; + logItemsScrollRectTR = (RectTransform) logItemsScrollRect.transform; + logItemsScrollRectOriginalSize = logItemsScrollRectTR.sizeDelta; + + // Associate sprites with log types + logSpriteRepresentations = new Dictionary() + { + { LogType.Log, infoLog }, + { LogType.Warning, warningLog }, + { LogType.Error, errorLog }, + { LogType.Exception, errorLog }, + { LogType.Assert, errorLog } + }; + + // Initially, all log types are visible + filterInfoButton.color = filterButtonsSelectedColor; + filterWarningButton.color = filterButtonsSelectedColor; + filterErrorButton.color = filterButtonsSelectedColor; + + resizeButton.sprite = enableHorizontalResizing ? resizeIconAllDirections : resizeIconVerticalOnly; + + collapsedLogEntries = new List( 128 ); + collapsedLogEntriesMap = new Dictionary( 128 ); + uncollapsedLogEntriesIndices = new DebugLogIndexList(); + indicesOfListEntriesToShow = new DebugLogIndexList(); + + if( captureLogTimestamps ) + { + collapsedLogEntriesTimestamps = new List( 128 ); + uncollapsedLogEntriesTimestamps = new DebugLogIndexList(); + timestampsOfListEntriesToShow = new DebugLogIndexList(); + queuedLogEntriesTimestamps = new DynamicCircularBuffer( queuedLogEntries.Capacity ); + } + + recycledListView.Initialize( this, collapsedLogEntries, indicesOfListEntriesToShow, timestampsOfListEntriesToShow, logItemPrefab.Transform.sizeDelta.y ); + recycledListView.UpdateItemsInTheList( true ); + + if( minimumWidth < 100f ) + minimumWidth = 100f; + if( minimumHeight < 200f ) + minimumHeight = 200f; + + if( !resizeFromRight ) + { + RectTransform resizeButtonTR = (RectTransform) resizeButton.GetComponentInParent().transform; + resizeButtonTR.anchorMin = new Vector2( 0f, resizeButtonTR.anchorMin.y ); + resizeButtonTR.anchorMax = new Vector2( 0f, resizeButtonTR.anchorMax.y ); + resizeButtonTR.pivot = new Vector2( 0f, resizeButtonTR.pivot.y ); + + ( (RectTransform) commandInputField.transform ).anchoredPosition += new Vector2( resizeButtonTR.sizeDelta.x, 0f ); + } + + if( enableSearchbar ) + searchbar.GetComponent().onValueChanged.AddListener( SearchTermChanged ); + else + { + searchbar = null; + searchbarSlotTop.gameObject.SetActive( false ); + searchbarSlotBottom.gameObject.SetActive( false ); + } + + filterInfoButton.gameObject.SetActive( receiveInfoLogs ); + filterWarningButton.gameObject.SetActive( receiveWarningLogs ); + filterErrorButton.gameObject.SetActive( receiveErrorLogs || receiveExceptionLogs ); + + if( commandSuggestionsContainer.gameObject.activeSelf ) + commandSuggestionsContainer.gameObject.SetActive( false ); + + // Register to UI events + commandInputField.onValidateInput += OnValidateCommand; + commandInputField.onValueChanged.AddListener( OnEditCommand ); + commandInputField.onEndEdit.AddListener( OnEndEditCommand ); + hideButton.onClick.AddListener( HideLogWindow ); + clearButton.onClick.AddListener( ClearLogs ); + collapseButton.GetComponent