7 lines
56 KiB
Lua
7 lines
56 KiB
Lua
-- Lua-hashings @89879fe79b6f3dc495c607494126ec9c3912b8e9 | /hashings/whirlpool.lua | https://github.com/user-none/lua-hashings | License: MIT License | Minified using https://www.npmjs.com/package/luamin/v/1.0.4
|
|
-- Copyright (c) 2016 John Schember
|
|
-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
-- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
local a=require("string")local b=require("nums.uintb").u64;local c=require("nums.uintb").u256;local d=require("nums.uintn").u8;local e={}local f={__metatable={},__index=e}e.digest_size=64;e.block_size=64;local g={b("0x18186018C07830D8"),b("0x23238C2305AF4626"),b("0xC6C63FC67EF991B8"),b("0xE8E887E8136FCDFB"),b("0x878726874CA113CB"),b("0xB8B8DAB8A9626D11"),b("0x0101040108050209"),b("0x4F4F214F426E9E0D"),b("0x3636D836ADEE6C9B"),b("0xA6A6A2A6590451FF"),b("0xD2D26FD2DEBDB90C"),b("0xF5F5F3F5FB06F70E"),b("0x7979F979EF80F296"),b("0x6F6FA16F5FCEDE30"),b("0x91917E91FCEF3F6D"),b("0x52525552AA07A4F8"),b("0x60609D6027FDC047"),b("0xBCBCCABC89766535"),b("0x9B9B569BACCD2B37"),b("0x8E8E028E048C018A"),b("0xA3A3B6A371155BD2"),b("0x0C0C300C603C186C"),b("0x7B7BF17BFF8AF684"),b("0x3535D435B5E16A80"),b("0x1D1D741DE8693AF5"),b("0xE0E0A7E05347DDB3"),b("0xD7D77BD7F6ACB321"),b("0xC2C22FC25EED999C"),b("0x2E2EB82E6D965C43"),b("0x4B4B314B627A9629"),b("0xFEFEDFFEA321E15D"),b("0x575741578216AED5"),b("0x15155415A8412ABD"),b("0x7777C1779FB6EEE8"),b("0x3737DC37A5EB6E92"),b("0xE5E5B3E57B56D79E"),b("0x9F9F469F8CD92313"),b("0xF0F0E7F0D317FD23"),b("0x4A4A354A6A7F9420"),b("0xDADA4FDA9E95A944"),b("0x58587D58FA25B0A2"),b("0xC9C903C906CA8FCF"),b("0x2929A429558D527C"),b("0x0A0A280A5022145A"),b("0xB1B1FEB1E14F7F50"),b("0xA0A0BAA0691A5DC9"),b("0x6B6BB16B7FDAD614"),b("0x85852E855CAB17D9"),b("0xBDBDCEBD8173673C"),b("0x5D5D695DD234BA8F"),b("0x1010401080502090"),b("0xF4F4F7F4F303F507"),b("0xCBCB0BCB16C08BDD"),b("0x3E3EF83EEDC67CD3"),b("0x0505140528110A2D"),b("0x676781671FE6CE78"),b("0xE4E4B7E47353D597"),b("0x27279C2725BB4E02"),b("0x4141194132588273"),b("0x8B8B168B2C9D0BA7"),b("0xA7A7A6A7510153F6"),b("0x7D7DE97DCF94FAB2"),b("0x95956E95DCFB3749"),b("0xD8D847D88E9FAD56"),b("0xFBFBCBFB8B30EB70"),b("0xEEEE9FEE2371C1CD"),b("0x7C7CED7CC791F8BB"),b("0x6666856617E3CC71"),b("0xDDDD53DDA68EA77B"),b("0x17175C17B84B2EAF"),b("0x4747014702468E45"),b("0x9E9E429E84DC211A"),b("0xCACA0FCA1EC589D4"),b("0x2D2DB42D75995A58"),b("0xBFBFC6BF9179632E"),b("0x07071C07381B0E3F"),b("0xADAD8EAD012347AC"),b("0x5A5A755AEA2FB4B0"),b("0x838336836CB51BEF"),b("0x3333CC3385FF66B6"),b("0x636391633FF2C65C"),b("0x02020802100A0412"),b("0xAAAA92AA39384993"),b("0x7171D971AFA8E2DE"),b("0xC8C807C80ECF8DC6"),b("0x19196419C87D32D1"),b("0x494939497270923B"),b("0xD9D943D9869AAF5F"),b("0xF2F2EFF2C31DF931"),b("0xE3E3ABE34B48DBA8"),b("0x5B5B715BE22AB6B9"),b("0x88881A8834920DBC"),b("0x9A9A529AA4C8293E"),b("0x262698262DBE4C0B"),b("0x3232C8328DFA64BF"),b("0xB0B0FAB0E94A7D59"),b("0xE9E983E91B6ACFF2"),b("0x0F0F3C0F78331E77"),b("0xD5D573D5E6A6B733"),b("0x80803A8074BA1DF4"),b("0xBEBEC2BE997C6127"),b("0xCDCD13CD26DE87EB"),b("0x3434D034BDE46889"),b("0x48483D487A759032"),b("0xFFFFDBFFAB24E354"),b("0x7A7AF57AF78FF48D"),b("0x90907A90F4EA3D64"),b("0x5F5F615FC23EBE9D"),b("0x202080201DA0403D"),b("0x6868BD6867D5D00F"),b("0x1A1A681AD07234CA"),b("0xAEAE82AE192C41B7"),b("0xB4B4EAB4C95E757D"),b("0x54544D549A19A8CE"),b("0x93937693ECE53B7F"),b("0x222288220DAA442F"),b("0x64648D6407E9C863"),b("0xF1F1E3F1DB12FF2A"),b("0x7373D173BFA2E6CC"),b("0x12124812905A2482"),b("0x40401D403A5D807A"),b("0x0808200840281048"),b("0xC3C32BC356E89B95"),b("0xECEC97EC337BC5DF"),b("0xDBDB4BDB9690AB4D"),b("0xA1A1BEA1611F5FC0"),b("0x8D8D0E8D1C830791"),b("0x3D3DF43DF5C97AC8"),b("0x97976697CCF1335B"),b("0x0000000000000000"),b("0xCFCF1BCF36D483F9"),b("0x2B2BAC2B4587566E"),b("0x7676C57697B3ECE1"),b("0x8282328264B019E6"),b("0xD6D67FD6FEA9B128"),b("0x1B1B6C1BD87736C3"),b("0xB5B5EEB5C15B7774"),b("0xAFAF86AF112943BE"),b("0x6A6AB56A77DFD41D"),b("0x50505D50BA0DA0EA"),b("0x45450945124C8A57"),b("0xF3F3EBF3CB18FB38"),b("0x3030C0309DF060AD"),b("0xEFEF9BEF2B74C3C4"),b("0x3F3FFC3FE5C37EDA"),b("0x55554955921CAAC7"),b("0xA2A2B2A2791059DB"),b("0xEAEA8FEA0365C9E9"),b("0x656589650FECCA6A"),b("0xBABAD2BAB9686903"),b("0x2F2FBC2F65935E4A"),b("0xC0C027C04EE79D8E"),b("0xDEDE5FDEBE81A160"),b("0x1C1C701CE06C38FC"),b("0xFDFDD3FDBB2EE746"),b("0x4D4D294D52649A1F"),b("0x92927292E4E03976"),b("0x7575C9758FBCEAFA"),b("0x06061806301E0C36"),b("0x8A8A128A249809AE"),b("0xB2B2F2B2F940794B"),b("0xE6E6BFE66359D185"),b("0x0E0E380E70361C7E"),b("0x1F1F7C1FF8633EE7"),b("0x6262956237F7C455"),b("0xD4D477D4EEA3B53A"),b("0xA8A89AA829324D81"),b("0x96966296C4F43152"),b("0xF9F9C3F99B3AEF62"),b("0xC5C533C566F697A3"),b("0x2525942535B14A10"),b("0x59597959F220B2AB"),b("0x84842A8454AE15D0"),b("0x7272D572B7A7E4C5"),b("0x3939E439D5DD72EC"),b("0x4C4C2D4C5A619816"),b("0x5E5E655ECA3BBC94"),b("0x7878FD78E785F09F"),b("0x3838E038DDD870E5"),b("0x8C8C0A8C14860598"),b("0xD1D163D1C6B2BF17"),b("0xA5A5AEA5410B57E4"),b("0xE2E2AFE2434DD9A1"),b("0x616199612FF8C24E"),b("0xB3B3F6B3F1457B42"),b("0x2121842115A54234"),b("0x9C9C4A9C94D62508"),b("0x1E1E781EF0663CEE"),b("0x4343114322528661"),b("0xC7C73BC776FC93B1"),b("0xFCFCD7FCB32BE54F"),b("0x0404100420140824"),b("0x51515951B208A2E3"),b("0x99995E99BCC72F25"),b("0x6D6DA96D4FC4DA22"),b("0x0D0D340D68391A65"),b("0xFAFACFFA8335E979"),b("0xDFDF5BDFB684A369"),b("0x7E7EE57ED79BFCA9"),b("0x242490243DB44819"),b("0x3B3BEC3BC5D776FE"),b("0xABAB96AB313D4B9A"),b("0xCECE1FCE3ED181F0"),b("0x1111441188552299"),b("0x8F8F068F0C890383"),b("0x4E4E254E4A6B9C04"),b("0xB7B7E6B7D1517366"),b("0xEBEB8BEB0B60CBE0"),b("0x3C3CF03CFDCC78C1"),b("0x81813E817CBF1FFD"),b("0x94946A94D4FE3540"),b("0xF7F7FBF7EB0CF31C"),b("0xB9B9DEB9A1676F18"),b("0x13134C13985F268B"),b("0x2C2CB02C7D9C5851"),b("0xD3D36BD3D6B8BB05"),b("0xE7E7BBE76B5CD38C"),b("0x6E6EA56E57CBDC39"),b("0xC4C437C46EF395AA"),b("0x03030C03180F061B"),b("0x565645568A13ACDC"),b("0x44440D441A49885E"),b("0x7F7FE17FDF9EFEA0"),b("0xA9A99EA921374F88"),b("0x2A2AA82A4D825467"),b("0xBBBBD6BBB16D6B0A"),b("0xC1C123C146E29F87"),b("0x53535153A202A6F1"),b("0xDCDC57DCAE8BA572"),b("0x0B0B2C0B58271653"),b("0x9D9D4E9D9CD32701"),b("0x6C6CAD6C47C1D82B"),b("0x3131C43195F562A4"),b("0x7474CD7487B9E8F3"),b("0xF6F6FFF6E309F115"),b("0x464605460A438C4C"),b("0xACAC8AAC092645A5"),b("0x89891E893C970FB5"),b("0x14145014A04428B4"),b("0xE1E1A3E15B42DFBA"),b("0x16165816B04E2CA6"),b("0x3A3AE83ACDD274F7"),b("0x6969B9696FD0D206"),b("0x09092409482D1241"),b("0x7070DD70A7ADE0D7"),b("0xB6B6E2B6D954716F"),b("0xD0D067D0CEB7BD1E"),b("0xEDED93ED3B7EC7D6"),b("0xCCCC17CC2EDB85E2"),b("0x424215422A578468"),b("0x98985A98B4C22D2C"),b("0xA4A4AAA4490E55ED"),b("0x2828A0285D885075"),b("0x5C5C6D5CDA31B886"),b("0xF8F8C7F8933FED6B"),b("0x8686228644A411C2")}local h={b("0xD818186018C07830"),b("0x2623238C2305AF46"),b("0xB8C6C63FC67EF991"),b("0xFBE8E887E8136FCD"),b("0xCB878726874CA113"),b("0x11B8B8DAB8A9626D"),b("0x0901010401080502"),b("0x0D4F4F214F426E9E"),b("0x9B3636D836ADEE6C"),b("0xFFA6A6A2A6590451"),b("0x0CD2D26FD2DEBDB9"),b("0x0EF5F5F3F5FB06F7"),b("0x967979F979EF80F2"),b("0x306F6FA16F5FCEDE"),b("0x6D91917E91FCEF3F"),b("0xF852525552AA07A4"),b("0x4760609D6027FDC0"),b("0x35BCBCCABC897665"),b("0x379B9B569BACCD2B"),b("0x8A8E8E028E048C01"),b("0xD2A3A3B6A371155B"),b("0x6C0C0C300C603C18"),b("0x847B7BF17BFF8AF6"),b("0x803535D435B5E16A"),b("0xF51D1D741DE8693A"),b("0xB3E0E0A7E05347DD"),b("0x21D7D77BD7F6ACB3"),b("0x9CC2C22FC25EED99"),b("0x432E2EB82E6D965C"),b("0x294B4B314B627A96"),b("0x5DFEFEDFFEA321E1"),b("0xD5575741578216AE"),b("0xBD15155415A8412A"),b("0xE87777C1779FB6EE"),b("0x923737DC37A5EB6E"),b("0x9EE5E5B3E57B56D7"),b("0x139F9F469F8CD923"),b("0x23F0F0E7F0D317FD"),b("0x204A4A354A6A7F94"),b("0x44DADA4FDA9E95A9"),b("0xA258587D58FA25B0"),b("0xCFC9C903C906CA8F"),b("0x7C2929A429558D52"),b("0x5A0A0A280A502214"),b("0x50B1B1FEB1E14F7F"),b("0xC9A0A0BAA0691A5D"),b("0x146B6BB16B7FDAD6"),b("0xD985852E855CAB17"),b("0x3CBDBDCEBD817367"),b("0x8F5D5D695DD234BA"),b("0x9010104010805020"),b("0x07F4F4F7F4F303F5"),b("0xDDCBCB0BCB16C08B"),b("0xD33E3EF83EEDC67C"),b("0x2D0505140528110A"),b("0x78676781671FE6CE"),b("0x97E4E4B7E47353D5"),b("0x0227279C2725BB4E"),b("0x7341411941325882"),b("0xA78B8B168B2C9D0B"),b("0xF6A7A7A6A7510153"),b("0xB27D7DE97DCF94FA"),b("0x4995956E95DCFB37"),b("0x56D8D847D88E9FAD"),b("0x70FBFBCBFB8B30EB"),b("0xCDEEEE9FEE2371C1"),b("0xBB7C7CED7CC791F8"),b("0x716666856617E3CC"),b("0x7BDDDD53DDA68EA7"),b("0xAF17175C17B84B2E"),b("0x454747014702468E"),b("0x1A9E9E429E84DC21"),b("0xD4CACA0FCA1EC589"),b("0x582D2DB42D75995A"),b("0x2EBFBFC6BF917963"),b("0x3F07071C07381B0E"),b("0xACADAD8EAD012347"),b("0xB05A5A755AEA2FB4"),b("0xEF838336836CB51B"),b("0xB63333CC3385FF66"),b("0x5C636391633FF2C6"),b("0x1202020802100A04"),b("0x93AAAA92AA393849"),b("0xDE7171D971AFA8E2"),b("0xC6C8C807C80ECF8D"),b("0xD119196419C87D32"),b("0x3B49493949727092"),b("0x5FD9D943D9869AAF"),b("0x31F2F2EFF2C31DF9"),b("0xA8E3E3ABE34B48DB"),b("0xB95B5B715BE22AB6"),b("0xBC88881A8834920D"),b("0x3E9A9A529AA4C829"),b("0x0B262698262DBE4C"),b("0xBF3232C8328DFA64"),b("0x59B0B0FAB0E94A7D"),b("0xF2E9E983E91B6ACF"),b("0x770F0F3C0F78331E"),b("0x33D5D573D5E6A6B7"),b("0xF480803A8074BA1D"),b("0x27BEBEC2BE997C61"),b("0xEBCDCD13CD26DE87"),b("0x893434D034BDE468"),b("0x3248483D487A7590"),b("0x54FFFFDBFFAB24E3"),b("0x8D7A7AF57AF78FF4"),b("0x6490907A90F4EA3D"),b("0x9D5F5F615FC23EBE"),b("0x3D202080201DA040"),b("0x0F6868BD6867D5D0"),b("0xCA1A1A681AD07234"),b("0xB7AEAE82AE192C41"),b("0x7DB4B4EAB4C95E75"),b("0xCE54544D549A19A8"),b("0x7F93937693ECE53B"),b("0x2F222288220DAA44"),b("0x6364648D6407E9C8"),b("0x2AF1F1E3F1DB12FF"),b("0xCC7373D173BFA2E6"),b("0x8212124812905A24"),b("0x7A40401D403A5D80"),b("0x4808082008402810"),b("0x95C3C32BC356E89B"),b("0xDFECEC97EC337BC5"),b("0x4DDBDB4BDB9690AB"),b("0xC0A1A1BEA1611F5F"),b("0x918D8D0E8D1C8307"),b("0xC83D3DF43DF5C97A"),b("0x5B97976697CCF133"),b("0x0000000000000000"),b("0xF9CFCF1BCF36D483"),b("0x6E2B2BAC2B458756"),b("0xE17676C57697B3EC"),b("0xE68282328264B019"),b("0x28D6D67FD6FEA9B1"),b("0xC31B1B6C1BD87736"),b("0x74B5B5EEB5C15B77"),b("0xBEAFAF86AF112943"),b("0x1D6A6AB56A77DFD4"),b("0xEA50505D50BA0DA0"),b("0x5745450945124C8A"),b("0x38F3F3EBF3CB18FB"),b("0xAD3030C0309DF060"),b("0xC4EFEF9BEF2B74C3"),b("0xDA3F3FFC3FE5C37E"),b("0xC755554955921CAA"),b("0xDBA2A2B2A2791059"),b("0xE9EAEA8FEA0365C9"),b("0x6A656589650FECCA"),b("0x03BABAD2BAB96869"),b("0x4A2F2FBC2F65935E"),b("0x8EC0C027C04EE79D"),b("0x60DEDE5FDEBE81A1"),b("0xFC1C1C701CE06C38"),b("0x46FDFDD3FDBB2EE7"),b("0x1F4D4D294D52649A"),b("0x7692927292E4E039"),b("0xFA7575C9758FBCEA"),b("0x3606061806301E0C"),b("0xAE8A8A128A249809"),b("0x4BB2B2F2B2F94079"),b("0x85E6E6BFE66359D1"),b("0x7E0E0E380E70361C"),b("0xE71F1F7C1FF8633E"),b("0x556262956237F7C4"),b("0x3AD4D477D4EEA3B5"),b("0x81A8A89AA829324D"),b("0x5296966296C4F431"),b("0x62F9F9C3F99B3AEF"),b("0xA3C5C533C566F697"),b("0x102525942535B14A"),b("0xAB59597959F220B2"),b("0xD084842A8454AE15"),b("0xC57272D572B7A7E4"),b("0xEC3939E439D5DD72"),b("0x164C4C2D4C5A6198"),b("0x945E5E655ECA3BBC"),b("0x9F7878FD78E785F0"),b("0xE53838E038DDD870"),b("0x988C8C0A8C148605"),b("0x17D1D163D1C6B2BF"),b("0xE4A5A5AEA5410B57"),b("0xA1E2E2AFE2434DD9"),b("0x4E616199612FF8C2"),b("0x42B3B3F6B3F1457B"),b("0x342121842115A542"),b("0x089C9C4A9C94D625"),b("0xEE1E1E781EF0663C"),b("0x6143431143225286"),b("0xB1C7C73BC776FC93"),b("0x4FFCFCD7FCB32BE5"),b("0x2404041004201408"),b("0xE351515951B208A2"),b("0x2599995E99BCC72F"),b("0x226D6DA96D4FC4DA"),b("0x650D0D340D68391A"),b("0x79FAFACFFA8335E9"),b("0x69DFDF5BDFB684A3"),b("0xA97E7EE57ED79BFC"),b("0x19242490243DB448"),b("0xFE3B3BEC3BC5D776"),b("0x9AABAB96AB313D4B"),b("0xF0CECE1FCE3ED181"),b("0x9911114411885522"),b("0x838F8F068F0C8903"),b("0x044E4E254E4A6B9C"),b("0x66B7B7E6B7D15173"),b("0xE0EBEB8BEB0B60CB"),b("0xC13C3CF03CFDCC78"),b("0xFD81813E817CBF1F"),b("0x4094946A94D4FE35"),b("0x1CF7F7FBF7EB0CF3"),b("0x18B9B9DEB9A1676F"),b("0x8B13134C13985F26"),b("0x512C2CB02C7D9C58"),b("0x05D3D36BD3D6B8BB"),b("0x8CE7E7BBE76B5CD3"),b("0x396E6EA56E57CBDC"),b("0xAAC4C437C46EF395"),b("0x1B03030C03180F06"),b("0xDC565645568A13AC"),b("0x5E44440D441A4988"),b("0xA07F7FE17FDF9EFE"),b("0x88A9A99EA921374F"),b("0x672A2AA82A4D8254"),b("0x0ABBBBD6BBB16D6B"),b("0x87C1C123C146E29F"),b("0xF153535153A202A6"),b("0x72DCDC57DCAE8BA5"),b("0x530B0B2C0B582716"),b("0x019D9D4E9D9CD327"),b("0x2B6C6CAD6C47C1D8"),b("0xA43131C43195F562"),b("0xF37474CD7487B9E8"),b("0x15F6F6FFF6E309F1"),b("0x4C464605460A438C"),b("0xA5ACAC8AAC092645"),b("0xB589891E893C970F"),b("0xB414145014A04428"),b("0xBAE1E1A3E15B42DF"),b("0xA616165816B04E2C"),b("0xF73A3AE83ACDD274"),b("0x066969B9696FD0D2"),b("0x4109092409482D12"),b("0xD77070DD70A7ADE0"),b("0x6FB6B6E2B6D95471"),b("0x1ED0D067D0CEB7BD"),b("0xD6EDED93ED3B7EC7"),b("0xE2CCCC17CC2EDB85"),b("0x68424215422A5784"),b("0x2C98985A98B4C22D"),b("0xEDA4A4AAA4490E55"),b("0x752828A0285D8850"),b("0x865C5C6D5CDA31B8"),b("0x6BF8F8C7F8933FED"),b("0xC28686228644A411")}local i={b("0x30D818186018C078"),b("0x462623238C2305AF"),b("0x91B8C6C63FC67EF9"),b("0xCDFBE8E887E8136F"),b("0x13CB878726874CA1"),b("0x6D11B8B8DAB8A962"),b("0x0209010104010805"),b("0x9E0D4F4F214F426E"),b("0x6C9B3636D836ADEE"),b("0x51FFA6A6A2A65904"),b("0xB90CD2D26FD2DEBD"),b("0xF70EF5F5F3F5FB06"),b("0xF2967979F979EF80"),b("0xDE306F6FA16F5FCE"),b("0x3F6D91917E91FCEF"),b("0xA4F852525552AA07"),b("0xC04760609D6027FD"),b("0x6535BCBCCABC8976"),b("0x2B379B9B569BACCD"),b("0x018A8E8E028E048C"),b("0x5BD2A3A3B6A37115"),b("0x186C0C0C300C603C"),b("0xF6847B7BF17BFF8A"),b("0x6A803535D435B5E1"),b("0x3AF51D1D741DE869"),b("0xDDB3E0E0A7E05347"),b("0xB321D7D77BD7F6AC"),b("0x999CC2C22FC25EED"),b("0x5C432E2EB82E6D96"),b("0x96294B4B314B627A"),b("0xE15DFEFEDFFEA321"),b("0xAED5575741578216"),b("0x2ABD15155415A841"),b("0xEEE87777C1779FB6"),b("0x6E923737DC37A5EB"),b("0xD79EE5E5B3E57B56"),b("0x23139F9F469F8CD9"),b("0xFD23F0F0E7F0D317"),b("0x94204A4A354A6A7F"),b("0xA944DADA4FDA9E95"),b("0xB0A258587D58FA25"),b("0x8FCFC9C903C906CA"),b("0x527C2929A429558D"),b("0x145A0A0A280A5022"),b("0x7F50B1B1FEB1E14F"),b("0x5DC9A0A0BAA0691A"),b("0xD6146B6BB16B7FDA"),b("0x17D985852E855CAB"),b("0x673CBDBDCEBD8173"),b("0xBA8F5D5D695DD234"),b("0x2090101040108050"),b("0xF507F4F4F7F4F303"),b("0x8BDDCBCB0BCB16C0"),b("0x7CD33E3EF83EEDC6"),b("0x0A2D050514052811"),b("0xCE78676781671FE6"),b("0xD597E4E4B7E47353"),b("0x4E0227279C2725BB"),b("0x8273414119413258"),b("0x0BA78B8B168B2C9D"),b("0x53F6A7A7A6A75101"),b("0xFAB27D7DE97DCF94"),b("0x374995956E95DCFB"),b("0xAD56D8D847D88E9F"),b("0xEB70FBFBCBFB8B30"),b("0xC1CDEEEE9FEE2371"),b("0xF8BB7C7CED7CC791"),b("0xCC716666856617E3"),b("0xA77BDDDD53DDA68E"),b("0x2EAF17175C17B84B"),b("0x8E45474701470246"),b("0x211A9E9E429E84DC"),b("0x89D4CACA0FCA1EC5"),b("0x5A582D2DB42D7599"),b("0x632EBFBFC6BF9179"),b("0x0E3F07071C07381B"),b("0x47ACADAD8EAD0123"),b("0xB4B05A5A755AEA2F"),b("0x1BEF838336836CB5"),b("0x66B63333CC3385FF"),b("0xC65C636391633FF2"),b("0x041202020802100A"),b("0x4993AAAA92AA3938"),b("0xE2DE7171D971AFA8"),b("0x8DC6C8C807C80ECF"),b("0x32D119196419C87D"),b("0x923B494939497270"),b("0xAF5FD9D943D9869A"),b("0xF931F2F2EFF2C31D"),b("0xDBA8E3E3ABE34B48"),b("0xB6B95B5B715BE22A"),b("0x0DBC88881A883492"),b("0x293E9A9A529AA4C8"),b("0x4C0B262698262DBE"),b("0x64BF3232C8328DFA"),b("0x7D59B0B0FAB0E94A"),b("0xCFF2E9E983E91B6A"),b("0x1E770F0F3C0F7833"),b("0xB733D5D573D5E6A6"),b("0x1DF480803A8074BA"),b("0x6127BEBEC2BE997C"),b("0x87EBCDCD13CD26DE"),b("0x68893434D034BDE4"),b("0x903248483D487A75"),b("0xE354FFFFDBFFAB24"),b("0xF48D7A7AF57AF78F"),b("0x3D6490907A90F4EA"),b("0xBE9D5F5F615FC23E"),b("0x403D202080201DA0"),b("0xD00F6868BD6867D5"),b("0x34CA1A1A681AD072"),b("0x41B7AEAE82AE192C"),b("0x757DB4B4EAB4C95E"),b("0xA8CE54544D549A19"),b("0x3B7F93937693ECE5"),b("0x442F222288220DAA"),b("0xC86364648D6407E9"),b("0xFF2AF1F1E3F1DB12"),b("0xE6CC7373D173BFA2"),b("0x248212124812905A"),b("0x807A40401D403A5D"),b("0x1048080820084028"),b("0x9B95C3C32BC356E8"),b("0xC5DFECEC97EC337B"),b("0xAB4DDBDB4BDB9690"),b("0x5FC0A1A1BEA1611F"),b("0x07918D8D0E8D1C83"),b("0x7AC83D3DF43DF5C9"),b("0x335B97976697CCF1"),b("0x0000000000000000"),b("0x83F9CFCF1BCF36D4"),b("0x566E2B2BAC2B4587"),b("0xECE17676C57697B3"),b("0x19E68282328264B0"),b("0xB128D6D67FD6FEA9"),b("0x36C31B1B6C1BD877"),b("0x7774B5B5EEB5C15B"),b("0x43BEAFAF86AF1129"),b("0xD41D6A6AB56A77DF"),b("0xA0EA50505D50BA0D"),b("0x8A5745450945124C"),b("0xFB38F3F3EBF3CB18"),b("0x60AD3030C0309DF0"),b("0xC3C4EFEF9BEF2B74"),b("0x7EDA3F3FFC3FE5C3"),b("0xAAC755554955921C"),b("0x59DBA2A2B2A27910"),b("0xC9E9EAEA8FEA0365"),b("0xCA6A656589650FEC"),b("0x6903BABAD2BAB968"),b("0x5E4A2F2FBC2F6593"),b("0x9D8EC0C027C04EE7"),b("0xA160DEDE5FDEBE81"),b("0x38FC1C1C701CE06C"),b("0xE746FDFDD3FDBB2E"),b("0x9A1F4D4D294D5264"),b("0x397692927292E4E0"),b("0xEAFA7575C9758FBC"),b("0x0C3606061806301E"),b("0x09AE8A8A128A2498"),b("0x794BB2B2F2B2F940"),b("0xD185E6E6BFE66359"),b("0x1C7E0E0E380E7036"),b("0x3EE71F1F7C1FF863"),b("0xC4556262956237F7"),b("0xB53AD4D477D4EEA3"),b("0x4D81A8A89AA82932"),b("0x315296966296C4F4"),b("0xEF62F9F9C3F99B3A"),b("0x97A3C5C533C566F6"),b("0x4A102525942535B1"),b("0xB2AB59597959F220"),b("0x15D084842A8454AE"),b("0xE4C57272D572B7A7"),b("0x72EC3939E439D5DD"),b("0x98164C4C2D4C5A61"),b("0xBC945E5E655ECA3B"),b("0xF09F7878FD78E785"),b("0x70E53838E038DDD8"),b("0x05988C8C0A8C1486"),b("0xBF17D1D163D1C6B2"),b("0x57E4A5A5AEA5410B"),b("0xD9A1E2E2AFE2434D"),b("0xC24E616199612FF8"),b("0x7B42B3B3F6B3F145"),b("0x42342121842115A5"),b("0x25089C9C4A9C94D6"),b("0x3CEE1E1E781EF066"),b("0x8661434311432252"),b("0x93B1C7C73BC776FC"),b("0xE54FFCFCD7FCB32B"),b("0x0824040410042014"),b("0xA2E351515951B208"),b("0x2F2599995E99BCC7"),b("0xDA226D6DA96D4FC4"),b("0x1A650D0D340D6839"),b("0xE979FAFACFFA8335"),b("0xA369DFDF5BDFB684"),b("0xFCA97E7EE57ED79B"),b("0x4819242490243DB4"),b("0x76FE3B3BEC3BC5D7"),b("0x4B9AABAB96AB313D"),b("0x81F0CECE1FCE3ED1"),b("0x2299111144118855"),b("0x03838F8F068F0C89"),b("0x9C044E4E254E4A6B"),b("0x7366B7B7E6B7D151"),b("0xCBE0EBEB8BEB0B60"),b("0x78C13C3CF03CFDCC"),b("0x1FFD81813E817CBF"),b("0x354094946A94D4FE"),b("0xF31CF7F7FBF7EB0C"),b("0x6F18B9B9DEB9A167"),b("0x268B13134C13985F"),b("0x58512C2CB02C7D9C"),b("0xBB05D3D36BD3D6B8"),b("0xD38CE7E7BBE76B5C"),b("0xDC396E6EA56E57CB"),b("0x95AAC4C437C46EF3"),b("0x061B03030C03180F"),b("0xACDC565645568A13"),b("0x885E44440D441A49"),b("0xFEA07F7FE17FDF9E"),b("0x4F88A9A99EA92137"),b("0x54672A2AA82A4D82"),b("0x6B0ABBBBD6BBB16D"),b("0x9F87C1C123C146E2"),b("0xA6F153535153A202"),b("0xA572DCDC57DCAE8B"),b("0x16530B0B2C0B5827"),b("0x27019D9D4E9D9CD3"),b("0xD82B6C6CAD6C47C1"),b("0x62A43131C43195F5"),b("0xE8F37474CD7487B9"),b("0xF115F6F6FFF6E309"),b("0x8C4C464605460A43"),b("0x45A5ACAC8AAC0926"),b("0x0FB589891E893C97"),b("0x28B414145014A044"),b("0xDFBAE1E1A3E15B42"),b("0x2CA616165816B04E"),b("0x74F73A3AE83ACDD2"),b("0xD2066969B9696FD0"),b("0x124109092409482D"),b("0xE0D77070DD70A7AD"),b("0x716FB6B6E2B6D954"),b("0xBD1ED0D067D0CEB7"),b("0xC7D6EDED93ED3B7E"),b("0x85E2CCCC17CC2EDB"),b("0x8468424215422A57"),b("0x2D2C98985A98B4C2"),b("0x55EDA4A4AAA4490E"),b("0x50752828A0285D88"),b("0xB8865C5C6D5CDA31"),b("0xED6BF8F8C7F8933F"),b("0x11C28686228644A4")}local j={b("0x7830D818186018C0"),b("0xAF462623238C2305"),b("0xF991B8C6C63FC67E"),b("0x6FCDFBE8E887E813"),b("0xA113CB878726874C"),b("0x626D11B8B8DAB8A9"),b("0x0502090101040108"),b("0x6E9E0D4F4F214F42"),b("0xEE6C9B3636D836AD"),b("0x0451FFA6A6A2A659"),b("0xBDB90CD2D26FD2DE"),b("0x06F70EF5F5F3F5FB"),b("0x80F2967979F979EF"),b("0xCEDE306F6FA16F5F"),b("0xEF3F6D91917E91FC"),b("0x07A4F852525552AA"),b("0xFDC04760609D6027"),b("0x766535BCBCCABC89"),b("0xCD2B379B9B569BAC"),b("0x8C018A8E8E028E04"),b("0x155BD2A3A3B6A371"),b("0x3C186C0C0C300C60"),b("0x8AF6847B7BF17BFF"),b("0xE16A803535D435B5"),b("0x693AF51D1D741DE8"),b("0x47DDB3E0E0A7E053"),b("0xACB321D7D77BD7F6"),b("0xED999CC2C22FC25E"),b("0x965C432E2EB82E6D"),b("0x7A96294B4B314B62"),b("0x21E15DFEFEDFFEA3"),b("0x16AED55757415782"),b("0x412ABD15155415A8"),b("0xB6EEE87777C1779F"),b("0xEB6E923737DC37A5"),b("0x56D79EE5E5B3E57B"),b("0xD923139F9F469F8C"),b("0x17FD23F0F0E7F0D3"),b("0x7F94204A4A354A6A"),b("0x95A944DADA4FDA9E"),b("0x25B0A258587D58FA"),b("0xCA8FCFC9C903C906"),b("0x8D527C2929A42955"),b("0x22145A0A0A280A50"),b("0x4F7F50B1B1FEB1E1"),b("0x1A5DC9A0A0BAA069"),b("0xDAD6146B6BB16B7F"),b("0xAB17D985852E855C"),b("0x73673CBDBDCEBD81"),b("0x34BA8F5D5D695DD2"),b("0x5020901010401080"),b("0x03F507F4F4F7F4F3"),b("0xC08BDDCBCB0BCB16"),b("0xC67CD33E3EF83EED"),b("0x110A2D0505140528"),b("0xE6CE78676781671F"),b("0x53D597E4E4B7E473"),b("0xBB4E0227279C2725"),b("0x5882734141194132"),b("0x9D0BA78B8B168B2C"),b("0x0153F6A7A7A6A751"),b("0x94FAB27D7DE97DCF"),b("0xFB374995956E95DC"),b("0x9FAD56D8D847D88E"),b("0x30EB70FBFBCBFB8B"),b("0x71C1CDEEEE9FEE23"),b("0x91F8BB7C7CED7CC7"),b("0xE3CC716666856617"),b("0x8EA77BDDDD53DDA6"),b("0x4B2EAF17175C17B8"),b("0x468E454747014702"),b("0xDC211A9E9E429E84"),b("0xC589D4CACA0FCA1E"),b("0x995A582D2DB42D75"),b("0x79632EBFBFC6BF91"),b("0x1B0E3F07071C0738"),b("0x2347ACADAD8EAD01"),b("0x2FB4B05A5A755AEA"),b("0xB51BEF838336836C"),b("0xFF66B63333CC3385"),b("0xF2C65C636391633F"),b("0x0A04120202080210"),b("0x384993AAAA92AA39"),b("0xA8E2DE7171D971AF"),b("0xCF8DC6C8C807C80E"),b("0x7D32D119196419C8"),b("0x70923B4949394972"),b("0x9AAF5FD9D943D986"),b("0x1DF931F2F2EFF2C3"),b("0x48DBA8E3E3ABE34B"),b("0x2AB6B95B5B715BE2"),b("0x920DBC88881A8834"),b("0xC8293E9A9A529AA4"),b("0xBE4C0B262698262D"),b("0xFA64BF3232C8328D"),b("0x4A7D59B0B0FAB0E9"),b("0x6ACFF2E9E983E91B"),b("0x331E770F0F3C0F78"),b("0xA6B733D5D573D5E6"),b("0xBA1DF480803A8074"),b("0x7C6127BEBEC2BE99"),b("0xDE87EBCDCD13CD26"),b("0xE468893434D034BD"),b("0x75903248483D487A"),b("0x24E354FFFFDBFFAB"),b("0x8FF48D7A7AF57AF7"),b("0xEA3D6490907A90F4"),b("0x3EBE9D5F5F615FC2"),b("0xA0403D202080201D"),b("0xD5D00F6868BD6867"),b("0x7234CA1A1A681AD0"),b("0x2C41B7AEAE82AE19"),b("0x5E757DB4B4EAB4C9"),b("0x19A8CE54544D549A"),b("0xE53B7F93937693EC"),b("0xAA442F222288220D"),b("0xE9C86364648D6407"),b("0x12FF2AF1F1E3F1DB"),b("0xA2E6CC7373D173BF"),b("0x5A24821212481290"),b("0x5D807A40401D403A"),b("0x2810480808200840"),b("0xE89B95C3C32BC356"),b("0x7BC5DFECEC97EC33"),b("0x90AB4DDBDB4BDB96"),b("0x1F5FC0A1A1BEA161"),b("0x8307918D8D0E8D1C"),b("0xC97AC83D3DF43DF5"),b("0xF1335B97976697CC"),b("0x0000000000000000"),b("0xD483F9CFCF1BCF36"),b("0x87566E2B2BAC2B45"),b("0xB3ECE17676C57697"),b("0xB019E68282328264"),b("0xA9B128D6D67FD6FE"),b("0x7736C31B1B6C1BD8"),b("0x5B7774B5B5EEB5C1"),b("0x2943BEAFAF86AF11"),b("0xDFD41D6A6AB56A77"),b("0x0DA0EA50505D50BA"),b("0x4C8A574545094512"),b("0x18FB38F3F3EBF3CB"),b("0xF060AD3030C0309D"),b("0x74C3C4EFEF9BEF2B"),b("0xC37EDA3F3FFC3FE5"),b("0x1CAAC75555495592"),b("0x1059DBA2A2B2A279"),b("0x65C9E9EAEA8FEA03"),b("0xECCA6A656589650F"),b("0x686903BABAD2BAB9"),b("0x935E4A2F2FBC2F65"),b("0xE79D8EC0C027C04E"),b("0x81A160DEDE5FDEBE"),b("0x6C38FC1C1C701CE0"),b("0x2EE746FDFDD3FDBB"),b("0x649A1F4D4D294D52"),b("0xE0397692927292E4"),b("0xBCEAFA7575C9758F"),b("0x1E0C360606180630"),b("0x9809AE8A8A128A24"),b("0x40794BB2B2F2B2F9"),b("0x59D185E6E6BFE663"),b("0x361C7E0E0E380E70"),b("0x633EE71F1F7C1FF8"),b("0xF7C4556262956237"),b("0xA3B53AD4D477D4EE"),b("0x324D81A8A89AA829"),b("0xF4315296966296C4"),b("0x3AEF62F9F9C3F99B"),b("0xF697A3C5C533C566"),b("0xB14A102525942535"),b("0x20B2AB59597959F2"),b("0xAE15D084842A8454"),b("0xA7E4C57272D572B7"),b("0xDD72EC3939E439D5"),b("0x6198164C4C2D4C5A"),b("0x3BBC945E5E655ECA"),b("0x85F09F7878FD78E7"),b("0xD870E53838E038DD"),b("0x8605988C8C0A8C14"),b("0xB2BF17D1D163D1C6"),b("0x0B57E4A5A5AEA541"),b("0x4DD9A1E2E2AFE243"),b("0xF8C24E616199612F"),b("0x457B42B3B3F6B3F1"),b("0xA542342121842115"),b("0xD625089C9C4A9C94"),b("0x663CEE1E1E781EF0"),b("0x5286614343114322"),b("0xFC93B1C7C73BC776"),b("0x2BE54FFCFCD7FCB3"),b("0x1408240404100420"),b("0x08A2E351515951B2"),b("0xC72F2599995E99BC"),b("0xC4DA226D6DA96D4F"),b("0x391A650D0D340D68"),b("0x35E979FAFACFFA83"),b("0x84A369DFDF5BDFB6"),b("0x9BFCA97E7EE57ED7"),b("0xB44819242490243D"),b("0xD776FE3B3BEC3BC5"),b("0x3D4B9AABAB96AB31"),b("0xD181F0CECE1FCE3E"),b("0x5522991111441188"),b("0x8903838F8F068F0C"),b("0x6B9C044E4E254E4A"),b("0x517366B7B7E6B7D1"),b("0x60CBE0EBEB8BEB0B"),b("0xCC78C13C3CF03CFD"),b("0xBF1FFD81813E817C"),b("0xFE354094946A94D4"),b("0x0CF31CF7F7FBF7EB"),b("0x676F18B9B9DEB9A1"),b("0x5F268B13134C1398"),b("0x9C58512C2CB02C7D"),b("0xB8BB05D3D36BD3D6"),b("0x5CD38CE7E7BBE76B"),b("0xCBDC396E6EA56E57"),b("0xF395AAC4C437C46E"),b("0x0F061B03030C0318"),b("0x13ACDC565645568A"),b("0x49885E44440D441A"),b("0x9EFEA07F7FE17FDF"),b("0x374F88A9A99EA921"),b("0x8254672A2AA82A4D"),b("0x6D6B0ABBBBD6BBB1"),b("0xE29F87C1C123C146"),b("0x02A6F153535153A2"),b("0x8BA572DCDC57DCAE"),b("0x2716530B0B2C0B58"),b("0xD327019D9D4E9D9C"),b("0xC1D82B6C6CAD6C47"),b("0xF562A43131C43195"),b("0xB9E8F37474CD7487"),b("0x09F115F6F6FFF6E3"),b("0x438C4C464605460A"),b("0x2645A5ACAC8AAC09"),b("0x970FB589891E893C"),b("0x4428B414145014A0"),b("0x42DFBAE1E1A3E15B"),b("0x4E2CA616165816B0"),b("0xD274F73A3AE83ACD"),b("0xD0D2066969B9696F"),b("0x2D12410909240948"),b("0xADE0D77070DD70A7"),b("0x54716FB6B6E2B6D9"),b("0xB7BD1ED0D067D0CE"),b("0x7EC7D6EDED93ED3B"),b("0xDB85E2CCCC17CC2E"),b("0x578468424215422A"),b("0xC22D2C98985A98B4"),b("0x0E55EDA4A4AAA449"),b("0x8850752828A0285D"),b("0x31B8865C5C6D5CDA"),b("0x3FED6BF8F8C7F893"),b("0xA411C28686228644")}local k={b("0xC07830D818186018"),b("0x05AF462623238C23"),b("0x7EF991B8C6C63FC6"),b("0x136FCDFBE8E887E8"),b("0x4CA113CB87872687"),b("0xA9626D11B8B8DAB8"),b("0x0805020901010401"),b("0x426E9E0D4F4F214F"),b("0xADEE6C9B3636D836"),b("0x590451FFA6A6A2A6"),b("0xDEBDB90CD2D26FD2"),b("0xFB06F70EF5F5F3F5"),b("0xEF80F2967979F979"),b("0x5FCEDE306F6FA16F"),b("0xFCEF3F6D91917E91"),b("0xAA07A4F852525552"),b("0x27FDC04760609D60"),b("0x89766535BCBCCABC"),b("0xACCD2B379B9B569B"),b("0x048C018A8E8E028E"),b("0x71155BD2A3A3B6A3"),b("0x603C186C0C0C300C"),b("0xFF8AF6847B7BF17B"),b("0xB5E16A803535D435"),b("0xE8693AF51D1D741D"),b("0x5347DDB3E0E0A7E0"),b("0xF6ACB321D7D77BD7"),b("0x5EED999CC2C22FC2"),b("0x6D965C432E2EB82E"),b("0x627A96294B4B314B"),b("0xA321E15DFEFEDFFE"),b("0x8216AED557574157"),b("0xA8412ABD15155415"),b("0x9FB6EEE87777C177"),b("0xA5EB6E923737DC37"),b("0x7B56D79EE5E5B3E5"),b("0x8CD923139F9F469F"),b("0xD317FD23F0F0E7F0"),b("0x6A7F94204A4A354A"),b("0x9E95A944DADA4FDA"),b("0xFA25B0A258587D58"),b("0x06CA8FCFC9C903C9"),b("0x558D527C2929A429"),b("0x5022145A0A0A280A"),b("0xE14F7F50B1B1FEB1"),b("0x691A5DC9A0A0BAA0"),b("0x7FDAD6146B6BB16B"),b("0x5CAB17D985852E85"),b("0x8173673CBDBDCEBD"),b("0xD234BA8F5D5D695D"),b("0x8050209010104010"),b("0xF303F507F4F4F7F4"),b("0x16C08BDDCBCB0BCB"),b("0xEDC67CD33E3EF83E"),b("0x28110A2D05051405"),b("0x1FE6CE7867678167"),b("0x7353D597E4E4B7E4"),b("0x25BB4E0227279C27"),b("0x3258827341411941"),b("0x2C9D0BA78B8B168B"),b("0x510153F6A7A7A6A7"),b("0xCF94FAB27D7DE97D"),b("0xDCFB374995956E95"),b("0x8E9FAD56D8D847D8"),b("0x8B30EB70FBFBCBFB"),b("0x2371C1CDEEEE9FEE"),b("0xC791F8BB7C7CED7C"),b("0x17E3CC7166668566"),b("0xA68EA77BDDDD53DD"),b("0xB84B2EAF17175C17"),b("0x02468E4547470147"),b("0x84DC211A9E9E429E"),b("0x1EC589D4CACA0FCA"),b("0x75995A582D2DB42D"),b("0x9179632EBFBFC6BF"),b("0x381B0E3F07071C07"),b("0x012347ACADAD8EAD"),b("0xEA2FB4B05A5A755A"),b("0x6CB51BEF83833683"),b("0x85FF66B63333CC33"),b("0x3FF2C65C63639163"),b("0x100A041202020802"),b("0x39384993AAAA92AA"),b("0xAFA8E2DE7171D971"),b("0x0ECF8DC6C8C807C8"),b("0xC87D32D119196419"),b("0x7270923B49493949"),b("0x869AAF5FD9D943D9"),b("0xC31DF931F2F2EFF2"),b("0x4B48DBA8E3E3ABE3"),b("0xE22AB6B95B5B715B"),b("0x34920DBC88881A88"),b("0xA4C8293E9A9A529A"),b("0x2DBE4C0B26269826"),b("0x8DFA64BF3232C832"),b("0xE94A7D59B0B0FAB0"),b("0x1B6ACFF2E9E983E9"),b("0x78331E770F0F3C0F"),b("0xE6A6B733D5D573D5"),b("0x74BA1DF480803A80"),b("0x997C6127BEBEC2BE"),b("0x26DE87EBCDCD13CD"),b("0xBDE468893434D034"),b("0x7A75903248483D48"),b("0xAB24E354FFFFDBFF"),b("0xF78FF48D7A7AF57A"),b("0xF4EA3D6490907A90"),b("0xC23EBE9D5F5F615F"),b("0x1DA0403D20208020"),b("0x67D5D00F6868BD68"),b("0xD07234CA1A1A681A"),b("0x192C41B7AEAE82AE"),b("0xC95E757DB4B4EAB4"),b("0x9A19A8CE54544D54"),b("0xECE53B7F93937693"),b("0x0DAA442F22228822"),b("0x07E9C86364648D64"),b("0xDB12FF2AF1F1E3F1"),b("0xBFA2E6CC7373D173"),b("0x905A248212124812"),b("0x3A5D807A40401D40"),b("0x4028104808082008"),b("0x56E89B95C3C32BC3"),b("0x337BC5DFECEC97EC"),b("0x9690AB4DDBDB4BDB"),b("0x611F5FC0A1A1BEA1"),b("0x1C8307918D8D0E8D"),b("0xF5C97AC83D3DF43D"),b("0xCCF1335B97976697"),b("0x0000000000000000"),b("0x36D483F9CFCF1BCF"),b("0x4587566E2B2BAC2B"),b("0x97B3ECE17676C576"),b("0x64B019E682823282"),b("0xFEA9B128D6D67FD6"),b("0xD87736C31B1B6C1B"),b("0xC15B7774B5B5EEB5"),b("0x112943BEAFAF86AF"),b("0x77DFD41D6A6AB56A"),b("0xBA0DA0EA50505D50"),b("0x124C8A5745450945"),b("0xCB18FB38F3F3EBF3"),b("0x9DF060AD3030C030"),b("0x2B74C3C4EFEF9BEF"),b("0xE5C37EDA3F3FFC3F"),b("0x921CAAC755554955"),b("0x791059DBA2A2B2A2"),b("0x0365C9E9EAEA8FEA"),b("0x0FECCA6A65658965"),b("0xB9686903BABAD2BA"),b("0x65935E4A2F2FBC2F"),b("0x4EE79D8EC0C027C0"),b("0xBE81A160DEDE5FDE"),b("0xE06C38FC1C1C701C"),b("0xBB2EE746FDFDD3FD"),b("0x52649A1F4D4D294D"),b("0xE4E0397692927292"),b("0x8FBCEAFA7575C975"),b("0x301E0C3606061806"),b("0x249809AE8A8A128A"),b("0xF940794BB2B2F2B2"),b("0x6359D185E6E6BFE6"),b("0x70361C7E0E0E380E"),b("0xF8633EE71F1F7C1F"),b("0x37F7C45562629562"),b("0xEEA3B53AD4D477D4"),b("0x29324D81A8A89AA8"),b("0xC4F4315296966296"),b("0x9B3AEF62F9F9C3F9"),b("0x66F697A3C5C533C5"),b("0x35B14A1025259425"),b("0xF220B2AB59597959"),b("0x54AE15D084842A84"),b("0xB7A7E4C57272D572"),b("0xD5DD72EC3939E439"),b("0x5A6198164C4C2D4C"),b("0xCA3BBC945E5E655E"),b("0xE785F09F7878FD78"),b("0xDDD870E53838E038"),b("0x148605988C8C0A8C"),b("0xC6B2BF17D1D163D1"),b("0x410B57E4A5A5AEA5"),b("0x434DD9A1E2E2AFE2"),b("0x2FF8C24E61619961"),b("0xF1457B42B3B3F6B3"),b("0x15A5423421218421"),b("0x94D625089C9C4A9C"),b("0xF0663CEE1E1E781E"),b("0x2252866143431143"),b("0x76FC93B1C7C73BC7"),b("0xB32BE54FFCFCD7FC"),b("0x2014082404041004"),b("0xB208A2E351515951"),b("0xBCC72F2599995E99"),b("0x4FC4DA226D6DA96D"),b("0x68391A650D0D340D"),b("0x8335E979FAFACFFA"),b("0xB684A369DFDF5BDF"),b("0xD79BFCA97E7EE57E"),b("0x3DB4481924249024"),b("0xC5D776FE3B3BEC3B"),b("0x313D4B9AABAB96AB"),b("0x3ED181F0CECE1FCE"),b("0x8855229911114411"),b("0x0C8903838F8F068F"),b("0x4A6B9C044E4E254E"),b("0xD1517366B7B7E6B7"),b("0x0B60CBE0EBEB8BEB"),b("0xFDCC78C13C3CF03C"),b("0x7CBF1FFD81813E81"),b("0xD4FE354094946A94"),b("0xEB0CF31CF7F7FBF7"),b("0xA1676F18B9B9DEB9"),b("0x985F268B13134C13"),b("0x7D9C58512C2CB02C"),b("0xD6B8BB05D3D36BD3"),b("0x6B5CD38CE7E7BBE7"),b("0x57CBDC396E6EA56E"),b("0x6EF395AAC4C437C4"),b("0x180F061B03030C03"),b("0x8A13ACDC56564556"),b("0x1A49885E44440D44"),b("0xDF9EFEA07F7FE17F"),b("0x21374F88A9A99EA9"),b("0x4D8254672A2AA82A"),b("0xB16D6B0ABBBBD6BB"),b("0x46E29F87C1C123C1"),b("0xA202A6F153535153"),b("0xAE8BA572DCDC57DC"),b("0x582716530B0B2C0B"),b("0x9CD327019D9D4E9D"),b("0x47C1D82B6C6CAD6C"),b("0x95F562A43131C431"),b("0x87B9E8F37474CD74"),b("0xE309F115F6F6FFF6"),b("0x0A438C4C46460546"),b("0x092645A5ACAC8AAC"),b("0x3C970FB589891E89"),b("0xA04428B414145014"),b("0x5B42DFBAE1E1A3E1"),b("0xB04E2CA616165816"),b("0xCDD274F73A3AE83A"),b("0x6FD0D2066969B969"),b("0x482D124109092409"),b("0xA7ADE0D77070DD70"),b("0xD954716FB6B6E2B6"),b("0xCEB7BD1ED0D067D0"),b("0x3B7EC7D6EDED93ED"),b("0x2EDB85E2CCCC17CC"),b("0x2A57846842421542"),b("0xB4C22D2C98985A98"),b("0x490E55EDA4A4AAA4"),b("0x5D8850752828A028"),b("0xDA31B8865C5C6D5C"),b("0x933FED6BF8F8C7F8"),b("0x44A411C286862286")}local l={b("0x18C07830D8181860"),b("0x2305AF462623238C"),b("0xC67EF991B8C6C63F"),b("0xE8136FCDFBE8E887"),b("0x874CA113CB878726"),b("0xB8A9626D11B8B8DA"),b("0x0108050209010104"),b("0x4F426E9E0D4F4F21"),b("0x36ADEE6C9B3636D8"),b("0xA6590451FFA6A6A2"),b("0xD2DEBDB90CD2D26F"),b("0xF5FB06F70EF5F5F3"),b("0x79EF80F2967979F9"),b("0x6F5FCEDE306F6FA1"),b("0x91FCEF3F6D91917E"),b("0x52AA07A4F8525255"),b("0x6027FDC04760609D"),b("0xBC89766535BCBCCA"),b("0x9BACCD2B379B9B56"),b("0x8E048C018A8E8E02"),b("0xA371155BD2A3A3B6"),b("0x0C603C186C0C0C30"),b("0x7BFF8AF6847B7BF1"),b("0x35B5E16A803535D4"),b("0x1DE8693AF51D1D74"),b("0xE05347DDB3E0E0A7"),b("0xD7F6ACB321D7D77B"),b("0xC25EED999CC2C22F"),b("0x2E6D965C432E2EB8"),b("0x4B627A96294B4B31"),b("0xFEA321E15DFEFEDF"),b("0x578216AED5575741"),b("0x15A8412ABD151554"),b("0x779FB6EEE87777C1"),b("0x37A5EB6E923737DC"),b("0xE57B56D79EE5E5B3"),b("0x9F8CD923139F9F46"),b("0xF0D317FD23F0F0E7"),b("0x4A6A7F94204A4A35"),b("0xDA9E95A944DADA4F"),b("0x58FA25B0A258587D"),b("0xC906CA8FCFC9C903"),b("0x29558D527C2929A4"),b("0x0A5022145A0A0A28"),b("0xB1E14F7F50B1B1FE"),b("0xA0691A5DC9A0A0BA"),b("0x6B7FDAD6146B6BB1"),b("0x855CAB17D985852E"),b("0xBD8173673CBDBDCE"),b("0x5DD234BA8F5D5D69"),b("0x1080502090101040"),b("0xF4F303F507F4F4F7"),b("0xCB16C08BDDCBCB0B"),b("0x3EEDC67CD33E3EF8"),b("0x0528110A2D050514"),b("0x671FE6CE78676781"),b("0xE47353D597E4E4B7"),b("0x2725BB4E0227279C"),b("0x4132588273414119"),b("0x8B2C9D0BA78B8B16"),b("0xA7510153F6A7A7A6"),b("0x7DCF94FAB27D7DE9"),b("0x95DCFB374995956E"),b("0xD88E9FAD56D8D847"),b("0xFB8B30EB70FBFBCB"),b("0xEE2371C1CDEEEE9F"),b("0x7CC791F8BB7C7CED"),b("0x6617E3CC71666685"),b("0xDDA68EA77BDDDD53"),b("0x17B84B2EAF17175C"),b("0x4702468E45474701"),b("0x9E84DC211A9E9E42"),b("0xCA1EC589D4CACA0F"),b("0x2D75995A582D2DB4"),b("0xBF9179632EBFBFC6"),b("0x07381B0E3F07071C"),b("0xAD012347ACADAD8E"),b("0x5AEA2FB4B05A5A75"),b("0x836CB51BEF838336"),b("0x3385FF66B63333CC"),b("0x633FF2C65C636391"),b("0x02100A0412020208"),b("0xAA39384993AAAA92"),b("0x71AFA8E2DE7171D9"),b("0xC80ECF8DC6C8C807"),b("0x19C87D32D1191964"),b("0x497270923B494939"),b("0xD9869AAF5FD9D943"),b("0xF2C31DF931F2F2EF"),b("0xE34B48DBA8E3E3AB"),b("0x5BE22AB6B95B5B71"),b("0x8834920DBC88881A"),b("0x9AA4C8293E9A9A52"),b("0x262DBE4C0B262698"),b("0x328DFA64BF3232C8"),b("0xB0E94A7D59B0B0FA"),b("0xE91B6ACFF2E9E983"),b("0x0F78331E770F0F3C"),b("0xD5E6A6B733D5D573"),b("0x8074BA1DF480803A"),b("0xBE997C6127BEBEC2"),b("0xCD26DE87EBCDCD13"),b("0x34BDE468893434D0"),b("0x487A75903248483D"),b("0xFFAB24E354FFFFDB"),b("0x7AF78FF48D7A7AF5"),b("0x90F4EA3D6490907A"),b("0x5FC23EBE9D5F5F61"),b("0x201DA0403D202080"),b("0x6867D5D00F6868BD"),b("0x1AD07234CA1A1A68"),b("0xAE192C41B7AEAE82"),b("0xB4C95E757DB4B4EA"),b("0x549A19A8CE54544D"),b("0x93ECE53B7F939376"),b("0x220DAA442F222288"),b("0x6407E9C86364648D"),b("0xF1DB12FF2AF1F1E3"),b("0x73BFA2E6CC7373D1"),b("0x12905A2482121248"),b("0x403A5D807A40401D"),b("0x0840281048080820"),b("0xC356E89B95C3C32B"),b("0xEC337BC5DFECEC97"),b("0xDB9690AB4DDBDB4B"),b("0xA1611F5FC0A1A1BE"),b("0x8D1C8307918D8D0E"),b("0x3DF5C97AC83D3DF4"),b("0x97CCF1335B979766"),b("0x0000000000000000"),b("0xCF36D483F9CFCF1B"),b("0x2B4587566E2B2BAC"),b("0x7697B3ECE17676C5"),b("0x8264B019E6828232"),b("0xD6FEA9B128D6D67F"),b("0x1BD87736C31B1B6C"),b("0xB5C15B7774B5B5EE"),b("0xAF112943BEAFAF86"),b("0x6A77DFD41D6A6AB5"),b("0x50BA0DA0EA50505D"),b("0x45124C8A57454509"),b("0xF3CB18FB38F3F3EB"),b("0x309DF060AD3030C0"),b("0xEF2B74C3C4EFEF9B"),b("0x3FE5C37EDA3F3FFC"),b("0x55921CAAC7555549"),b("0xA2791059DBA2A2B2"),b("0xEA0365C9E9EAEA8F"),b("0x650FECCA6A656589"),b("0xBAB9686903BABAD2"),b("0x2F65935E4A2F2FBC"),b("0xC04EE79D8EC0C027"),b("0xDEBE81A160DEDE5F"),b("0x1CE06C38FC1C1C70"),b("0xFDBB2EE746FDFDD3"),b("0x4D52649A1F4D4D29"),b("0x92E4E03976929272"),b("0x758FBCEAFA7575C9"),b("0x06301E0C36060618"),b("0x8A249809AE8A8A12"),b("0xB2F940794BB2B2F2"),b("0xE66359D185E6E6BF"),b("0x0E70361C7E0E0E38"),b("0x1FF8633EE71F1F7C"),b("0x6237F7C455626295"),b("0xD4EEA3B53AD4D477"),b("0xA829324D81A8A89A"),b("0x96C4F43152969662"),b("0xF99B3AEF62F9F9C3"),b("0xC566F697A3C5C533"),b("0x2535B14A10252594"),b("0x59F220B2AB595979"),b("0x8454AE15D084842A"),b("0x72B7A7E4C57272D5"),b("0x39D5DD72EC3939E4"),b("0x4C5A6198164C4C2D"),b("0x5ECA3BBC945E5E65"),b("0x78E785F09F7878FD"),b("0x38DDD870E53838E0"),b("0x8C148605988C8C0A"),b("0xD1C6B2BF17D1D163"),b("0xA5410B57E4A5A5AE"),b("0xE2434DD9A1E2E2AF"),b("0x612FF8C24E616199"),b("0xB3F1457B42B3B3F6"),b("0x2115A54234212184"),b("0x9C94D625089C9C4A"),b("0x1EF0663CEE1E1E78"),b("0x4322528661434311"),b("0xC776FC93B1C7C73B"),b("0xFCB32BE54FFCFCD7"),b("0x0420140824040410"),b("0x51B208A2E3515159"),b("0x99BCC72F2599995E"),b("0x6D4FC4DA226D6DA9"),b("0x0D68391A650D0D34"),b("0xFA8335E979FAFACF"),b("0xDFB684A369DFDF5B"),b("0x7ED79BFCA97E7EE5"),b("0x243DB44819242490"),b("0x3BC5D776FE3B3BEC"),b("0xAB313D4B9AABAB96"),b("0xCE3ED181F0CECE1F"),b("0x1188552299111144"),b("0x8F0C8903838F8F06"),b("0x4E4A6B9C044E4E25"),b("0xB7D1517366B7B7E6"),b("0xEB0B60CBE0EBEB8B"),b("0x3CFDCC78C13C3CF0"),b("0x817CBF1FFD81813E"),b("0x94D4FE354094946A"),b("0xF7EB0CF31CF7F7FB"),b("0xB9A1676F18B9B9DE"),b("0x13985F268B13134C"),b("0x2C7D9C58512C2CB0"),b("0xD3D6B8BB05D3D36B"),b("0xE76B5CD38CE7E7BB"),b("0x6E57CBDC396E6EA5"),b("0xC46EF395AAC4C437"),b("0x03180F061B03030C"),b("0x568A13ACDC565645"),b("0x441A49885E44440D"),b("0x7FDF9EFEA07F7FE1"),b("0xA921374F88A9A99E"),b("0x2A4D8254672A2AA8"),b("0xBBB16D6B0ABBBBD6"),b("0xC146E29F87C1C123"),b("0x53A202A6F1535351"),b("0xDCAE8BA572DCDC57"),b("0x0B582716530B0B2C"),b("0x9D9CD327019D9D4E"),b("0x6C47C1D82B6C6CAD"),b("0x3195F562A43131C4"),b("0x7487B9E8F37474CD"),b("0xF6E309F115F6F6FF"),b("0x460A438C4C464605"),b("0xAC092645A5ACAC8A"),b("0x893C970FB589891E"),b("0x14A04428B4141450"),b("0xE15B42DFBAE1E1A3"),b("0x16B04E2CA6161658"),b("0x3ACDD274F73A3AE8"),b("0x696FD0D2066969B9"),b("0x09482D1241090924"),b("0x70A7ADE0D77070DD"),b("0xB6D954716FB6B6E2"),b("0xD0CEB7BD1ED0D067"),b("0xED3B7EC7D6EDED93"),b("0xCC2EDB85E2CCCC17"),b("0x422A578468424215"),b("0x98B4C22D2C98985A"),b("0xA4490E55EDA4A4AA"),b("0x285D8850752828A0"),b("0x5CDA31B8865C5C6D"),b("0xF8933FED6BF8F8C7"),b("0x8644A411C2868622")}local m={b("0x6018C07830D81818"),b("0x8C2305AF46262323"),b("0x3FC67EF991B8C6C6"),b("0x87E8136FCDFBE8E8"),b("0x26874CA113CB8787"),b("0xDAB8A9626D11B8B8"),b("0x0401080502090101"),b("0x214F426E9E0D4F4F"),b("0xD836ADEE6C9B3636"),b("0xA2A6590451FFA6A6"),b("0x6FD2DEBDB90CD2D2"),b("0xF3F5FB06F70EF5F5"),b("0xF979EF80F2967979"),b("0xA16F5FCEDE306F6F"),b("0x7E91FCEF3F6D9191"),b("0x5552AA07A4F85252"),b("0x9D6027FDC0476060"),b("0xCABC89766535BCBC"),b("0x569BACCD2B379B9B"),b("0x028E048C018A8E8E"),b("0xB6A371155BD2A3A3"),b("0x300C603C186C0C0C"),b("0xF17BFF8AF6847B7B"),b("0xD435B5E16A803535"),b("0x741DE8693AF51D1D"),b("0xA7E05347DDB3E0E0"),b("0x7BD7F6ACB321D7D7"),b("0x2FC25EED999CC2C2"),b("0xB82E6D965C432E2E"),b("0x314B627A96294B4B"),b("0xDFFEA321E15DFEFE"),b("0x41578216AED55757"),b("0x5415A8412ABD1515"),b("0xC1779FB6EEE87777"),b("0xDC37A5EB6E923737"),b("0xB3E57B56D79EE5E5"),b("0x469F8CD923139F9F"),b("0xE7F0D317FD23F0F0"),b("0x354A6A7F94204A4A"),b("0x4FDA9E95A944DADA"),b("0x7D58FA25B0A25858"),b("0x03C906CA8FCFC9C9"),b("0xA429558D527C2929"),b("0x280A5022145A0A0A"),b("0xFEB1E14F7F50B1B1"),b("0xBAA0691A5DC9A0A0"),b("0xB16B7FDAD6146B6B"),b("0x2E855CAB17D98585"),b("0xCEBD8173673CBDBD"),b("0x695DD234BA8F5D5D"),b("0x4010805020901010"),b("0xF7F4F303F507F4F4"),b("0x0BCB16C08BDDCBCB"),b("0xF83EEDC67CD33E3E"),b("0x140528110A2D0505"),b("0x81671FE6CE786767"),b("0xB7E47353D597E4E4"),b("0x9C2725BB4E022727"),b("0x1941325882734141"),b("0x168B2C9D0BA78B8B"),b("0xA6A7510153F6A7A7"),b("0xE97DCF94FAB27D7D"),b("0x6E95DCFB37499595"),b("0x47D88E9FAD56D8D8"),b("0xCBFB8B30EB70FBFB"),b("0x9FEE2371C1CDEEEE"),b("0xED7CC791F8BB7C7C"),b("0x856617E3CC716666"),b("0x53DDA68EA77BDDDD"),b("0x5C17B84B2EAF1717"),b("0x014702468E454747"),b("0x429E84DC211A9E9E"),b("0x0FCA1EC589D4CACA"),b("0xB42D75995A582D2D"),b("0xC6BF9179632EBFBF"),b("0x1C07381B0E3F0707"),b("0x8EAD012347ACADAD"),b("0x755AEA2FB4B05A5A"),b("0x36836CB51BEF8383"),b("0xCC3385FF66B63333"),b("0x91633FF2C65C6363"),b("0x0802100A04120202"),b("0x92AA39384993AAAA"),b("0xD971AFA8E2DE7171"),b("0x07C80ECF8DC6C8C8"),b("0x6419C87D32D11919"),b("0x39497270923B4949"),b("0x43D9869AAF5FD9D9"),b("0xEFF2C31DF931F2F2"),b("0xABE34B48DBA8E3E3"),b("0x715BE22AB6B95B5B"),b("0x1A8834920DBC8888"),b("0x529AA4C8293E9A9A"),b("0x98262DBE4C0B2626"),b("0xC8328DFA64BF3232"),b("0xFAB0E94A7D59B0B0"),b("0x83E91B6ACFF2E9E9"),b("0x3C0F78331E770F0F"),b("0x73D5E6A6B733D5D5"),b("0x3A8074BA1DF48080"),b("0xC2BE997C6127BEBE"),b("0x13CD26DE87EBCDCD"),b("0xD034BDE468893434"),b("0x3D487A7590324848"),b("0xDBFFAB24E354FFFF"),b("0xF57AF78FF48D7A7A"),b("0x7A90F4EA3D649090"),b("0x615FC23EBE9D5F5F"),b("0x80201DA0403D2020"),b("0xBD6867D5D00F6868"),b("0x681AD07234CA1A1A"),b("0x82AE192C41B7AEAE"),b("0xEAB4C95E757DB4B4"),b("0x4D549A19A8CE5454"),b("0x7693ECE53B7F9393"),b("0x88220DAA442F2222"),b("0x8D6407E9C8636464"),b("0xE3F1DB12FF2AF1F1"),b("0xD173BFA2E6CC7373"),b("0x4812905A24821212"),b("0x1D403A5D807A4040"),b("0x2008402810480808"),b("0x2BC356E89B95C3C3"),b("0x97EC337BC5DFECEC"),b("0x4BDB9690AB4DDBDB"),b("0xBEA1611F5FC0A1A1"),b("0x0E8D1C8307918D8D"),b("0xF43DF5C97AC83D3D"),b("0x6697CCF1335B9797"),b("0x0000000000000000"),b("0x1BCF36D483F9CFCF"),b("0xAC2B4587566E2B2B"),b("0xC57697B3ECE17676"),b("0x328264B019E68282"),b("0x7FD6FEA9B128D6D6"),b("0x6C1BD87736C31B1B"),b("0xEEB5C15B7774B5B5"),b("0x86AF112943BEAFAF"),b("0xB56A77DFD41D6A6A"),b("0x5D50BA0DA0EA5050"),b("0x0945124C8A574545"),b("0xEBF3CB18FB38F3F3"),b("0xC0309DF060AD3030"),b("0x9BEF2B74C3C4EFEF"),b("0xFC3FE5C37EDA3F3F"),b("0x4955921CAAC75555"),b("0xB2A2791059DBA2A2"),b("0x8FEA0365C9E9EAEA"),b("0x89650FECCA6A6565"),b("0xD2BAB9686903BABA"),b("0xBC2F65935E4A2F2F"),b("0x27C04EE79D8EC0C0"),b("0x5FDEBE81A160DEDE"),b("0x701CE06C38FC1C1C"),b("0xD3FDBB2EE746FDFD"),b("0x294D52649A1F4D4D"),b("0x7292E4E039769292"),b("0xC9758FBCEAFA7575"),b("0x1806301E0C360606"),b("0x128A249809AE8A8A"),b("0xF2B2F940794BB2B2"),b("0xBFE66359D185E6E6"),b("0x380E70361C7E0E0E"),b("0x7C1FF8633EE71F1F"),b("0x956237F7C4556262"),b("0x77D4EEA3B53AD4D4"),b("0x9AA829324D81A8A8"),b("0x6296C4F431529696"),b("0xC3F99B3AEF62F9F9"),b("0x33C566F697A3C5C5"),b("0x942535B14A102525"),b("0x7959F220B2AB5959"),b("0x2A8454AE15D08484"),b("0xD572B7A7E4C57272"),b("0xE439D5DD72EC3939"),b("0x2D4C5A6198164C4C"),b("0x655ECA3BBC945E5E"),b("0xFD78E785F09F7878"),b("0xE038DDD870E53838"),b("0x0A8C148605988C8C"),b("0x63D1C6B2BF17D1D1"),b("0xAEA5410B57E4A5A5"),b("0xAFE2434DD9A1E2E2"),b("0x99612FF8C24E6161"),b("0xF6B3F1457B42B3B3"),b("0x842115A542342121"),b("0x4A9C94D625089C9C"),b("0x781EF0663CEE1E1E"),b("0x1143225286614343"),b("0x3BC776FC93B1C7C7"),b("0xD7FCB32BE54FFCFC"),b("0x1004201408240404"),b("0x5951B208A2E35151"),b("0x5E99BCC72F259999"),b("0xA96D4FC4DA226D6D"),b("0x340D68391A650D0D"),b("0xCFFA8335E979FAFA"),b("0x5BDFB684A369DFDF"),b("0xE57ED79BFCA97E7E"),b("0x90243DB448192424"),b("0xEC3BC5D776FE3B3B"),b("0x96AB313D4B9AABAB"),b("0x1FCE3ED181F0CECE"),b("0x4411885522991111"),b("0x068F0C8903838F8F"),b("0x254E4A6B9C044E4E"),b("0xE6B7D1517366B7B7"),b("0x8BEB0B60CBE0EBEB"),b("0xF03CFDCC78C13C3C"),b("0x3E817CBF1FFD8181"),b("0x6A94D4FE35409494"),b("0xFBF7EB0CF31CF7F7"),b("0xDEB9A1676F18B9B9"),b("0x4C13985F268B1313"),b("0xB02C7D9C58512C2C"),b("0x6BD3D6B8BB05D3D3"),b("0xBBE76B5CD38CE7E7"),b("0xA56E57CBDC396E6E"),b("0x37C46EF395AAC4C4"),b("0x0C03180F061B0303"),b("0x45568A13ACDC5656"),b("0x0D441A49885E4444"),b("0xE17FDF9EFEA07F7F"),b("0x9EA921374F88A9A9"),b("0xA82A4D8254672A2A"),b("0xD6BBB16D6B0ABBBB"),b("0x23C146E29F87C1C1"),b("0x5153A202A6F15353"),b("0x57DCAE8BA572DCDC"),b("0x2C0B582716530B0B"),b("0x4E9D9CD327019D9D"),b("0xAD6C47C1D82B6C6C"),b("0xC43195F562A43131"),b("0xCD7487B9E8F37474"),b("0xFFF6E309F115F6F6"),b("0x05460A438C4C4646"),b("0x8AAC092645A5ACAC"),b("0x1E893C970FB58989"),b("0x5014A04428B41414"),b("0xA3E15B42DFBAE1E1"),b("0x5816B04E2CA61616"),b("0xE83ACDD274F73A3A"),b("0xB9696FD0D2066969"),b("0x2409482D12410909"),b("0xDD70A7ADE0D77070"),b("0xE2B6D954716FB6B6"),b("0x67D0CEB7BD1ED0D0"),b("0x93ED3B7EC7D6EDED"),b("0x17CC2EDB85E2CCCC"),b("0x15422A5784684242"),b("0x5A98B4C22D2C9898"),b("0xAAA4490E55EDA4A4"),b("0xA0285D8850752828"),b("0x6D5CDA31B8865C5C"),b("0xC7F8933FED6BF8F8"),b("0x228644A411C28686")}local n={b("0x186018C07830D818"),b("0x238C2305AF462623"),b("0xC63FC67EF991B8C6"),b("0xE887E8136FCDFBE8"),b("0x8726874CA113CB87"),b("0xB8DAB8A9626D11B8"),b("0x0104010805020901"),b("0x4F214F426E9E0D4F"),b("0x36D836ADEE6C9B36"),b("0xA6A2A6590451FFA6"),b("0xD26FD2DEBDB90CD2"),b("0xF5F3F5FB06F70EF5"),b("0x79F979EF80F29679"),b("0x6FA16F5FCEDE306F"),b("0x917E91FCEF3F6D91"),b("0x525552AA07A4F852"),b("0x609D6027FDC04760"),b("0xBCCABC89766535BC"),b("0x9B569BACCD2B379B"),b("0x8E028E048C018A8E"),b("0xA3B6A371155BD2A3"),b("0x0C300C603C186C0C"),b("0x7BF17BFF8AF6847B"),b("0x35D435B5E16A8035"),b("0x1D741DE8693AF51D"),b("0xE0A7E05347DDB3E0"),b("0xD77BD7F6ACB321D7"),b("0xC22FC25EED999CC2"),b("0x2EB82E6D965C432E"),b("0x4B314B627A96294B"),b("0xFEDFFEA321E15DFE"),b("0x5741578216AED557"),b("0x155415A8412ABD15"),b("0x77C1779FB6EEE877"),b("0x37DC37A5EB6E9237"),b("0xE5B3E57B56D79EE5"),b("0x9F469F8CD923139F"),b("0xF0E7F0D317FD23F0"),b("0x4A354A6A7F94204A"),b("0xDA4FDA9E95A944DA"),b("0x587D58FA25B0A258"),b("0xC903C906CA8FCFC9"),b("0x29A429558D527C29"),b("0x0A280A5022145A0A"),b("0xB1FEB1E14F7F50B1"),b("0xA0BAA0691A5DC9A0"),b("0x6BB16B7FDAD6146B"),b("0x852E855CAB17D985"),b("0xBDCEBD8173673CBD"),b("0x5D695DD234BA8F5D"),b("0x1040108050209010"),b("0xF4F7F4F303F507F4"),b("0xCB0BCB16C08BDDCB"),b("0x3EF83EEDC67CD33E"),b("0x05140528110A2D05"),b("0x6781671FE6CE7867"),b("0xE4B7E47353D597E4"),b("0x279C2725BB4E0227"),b("0x4119413258827341"),b("0x8B168B2C9D0BA78B"),b("0xA7A6A7510153F6A7"),b("0x7DE97DCF94FAB27D"),b("0x956E95DCFB374995"),b("0xD847D88E9FAD56D8"),b("0xFBCBFB8B30EB70FB"),b("0xEE9FEE2371C1CDEE"),b("0x7CED7CC791F8BB7C"),b("0x66856617E3CC7166"),b("0xDD53DDA68EA77BDD"),b("0x175C17B84B2EAF17"),b("0x47014702468E4547"),b("0x9E429E84DC211A9E"),b("0xCA0FCA1EC589D4CA"),b("0x2DB42D75995A582D"),b("0xBFC6BF9179632EBF"),b("0x071C07381B0E3F07"),b("0xAD8EAD012347ACAD"),b("0x5A755AEA2FB4B05A"),b("0x8336836CB51BEF83"),b("0x33CC3385FF66B633"),b("0x6391633FF2C65C63"),b("0x020802100A041202"),b("0xAA92AA39384993AA"),b("0x71D971AFA8E2DE71"),b("0xC807C80ECF8DC6C8"),b("0x196419C87D32D119"),b("0x4939497270923B49"),b("0xD943D9869AAF5FD9"),b("0xF2EFF2C31DF931F2"),b("0xE3ABE34B48DBA8E3"),b("0x5B715BE22AB6B95B"),b("0x881A8834920DBC88"),b("0x9A529AA4C8293E9A"),b("0x2698262DBE4C0B26"),b("0x32C8328DFA64BF32"),b("0xB0FAB0E94A7D59B0"),b("0xE983E91B6ACFF2E9"),b("0x0F3C0F78331E770F"),b("0xD573D5E6A6B733D5"),b("0x803A8074BA1DF480"),b("0xBEC2BE997C6127BE"),b("0xCD13CD26DE87EBCD"),b("0x34D034BDE4688934"),b("0x483D487A75903248"),b("0xFFDBFFAB24E354FF"),b("0x7AF57AF78FF48D7A"),b("0x907A90F4EA3D6490"),b("0x5F615FC23EBE9D5F"),b("0x2080201DA0403D20"),b("0x68BD6867D5D00F68"),b("0x1A681AD07234CA1A"),b("0xAE82AE192C41B7AE"),b("0xB4EAB4C95E757DB4"),b("0x544D549A19A8CE54"),b("0x937693ECE53B7F93"),b("0x2288220DAA442F22"),b("0x648D6407E9C86364"),b("0xF1E3F1DB12FF2AF1"),b("0x73D173BFA2E6CC73"),b("0x124812905A248212"),b("0x401D403A5D807A40"),b("0x0820084028104808"),b("0xC32BC356E89B95C3"),b("0xEC97EC337BC5DFEC"),b("0xDB4BDB9690AB4DDB"),b("0xA1BEA1611F5FC0A1"),b("0x8D0E8D1C8307918D"),b("0x3DF43DF5C97AC83D"),b("0x976697CCF1335B97"),b("0x0000000000000000"),b("0xCF1BCF36D483F9CF"),b("0x2BAC2B4587566E2B"),b("0x76C57697B3ECE176"),b("0x82328264B019E682"),b("0xD67FD6FEA9B128D6"),b("0x1B6C1BD87736C31B"),b("0xB5EEB5C15B7774B5"),b("0xAF86AF112943BEAF"),b("0x6AB56A77DFD41D6A"),b("0x505D50BA0DA0EA50"),b("0x450945124C8A5745"),b("0xF3EBF3CB18FB38F3"),b("0x30C0309DF060AD30"),b("0xEF9BEF2B74C3C4EF"),b("0x3FFC3FE5C37EDA3F"),b("0x554955921CAAC755"),b("0xA2B2A2791059DBA2"),b("0xEA8FEA0365C9E9EA"),b("0x6589650FECCA6A65"),b("0xBAD2BAB9686903BA"),b("0x2FBC2F65935E4A2F"),b("0xC027C04EE79D8EC0"),b("0xDE5FDEBE81A160DE"),b("0x1C701CE06C38FC1C"),b("0xFDD3FDBB2EE746FD"),b("0x4D294D52649A1F4D"),b("0x927292E4E0397692"),b("0x75C9758FBCEAFA75"),b("0x061806301E0C3606"),b("0x8A128A249809AE8A"),b("0xB2F2B2F940794BB2"),b("0xE6BFE66359D185E6"),b("0x0E380E70361C7E0E"),b("0x1F7C1FF8633EE71F"),b("0x62956237F7C45562"),b("0xD477D4EEA3B53AD4"),b("0xA89AA829324D81A8"),b("0x966296C4F4315296"),b("0xF9C3F99B3AEF62F9"),b("0xC533C566F697A3C5"),b("0x25942535B14A1025"),b("0x597959F220B2AB59"),b("0x842A8454AE15D084"),b("0x72D572B7A7E4C572"),b("0x39E439D5DD72EC39"),b("0x4C2D4C5A6198164C"),b("0x5E655ECA3BBC945E"),b("0x78FD78E785F09F78"),b("0x38E038DDD870E538"),b("0x8C0A8C148605988C"),b("0xD163D1C6B2BF17D1"),b("0xA5AEA5410B57E4A5"),b("0xE2AFE2434DD9A1E2"),b("0x6199612FF8C24E61"),b("0xB3F6B3F1457B42B3"),b("0x21842115A5423421"),b("0x9C4A9C94D625089C"),b("0x1E781EF0663CEE1E"),b("0x4311432252866143"),b("0xC73BC776FC93B1C7"),b("0xFCD7FCB32BE54FFC"),b("0x0410042014082404"),b("0x515951B208A2E351"),b("0x995E99BCC72F2599"),b("0x6DA96D4FC4DA226D"),b("0x0D340D68391A650D"),b("0xFACFFA8335E979FA"),b("0xDF5BDFB684A369DF"),b("0x7EE57ED79BFCA97E"),b("0x2490243DB4481924"),b("0x3BEC3BC5D776FE3B"),b("0xAB96AB313D4B9AAB"),b("0xCE1FCE3ED181F0CE"),b("0x1144118855229911"),b("0x8F068F0C8903838F"),b("0x4E254E4A6B9C044E"),b("0xB7E6B7D1517366B7"),b("0xEB8BEB0B60CBE0EB"),b("0x3CF03CFDCC78C13C"),b("0x813E817CBF1FFD81"),b("0x946A94D4FE354094"),b("0xF7FBF7EB0CF31CF7"),b("0xB9DEB9A1676F18B9"),b("0x134C13985F268B13"),b("0x2CB02C7D9C58512C"),b("0xD36BD3D6B8BB05D3"),b("0xE7BBE76B5CD38CE7"),b("0x6EA56E57CBDC396E"),b("0xC437C46EF395AAC4"),b("0x030C03180F061B03"),b("0x5645568A13ACDC56"),b("0x440D441A49885E44"),b("0x7FE17FDF9EFEA07F"),b("0xA99EA921374F88A9"),b("0x2AA82A4D8254672A"),b("0xBBD6BBB16D6B0ABB"),b("0xC123C146E29F87C1"),b("0x535153A202A6F153"),b("0xDC57DCAE8BA572DC"),b("0x0B2C0B582716530B"),b("0x9D4E9D9CD327019D"),b("0x6CAD6C47C1D82B6C"),b("0x31C43195F562A431"),b("0x74CD7487B9E8F374"),b("0xF6FFF6E309F115F6"),b("0x4605460A438C4C46"),b("0xAC8AAC092645A5AC"),b("0x891E893C970FB589"),b("0x145014A04428B414"),b("0xE1A3E15B42DFBAE1"),b("0x165816B04E2CA616"),b("0x3AE83ACDD274F73A"),b("0x69B9696FD0D20669"),b("0x092409482D124109"),b("0x70DD70A7ADE0D770"),b("0xB6E2B6D954716FB6"),b("0xD067D0CEB7BD1ED0"),b("0xED93ED3B7EC7D6ED"),b("0xCC17CC2EDB85E2CC"),b("0x4215422A57846842"),b("0x985A98B4C22D2C98"),b("0xA4AAA4490E55EDA4"),b("0x28A0285D88507528"),b("0x5C6D5CDA31B8865C"),b("0xF8C7F8933FED6BF8"),b("0x86228644A411C286")}local o={b("0x0000000000000000"),b("0x1823C6E887B8014F"),b("0x36A6D2F5796F9152"),b("0x60BC9B8EA30C7B35"),b("0x1DE0D7C22E4BFE57"),b("0x157737E59FF04ADA"),b("0x58C9290AB1A06B85"),b("0xBD5D10F4CB3E0567"),b("0xE427418BA77D95D8"),b("0xFBEE7C66DD17479E"),b("0xCA2DBF07AD5A8333")}local function p(q)local r={}local s;local t;for u=1,e.block_size,8 do s=u//8+1;t=u//8*8+1;r[s]=b(a.byte(q._data,t))<<56~(b(a.byte(q._data,t+1))<<48)~(b(a.byte(q._data,t+2))<<40)~(b(a.byte(q._data,t+3))<<32)~(b(a.byte(q._data,t+4))<<24)~(b(a.byte(q._data,t+5))<<16)~(b(a.byte(q._data,t+6))<<8)~b(a.byte(q._data,t+7))end;q._data=q._data:sub(e.block_size+1)return r end;function e:new(v)if self~=e then return nil,"First argument must be self"end;local w=setmetatable({},f)w._hash={}for u=1,8 do w._hash[u]=b(0)end;w._len=c(0)w._data=""if v~=nil then w:update(v)end;return w end;setmetatable(e,{__call=e.new})function e:copy()local w=e:new()for u=1,8 do w._hash[u]=self._hash[u]:copy()end;w._data=self._data;w._len=self._len:copy()return w end;function e:update(v)local x={}local y={}local r={}local z={}if v==nil then v=""end;v=tostring(v)self._len=self._len+#v*8;self._data=self._data..v;while#self._data>=e.block_size do r=p(self)x[1]=self._hash[1]:copy()x[2]=self._hash[2]:copy()x[3]=self._hash[3]:copy()x[4]=self._hash[4]:copy()x[5]=self._hash[5]:copy()x[6]=self._hash[6]:copy()x[7]=self._hash[7]:copy()x[8]=self._hash[8]:copy()y[1]=r[1]~x[1]y[2]=r[2]~x[2]y[3]=r[3]~x[3]y[4]=r[4]~x[4]y[5]=r[5]~x[5]y[6]=r[6]~x[6]y[7]=r[7]~x[7]y[8]=r[8]~x[8]for A=2,11 do z[1]=g[(x[1]>>56+1):asnumber()]~h[(x[8]>>48&0xFF+1):asnumber()]~i[(x[7]>>40&0xFF+1):asnumber()]~j[(x[6]>>32&0xFF+1):asnumber()]~k[(x[5]>>24&0xFF+1):asnumber()]~l[(x[4]>>16&0xFF+1):asnumber()]~m[(x[3]>>8&0xFF+1):asnumber()]~n[(x[2]&0xFF+1):asnumber()]~o[A]z[2]=g[(x[2]>>56+1):asnumber()]~h[(x[1]>>48&0xFF+1):asnumber()]~i[(x[8]>>40&0xFF+1):asnumber()]~j[(x[7]>>32&0xFF+1):asnumber()]~k[(x[6]>>24&0xFF+1):asnumber()]~l[(x[5]>>16&0xFF+1):asnumber()]~m[(x[4]>>8&0xFF+1):asnumber()]~n[(x[3]&0xFF+1):asnumber()]z[3]=g[(x[3]>>56+1):asnumber()]~h[(x[2]>>48&0xFF+1):asnumber()]~i[(x[1]>>40&0xFF+1):asnumber()]~j[(x[8]>>32&0xFF+1):asnumber()]~k[(x[7]>>24&0xFF+1):asnumber()]~l[(x[6]>>16&0xFF+1):asnumber()]~m[(x[5]>>8&0xFF+1):asnumber()]~n[(x[4]&0xFF+1):asnumber()]z[4]=g[(x[4]>>56+1):asnumber()]~h[(x[3]>>48&0xFF+1):asnumber()]~i[(x[2]>>40&0xFF+1):asnumber()]~j[(x[1]>>32&0xFF+1):asnumber()]~k[(x[8]>>24&0xFF+1):asnumber()]~l[(x[7]>>16&0xFF+1):asnumber()]~m[(x[6]>>8&0xFF+1):asnumber()]~n[(x[5]&0xFF+1):asnumber()]z[5]=g[(x[5]>>56+1):asnumber()]~h[(x[4]>>48&0xFF+1):asnumber()]~i[(x[3]>>40&0xFF+1):asnumber()]~j[(x[2]>>32&0xFF+1):asnumber()]~k[(x[1]>>24&0xFF+1):asnumber()]~l[(x[8]>>16&0xFF+1):asnumber()]~m[(x[7]>>8&0xFF+1):asnumber()]~n[(x[6]&0xFF+1):asnumber()]z[6]=g[(x[6]>>56+1):asnumber()]~h[(x[5]>>48&0xFF+1):asnumber()]~i[(x[4]>>40&0xFF+1):asnumber()]~j[(x[3]>>32&0xFF+1):asnumber()]~k[(x[2]>>24&0xFF+1):asnumber()]~l[(x[1]>>16&0xFF+1):asnumber()]~m[(x[8]>>8&0xFF+1):asnumber()]~n[(x[7]&0xFF+1):asnumber()]z[7]=g[(x[7]>>56+1):asnumber()]~h[(x[6]>>48&0xFF+1):asnumber()]~i[(x[5]>>40&0xFF+1):asnumber()]~j[(x[4]>>32&0xFF+1):asnumber()]~k[(x[3]>>24&0xFF+1):asnumber()]~l[(x[2]>>16&0xFF+1):asnumber()]~m[(x[1]>>8&0xFF+1):asnumber()]~n[(x[8]&0xFF+1):asnumber()]z[8]=g[(x[8]>>56+1):asnumber()]~h[(x[7]>>48&0xFF+1):asnumber()]~i[(x[6]>>40&0xFF+1):asnumber()]~j[(x[5]>>32&0xFF+1):asnumber()]~k[(x[4]>>24&0xFF+1):asnumber()]~l[(x[3]>>16&0xFF+1):asnumber()]~m[(x[2]>>8&0xFF+1):asnumber()]~n[(x[1]&0xFF+1):asnumber()]x[1]=z[1]:copy()x[2]=z[2]:copy()x[3]=z[3]:copy()x[4]=z[4]:copy()x[5]=z[5]:copy()x[6]=z[6]:copy()x[7]=z[7]:copy()x[8]=z[8]:copy()z[1]=g[(y[1]>>56+1):asnumber()]~h[(y[8]>>48&0xFF+1):asnumber()]~i[(y[7]>>40&0xFF+1):asnumber()]~j[(y[6]>>32&0xFF+1):asnumber()]~k[(y[5]>>24&0xFF+1):asnumber()]~l[(y[4]>>16&0xFF+1):asnumber()]~m[(y[3]>>8&0xFF+1):asnumber()]~n[(y[2]&0xFF+1):asnumber()]~x[1]z[2]=g[(y[2]>>56+1):asnumber()]~h[(y[1]>>48&0xFF+1):asnumber()]~i[(y[8]>>40&0xFF+1):asnumber()]~j[(y[7]>>32&0xFF+1):asnumber()]~k[(y[6]>>24&0xFF+1):asnumber()]~l[(y[5]>>16&0xFF+1):asnumber()]~m[(y[4]>>8&0xFF+1):asnumber()]~n[(y[3]&0xFF+1):asnumber()]~x[2]z[3]=g[(y[3]>>56+1):asnumber()]~h[(y[2]>>48&0xFF+1):asnumber()]~i[(y[1]>>40&0xFF+1):asnumber()]~j[(y[8]>>32&0xFF+1):asnumber()]~k[(y[7]>>24&0xFF+1):asnumber()]~l[(y[6]>>16&0xFF+1):asnumber()]~m[(y[5]>>8&0xFF+1):asnumber()]~n[(y[4]&0xFF+1):asnumber()]~x[3]z[4]=g[(y[4]>>56+1):asnumber()]~h[(y[3]>>48&0xFF+1):asnumber()]~i[(y[2]>>40&0xFF+1):asnumber()]~j[(y[1]>>32&0xFF+1):asnumber()]~k[(y[8]>>24&0xFF+1):asnumber()]~l[(y[7]>>16&0xFF+1):asnumber()]~m[(y[6]>>8&0xFF+1):asnumber()]~n[(y[5]&0xFF+1):asnumber()]~x[4]z[5]=g[(y[5]>>56+1):asnumber()]~h[(y[4]>>48&0xFF+1):asnumber()]~i[(y[3]>>40&0xFF+1):asnumber()]~j[(y[2]>>32&0xFF+1):asnumber()]~k[(y[1]>>24&0xFF+1):asnumber()]~l[(y[8]>>16&0xFF+1):asnumber()]~m[(y[7]>>8&0xFF+1):asnumber()]~n[(y[6]&0xFF+1):asnumber()]~x[5]z[6]=g[(y[6]>>56+1):asnumber()]~h[(y[5]>>48&0xFF+1):asnumber()]~i[(y[4]>>40&0xFF+1):asnumber()]~j[(y[3]>>32&0xFF+1):asnumber()]~k[(y[2]>>24&0xFF+1):asnumber()]~l[(y[1]>>16&0xFF+1):asnumber()]~m[(y[8]>>8&0xFF+1):asnumber()]~n[(y[7]&0xFF+1):asnumber()]~x[6]z[7]=g[(y[7]>>56+1):asnumber()]~h[(y[6]>>48&0xFF+1):asnumber()]~i[(y[5]>>40&0xFF+1):asnumber()]~j[(y[4]>>32&0xFF+1):asnumber()]~k[(y[3]>>24&0xFF+1):asnumber()]~l[(y[2]>>16&0xFF+1):asnumber()]~m[(y[1]>>8&0xFF+1):asnumber()]~n[(y[8]&0xff+1):asnumber()]~x[7]z[8]=g[(y[8]>>56+1):asnumber()]~h[(y[7]>>48&0xFF+1):asnumber()]~i[(y[6]>>40&0xFF+1):asnumber()]~j[(y[5]>>32&0xFF+1):asnumber()]~k[(y[4]>>24&0xFF+1):asnumber()]~l[(y[3]>>16&0xFF+1):asnumber()]~m[(y[2]>>8&0xFF+1):asnumber()]~n[(y[1]&0xFF+1):asnumber()]~x[8]y[1]=z[1]:copy()y[2]=z[2]:copy()y[3]=z[3]:copy()y[4]=z[4]:copy()y[5]=z[5]:copy()y[6]=z[6]:copy()y[7]=z[7]:copy()y[8]=z[8]:copy()end;self._hash[1]=self._hash[1]~y[1]~r[1]self._hash[2]=self._hash[2]~y[2]~r[2]self._hash[3]=self._hash[3]~y[3]~r[3]self._hash[4]=self._hash[4]~y[4]~r[4]self._hash[5]=self._hash[5]~y[5]~r[5]self._hash[6]=self._hash[6]~y[6]~r[6]self._hash[7]=self._hash[7]~y[7]~r[7]self._hash[8]=self._hash[8]~y[8]~r[8]end end;function e:digest()local B;local C={}local D=0;local s;B=self:copy()B._data=B._data..a.char(1<<7)if#B._data>32 then B._data=B._data..a.rep(a.char(0),64-#B._data)D=64-#B._data+32 else D=32-#B._data end;B._data=B._data..a.rep(a.char(0),D)..B._len:asbytestring()B:update()for u=1,#B._hash do C[u]=B._hash[u]:asbytestring()end;return table.concat(C)end;function e:hexdigest()local E;local C={}E=self:digest()for u=1,#E do C[u]=a.format("%02X",a.byte(E,u))end;return table.concat(C)end;return e
|