ntool/lib/keys.py
2023-08-08 12:55:15 +08:00

118 lines
56 KiB
Python

from .common import *
class CTR: # For tuples: index 0 for retail, index 1 for dev
fixed_system = 0x527CE630A9CA305F3696F3CDE954194B
# AES keyslots
KeyX0x2C = (0xb98e95ceca3e4d171f76a94de934c053, 0x510207515507cbb18e243dcb85e23a1d)
KeyX0x25 = (0xCEE7D8AB30C00DAE850EF5E382AC5AF3, 0x81907A4B6F1B47323A677974CE4AD71B)
KeyX0x18 = (0x82E9C9BEBFB8BDB875ECC0A07D474374, 0x304BF1468372EE64115EBD4093D84276)
KeyX0x1B = (0x45AD04953992C7C893724A9A7BCE6182, 0x6C8B2944A0726035F941DFC018524FB6)
KeyX0x3D = (0x617085719b7cfb316df4df2e8362c6e2, 0xBD4FE7E733C755FCE7540EABBD8AC30D)
KeyY0x3D = (
(0xD07B337F9CA4385932A2E25723232EB9, 0x85215E96CB95A9ECA4B4DE601CB562C7),
(0x0C767230F0998F1C46828202FAACBE4C, 0x0C767230F0998F1C46828202FAACBE4C),
(0xC475CB3AB8C788BB575E12A10907B8A4, 0xC475CB3AB8C788BB575E12A10907B8A4),
(0xE486EEE3D0C09C902F6686D4C06F649F, 0xE486EEE3D0C09C902F6686D4C06F649F),
(0xED31BA9C04B067506C4497A35B7804FC, 0xED31BA9C04B067506C4497A35B7804FC),
(0x5E66998AB4E8931606850FD7A16DD755, 0x5E66998AB4E8931606850FD7A16DD755)
)
KeyX0x3B = (0xB529221CDDB5DB5A1BF26EFF2041E875, 0x5C3D38AC1740994EFC8FD0BE8D8097B3)
# RSA signing keys
test_priv = bytes.fromhex('3E2BBEBA7F290252BF1BF1E4212FD9761E39234A6DFF99F633AA2B62030A0E15AC16B9856377F5742461B1016EEB72241E5DFA8FA85A101447BD05A07EE5FF60872A1831C1396CD545BB290504FB7AA268215FED4EFE646069BD96D0A7063D537B6892885086EE065D72739A39B6723B200139DF37281EF53963BC2AF25EAB1A99E45BEBE636306C40016160CC55896DCA7EE064787F7B26AE3EA3124516F6C8D0B94F91111211BBBB7FABC782DC4A619C14AE29FD3A601393192F5449B244345814D72F7025A048667655879B25776D0B75988BA639403C217F2A24C1A5C1DC5A5754F603F6AD5133406D5C265E299282E529137D7DFE0873BC5DC4E92BD671')
test_mod = bytes.fromhex('CAC588C7F12A092B7649C0A835751082C2B5E5B2E9C81888F39889BF9DE6E40B715DDD3F138271F2ED318699D947FEC57A7593E1F86DC63D9BE11599E1C2E05C384B35A24D3EE2CEFBB308A3DD0C2631849227C88A8EC883A86CA7A339719EF1349101DF114A9CF98BF92F46440A7238F38B6D233389BF6634A786E6ADF2DEF9AB16A140EED8F76CDC0092CB3149FC266424088FC660FF1EE3F0DDFB6D0D0F497CAD03EC9F6358FA46DFA2640ECC8557E72C617F59B8627D590EF684969942B0398380B5522E073F92E39EF547EBA7D7D415F1228232BE2AD08C01CC30A91196F6E92BEA0EF82D0DB191D51A9451B98539B0AF9F549E99E146E56FE25F4B4E23')
accessdesc_mod = (bytes.fromhex('B1E3E35F013980D156789DB706F71DBF3E2276EDF95DA236B630610596D300B9EDF1D7E01DA04FB7CF5A198775498840EDE36F7C904A644598D704B95A6B45AA7E94C0B3B7DB7B665920B708E2F383A37FE32021A0EBB7280FF32B15A4C9D0AB8939997E765F9E4D1E01228D74A6EB9AA39D45E510616E20FD2375C0C50503C54C024F544B5708B446C32CF1F9526CCD1455A855926DE24A4146EB08C5F3B48D0D5E21EAAF4D274DDE779397E2C76B661FDB2D6EA95F6114177B2B665AB50189F2237525259C869A89FF641D5BCED77E3F2DA8DAB55AC55F5920B0ED1C91FFA327B88ECF8215E549EFE458E15F8F53B9332A5624AAA1D36E471A634419B38EA5'),
bytes.fromhex('F43C4582FBF8905D07029F2A988B63B7D38F3CE2E0E093BFDF32434DBEF4D17A3A4E5431D773AE994CC41F3C3EF05705A38A455460D88FD91D680D0E2EEFC8E83DC919F3731E2DDA77883ECA5E25704BF77095835424E0C31A75DF613DD142EC351B38D6C1F67E182A8485DD57741F0A2EF6B294A23EE9A1D009F73A998005AF5755EF52FA243E7FD47C41447B067FB95B2E8E96AE46124D6421E50F85CCEB92E5F0F5A742273BECF8E781756F630A8B0D773851E66633BA79DC2F2C8FC32806BB039CDBD1640A66F0F8C12A491D0C6E35BBEAB35C0DE9957C67BE6577EC07C023050A724886E99EFC2515E7C82165E01BD5D50ED31154BB2978BF2A3C3BB6B1'))
accessdesc_priv = (None, bytes.fromhex('0cfbb8bec12e0a1f95e030eda2e1130e9a3d9cb11b5ef8dfbbe9d83bd56d3e8702bb37fcd3cd1ba09cdcf6a39d5d69a4dc381d1e228d549d4833c830e3341e40214bb3d8561bea38593f1a06683991860a4bf6f8bda3fdba45697373e005442b5a19ddbc45e0987ca8a2f59a49fc3b6baf4a303d584023ab954b7853ea45ccd776251d88ec4349a361e34878e5e658adb71b7b68ecf7171464d0d175f07cb769a929ef6a97cbef802f13ae3df772bbeb27807d8c6ab0ac2275905ca736c6a27cfb792f7becc36721e6fa9ceab04a24219dd99556a0df9c854ddf8753976a2edcddc8deec1f7f241a8897fcbbb823b7afc1a5e39d410bf291029bcf6c4ec1ebc1'))
cfa_mod = (bytes.fromhex('FBDEB82B40930FF6B19A08061B86FED0DF1079173D8CE27ACE8F2345B90A6DED300EC1A892C4BD1ACEA7AC77AA47E5204A4491DF1CFE8628122D66DFBEAD9661EDF2F7417B57886B241E7DECBE986565366599A9FE24678599EE2AAEEEB1811A22E36D756E21BCEF115C61AF0C3000B6A223EDFE7015DA52E1E62DCE34E8AA4CF1D6675657D3DBC090496F4573934E303070F5C98F3125F2C2E7337F4EB6F52ADF2000E579B2D0F917F77E1690400057914478EF1CE08509DAF4147E4BD735D687548F2AB5A76F50D0F7D1F119C9AC227E0511F5F26DEE9227575FE5150D2768BF52657473A6586D7918AC31DDDD808B7524E117E195251629AB6969C828EE5D'),
bytes.fromhex('B90CC4C678F86E300528C1CBD2CFA7805C574D169CAFA6CD01BB8333AD03BB0663D817F5E3DFDA0D3B860EA2804794446FD9977E786AC39393EF02FC229F80778C70921C43B1374C76E0573BAB89FFEFE5BB3EAB9139B8D9660B64289192E9D0B3DFD14BC173B53F56A04010FE152B1FA27ADE31B02640C357FD35CBF0FAFFFB6FDBCD341D512D2D8118FF0C0851D5B44B5616029F4E6ADF066ECB7285E92E43A208780C389C19BD7B747468C42DC1359E653BD899041C8B938E7E927CBBDD60ECE7FE0E9D4F3646E6F15C9470EE675F362B70448DCA09B95867D29FAD1F135474ADA6844428F3DE7E4C202BC5E912E95EFB8D77A9A4D20D3C3824BEF58AB5F5'))
cfa_priv = (None, bytes.fromhex('323643C2B31A7E13ABA2B68B4F05A7A6CDE7A6744749E651E47174157691F792B14EF699731ECFB51D7CAFC5EA5701E55C1047EA3A5486032A7605725316C2AE2DBE71F7176B23DD2CB88D1314E5DA3BC7337ABAE52A2B7D5A12273856DFED70030EED64C7F654ACFE1D77A4E4BCEBB9A6C5FE3AAF5881E43FA0E693132D987DB3E2C9C8D63191739DCAC944EFD039BF38FD1C91729340A98A0D3E32C4594B0CC7EA50419FF5E2B7507CE3C9EC4618ACB4912A32E0D8106FFC81B395F3FC78C0EFE57B8D14D436265FC632C019875C772637D8AE66D60B2826437C25DB6D5CE8948FA97707B2C085CD41BA48887334D5208A0FE39E99F0C8E8D92C2A2169E4C1'))
tik_mod = (bytes.fromhex('AD505BB6C67E2E5BDD6A3BEC43D910C772E9CC290DA58588B77DCC11680BB3E29F4EABBB26E98C2601985C041BB14378E689181AAD770568E928A2B98167EE3E10D072BEEF1FA22FA2AA3E13F11E1836A92A4281EF70AAF4E462998221C6FBB9BDD017E6AC590494E9CEA9859CEB2D2A4C1766F2C33912C58F14A803E36FCCDCCCDC13FD7AE77C7A78D997E6ACC35557E0D3E9EB64B43C92F4C50D67A602DEB391B06661CD32880BD64912AF1CBCB7162A06F02565D3B0ECE4FCECDDAE8A4934DB8EE67F3017986221155D131C6C3F09AB1945C206AC70C942B36F49A1183BCD78B6E4B47C6C5CAC0F8D62F897C6953DD12F28B70C5B7DF751819A9834652625'), bytes.fromhex('C0844CEB7EB0CFF0AEB777698593E4995A954E581738CED681B0BD7709E7F89ADFAD054883F6C3FDDF7B83E00C2681544329EA826C89F0A67442864D3260327DA77A13406659DA3E416B2794034FAA229DD55452DB270A6AA23D19B1661B197DABC70E881791A12AB43C6CCBF5AA7C3ADD36FB35717B20015900D6F69039354131F8C1C0573A35185890B1AD9A0EECE0F47A7DA52748C972AB0D087B62354091142BB11D1AFAF9CD5C1713535271CAE22A78B17F4ACD59D8BA1D7D705F781B9F9D37188ED7CD0D49577469883A6B8E4E1B85DDBE39450589561297599A09A4C82D2FF5CFB47370DB581EB24E776FA47E62DFB705E880425CB87887977F662C5F')) # XS0000000c, XS00000009
tik_priv = (None, bytes.fromhex('74CBCF1ED02DD4F9E005CE9C663DE36266624EB582E1241B5F732A7F1DB36E500783A0C0EDCEB7F93DAC61C57B99A0BCCE428FD3B0A5BF2A3D3E5EDC56C3A5DE35CD0A00F8176B2079EFD88323BF2128FF387D800715186CB920F88577BCD92A351CFEE3F1E8982EA04A48773503C97AACDABE6D1DFBE4DEEC7065FA1065A4B86ADF326B8E2879258772C07C5B81BC8192447DEA61BD3C48F30E18DC8D89A034C3AE9C5772A6D77C79F7E9146E15AC01FAFFC8A22A3AAB243C7E2EC5DA83D59D2410837AF4BBA36F88CEEC241BF4362E96C96D1902FEAA213E95A7FE83C8997FD1CB7C1F9130DBA4D3DDDA9B124E24D1A56F15FC2C72982C89C57D89DE2B4E01'))
tmd_mod = (bytes.fromhex('A689C590FD0B2F0D4F56B632FB934ED0739517B33A79DE040EE92DC31D37C7F73BF04BD3E44E20AB5A6FEAF5984CC1F6062E9A9FE56C3285DC6F25DDD5D0BF9FE2EFE835DF2634ED937FAB0214D104809CF74B860E6B0483F4CD2DAB2A9602BC56F0D6BD946AED6E0BE4F08F26686BD09EF7DB325F82B18F6AF2ED525BFD828B653FEE6ECE400D5A48FFE22D538BB5335B4153342D4335ACF590D0D30AE2043C7F5AD214FC9C0FE6FA40A5C86506CA6369BCEE44A32D9E695CF00B4FD79ADB568D149C2028A14C9D71B850CA365B37F70B657791FC5D728C4E18FD22557C4062D74771533C70179D3DAE8F92B117E45CB332F3B3C2A22E705CFEC66F6DA3772B'), bytes.fromhex('AA7F9380289BE89863107AE10C592C2F7CFFBDAADD74F4A2FBACD76F00934206347156D84049729F3E24FA5E19D15B635CD2EF09DE32EE6B6FC8FA328E2E96B99441047D076295DA0D91D80935D0DE8E6BC6AB1427019CFE4996FC9B54794DEBD7C66673A6DD3A77654794EC1C87AA46D978A97DDB11226ED412C2784B218392C710C77419FFAAF60B75D823DD33C3A15BA72D30A5A4D8F80FD673FD26CB29A6EF5039E25F5961846BDA2EC7CBE4384B28FB0DD58E7CAA7D4B373AD781DD73E30993BDBD7E08554A8CA5C9842D7101A22A01B015FB3078B913F4C73FB5A6F1A25E22B002B6E009547F0FBDF0FEA5501D9315F93D830F0F0E3DE23D96E709D977')) # CP0000000b, CP0000000a
tmd_priv = (None, bytes.fromhex('28CEDC39027F3E8EAAB75911E068BF80A64477DB1BA250A369E596B2C4CA7A350DFC4AB2FBC018A530B49D1044D1AD33FD15A78D0F17D5A4F55E7F33F68004276AEA9CEE68041AA5D435A225A231D9F2F0ACDE69B66456752E9BEADE2ABBD600AAE69BC2F69F60CD0EFAB1144A47D6639ACD9C93B90942DA8FFBE57BF14F9633F9455BCC84ABC2D8C40C85FA5128B99795238CB31D4EB61CCC6041FB26C7D6CB7718F7EACD103C5BA3C0774C11F37450EE2380C45DDD57F57D49574ABA62BF06D9D17F9110896F4909D7E9AF4C9F679D8982E4D5C19ADC5579E7E92D8142145561479BED76921D2FB57C284BFF7BC23B367399A621430EA11F82B8917111B2C1'))
root_mod = (bytes.fromhex('F8246C58BAE7500301FBB7C2EBE0010571DA922378F0514EC0031DD0D21ED3D07EFC852069B5DE9BB951A8BC90A244926D379295AE9436AAA6A302510C7B1DEDD5FB20869D7F3016F6BE65D383A16DB3321B95351890B17002937EE193F57E99A2474E9D3824C7AEE38541F567E7518C7A0E38E7EBAF41191BCFF17B42A6B4EDE6CE8DE7318F7F5204B3990E226745AFD485B24493008B08C7F6B7E56B02B3E8FE0C9D859CB8B68223B8AB27EE5F6538078B2DB91E2A153E85818072A23B6DD93281054F6FB0F6F5AD283ECA0B7AF35455E03DA7B68326F3EC834AF314048AC6DF20D28508673CAB62A2C7BC131A533E0B66806B1C30664B372331BDC4B0CAD8D11EE7BBD9285548AAEC1F66E821B3C8A0476900C5E688E80CCE3C61D69CBBA137C6604F7A72DD8C7B3E3D51290DAA6A597B081F9D3633A3467A356109ACA7DD7D2E2FB2C1AEB8E20F4892D8B9F8B46F4E3C11F4F47D8B757DFEFEA3899C33595C5EFDEBCBABE8413E3A9A803C69356EB2B2AD5CC4C858455EF5F7B30644B47C64068CDF809F76025A2DB446E03D7CF62F34E702457B02A4CF5D9DD53CA53A7CA629788C67CA08BFECCA43A957AD16C94E1CD875CA107DCE7E0118F0DF6BFEE51DDBD991C26E60CD4858AA592C820075F29F526C917C6FE5403EA7D4A50CEC3B7384DE886E82D2EB4D4E42B5F2B149A81EA7CE7144DC2994CFC44E1F91CBD495'), bytes.fromhex('D01FE100D43556B24B56DAE971B5A5D384B93003BE1BBF28A2305B060645467D5B0251D2561A274F9E9F9CEC646150AB3D2AE3366866ACA4BAE81AE3D79AA6B04A8BCBA7E6FB648945EBDFDB85BA091FD7D114B5A3A780E3A22E6ECD87B5A4C6F910E4032208814B0CEEA1A17DF739695F617EF63528DB949637A056037F7B32413895C0A8F1982E1565E38EEDC22E590EE2677B8609F48C2E303FBC405CAC18042F822084E4936803DA7F41349248562B8EE12F78F803246330BC7BE7EE724AF458A472E7AB46A1A7C10C2F18FA07C3DDD89806A11C9CC130B247A33C8D47DE67F29E5577B11C43493D5BBA7634A7E4E71531B7DF5981FE24A114554CBD8F005CE1DB35085CCFC77806B6DE254068A26CB5492D4580438FE1E5A9ED75C5ED451DCE789439CCC3BA28A2312A1B8719EF0F73B713950C02591A7462A607F37C0AA7A18FA943A36D752A5F4192F0136100AA9CB41BBE14BEB1F9FC692FDFA09446DE5A9DDE2CA5F68C1C0C21429287CB2DAAA3D263752F73E09FAF4479D2817429F69800AFDE6B592DC19882BDF581CCABF2CB91029EF35C4CFDBBFF49C1FA1B2FE31DE7A560ECB47EBCFE32425B956F81B69917487E3B789151DB2E78B1FD2EBE7E626B3EA165B4FB00CCB751AF507329C4A3939EA6DD9C50A0E7386B0145796B41AF61F78555944F3BC22DC3BD0D00F8798A42B1AAA08320659AC7395AB4F329'))
cci_mod = cfa_mod
cci_priv = cfa_priv
crr_mod = (bytes.fromhex('D00E6756858ABCF213D87FBB29D192349EE42743D1111DFE9593C4783F4A2D2AB1CA6FB0BA32A2242E2BE5726EF0B49768CCDA171514F074D435B4EE04D89CA9ECDBCB29E895F257BABD65473D6CE50DE5103EB5C37302AEC893777CC523220171CCC60BEACAA0FED4CDA949655A3B0D5BB7B2EA329A43856CCA045C900D9E34B9EF802B2E6D96BC31157E1401C000E0197A2E17E58BA37AD2C247779A8B832E9866A1A1020F0299E7D79FDCC852A22823081B87FFE4BA90025015C720A0AB76607D1FC1BF339D66246A803BF4A27F15B10C36EF44E8D036949A7484488789499A0B7E10F27355623D68AC9E5FAE1D54F8BA628E29BC49E7FDEEBD3D7BCCF8BF'), bytes.fromhex('c5f709805fdadcbd460752aa6dcd72b2500977478a4f092ae291b45f04975175c9196f95bb23147d34df777807e8d11011afce02b873a9fb64b76587e567dd673775fd0fe297bc79a8ccf9fa18b2624df7536b9c0e1aab90e65286c81c922c6153a901da4393d0422eddd54c8c4ce89156ecee12700b64f00ad6aff860c2a8267ac8ba559aa144fd094726a0c1999ef124dfa3c2bbff0745d9d6a4c0ff6c6c787b6d708c7444b095e6c6665e7ebe71c5913473a7d44c0dfca921499492a16a4d30a3d69f6c60400ceeebf89922e16ffc3c9623aa1134004efc2d604145e35d7806b1f1c307b9d347d0f18c26331f6b46ddf3e38464a7f15311e1534e99dbac53'))
crr_priv = (None, bytes.fromhex('3cde28a33a95ca323e126955f29ded4aab3645e10ec31f5ffabaef191a09c6a7af15ed8bbdb6db096654e1605c1a3711b8467452bcd0ff6e46f8e6b462924d6e7b8c812b3db206e6e74263080548efd5e61a55a76d64c0e4b414a2d16b8b7c2eceb0d3db7ed4b77f69f6962b4ba62809ec0ebc6299e5befad9724a37d5d4742b9a37efd8f68040f520ba28e2be7df98f04373534f13215f8fd9567bcad60867406c4a55aea403851026177e07bfee17b8cf9b341fdb76085d98ccbb02904028a6366baece494af4dd59a4c221e437575159d7cd8528a797ff196401e9ebc9a9eaa055a721be7a1f4fbe43ff499f344f5a54f36e73545201b339557d12562a781'))
crr_body_mod = bytes.fromhex('E2ADA6EACAA3E8CCA9701D2E234BC655CE13D9A758B4C773961DE8C3094D9BC3EB69A237835DD83704727A4FEA53989D0E0134709A8206E76AC9F80E495AA4E70EFAD4AB3BC5D7F1A4FC927FD0F3CDD5B92A1A4162B37B3E1E3546418EB2531A60F8C2D194B39D769F1D98ACF0CFE3A90585F2BF55761B891CC3192EEE94BE750FA3768B242497FAC05324F58502199DC5112E6BA326FEF755D4230A733F3753EAC2B7C1C9D8F32F78764AA0696091C27D1174EF96D97453B11CB0C43216823BAF61B2DE38873E374BA395888EE0279A1F7DB823C363E86851D98C4CC2598649F7469E3CD79F8923B473352F182376A39F400B769085C889DA65E76EEF2EF567')
crr_body_priv = bytes.fromhex('8D27296BC7A7EDCD942D365E86A826E7439E64C8AA9A582107F7B3FBCF8D3E53F002257B80182E0D847D6CE0DAC017A6A513E6FDBF98FC879A9E0E138766248DA56C588610809089EEFD4094CB1F26ABD1D3FFE97B76DC65C015D89BF629E149E9DCBE2417FF092CD6C46D5033DCA09D9DCCDD6E7BDF42224D80C7EBCBB1602F04EE040E4C76495592A5C113600A80153D1CC646572E7CB03D870687FD31F8E714972A5740AC9461CDCFDE8C404695A0D6F92C089B12BFF1889C5D40326D9D99A480A6C2455AD322FEFA175411EA41B4BD681EDD3FE592CB9EF8C00A8BF589A40368F8F8997CFEAD32DD5CB40629DA968BBACB15DE380DCAF70165F62D366E71')
def key_scrambler(keyX, keyY):
return rol((rol(keyX, 2, 128) ^ keyY) + 0x1FF9E9AAC5FE0408024591DC5D52768A, 87, 128).to_bytes(0x10, 'big')
def titlekey_gen(titleID: str, password: str):
secret = hextobytes('fd040105060b111c2d49')
tid = hextobytes(titleID).lstrip(b'\x00')
salt = hashlib.md5(secret + tid).digest()
titlekey = hashlib.pbkdf2_hmac('sha1', password.encode(), salt, 20, 16)
return hex(readbe(titlekey))[2:].zfill(32)
class NTR:
blowfish_key = [0x99D5205F, 0x5744F5B9, 0x6E19A4D9, 0x9E6A5A94, 0xD8AEF1EB, 0x4175E23A, 0x9382D032, 0x33EE31D5, 0xCC57619A, 0x3706A21B, 0x793972F5, 0x55AEF6BE, 0x5F1B69FB, 0xE59DF1E9, 0xCE2CD9A1, 0x5E3205E6, 0xFED3FECF, 0xD462040D, 0x8BF5ECB7, 0x2B6079BB, 0x1295310D, 0x6E3FDA2B, 0x8884F0F1, 0x3D127E25, 0x4522F1BB, 0x24061A06, 0x11ADDF28, 0x8B648134, 0x2BEB3329, 0x99AAF2BD, 0x9C14959D, 0x9FF7F58C, 0x7297A129, 0x9DD15FCF, 0x664D071A, 0xDED34A4B, 0x85C9A7A3, 0x1795053A, 0x3D490ABF, 0x0A898BA2, 0x4A8249DD, 0x2790F10B, 0xE9EB1C6A, 0x83764505, 0xBA817061, 0x173F4BDE, 0xAECFAB39, 0x57F23A56, 0x4811AD8A, 0x40E1453F, 0xFA9B0254, 0xCAA693FB, 0xEF4DFE6F, 0xA3D8879C, 0x08BAD548, 0x6A8D2DFD, 0x6E15F874, 0xBDBE528B, 0x18228A9E, 0xFB743707, 0x1B366C4A, 0x19BA4262, 0xB9799110, 0x7B676596, 0xFE0223E8, 0xEE998C77, 0x3E5C8664, 0x4D6D7886, 0xA54F65E2, 0x1EB2DF5A, 0x0AD07E08, 0x14B071AC, 0xBDDB831C, 0xB9D7A162, 0xCDC6637C, 0x5269C3E6, 0xBF75CE12, 0x445D2104, 0xFAFBD33C, 0x381163D4, 0x95854149, 0x4609F208, 0x4311DC1F, 0x76C0156D, 0x1F3C6370, 0xEA87806C, 0xC3BD638B, 0xC2372137, 0xDCEE0923, 0x2E376A4D, 0x7390F750, 0x30AC1C92, 0x04102391, 0x4FD207AA, 0x683E4F9A, 0xC964606A, 0xC81421F3, 0xD6224112, 0x4424CFE6, 0x8A56DD0D, 0x534DE185, 0x1E8C525A, 0x9C1984C2, 0x0357F16F, 0xE300BE58, 0xF64CEDD5, 0x21649C1F, 0xBE55033C, 0x4ADCFFAA, 0xC9DAE05D, 0x5EBFE6DE, 0xF5D8B1F8, 0xFF36B3B9, 0x626795DB, 0x315F37ED, 0x4C706799, 0x90B51831, 0x6C3D9999, 0xE442DAD3, 0x254213A0, 0xAED7706C, 0xB155CFC7, 0xD746D543, 0x61173D44, 0x28E93385, 0xD5D0A293, 0xAA25121F, 0xFBC50B46, 0xF5977656, 0x45A6BE87, 0xB1946BE8, 0xB1FE3399, 0xAE1F3E6C, 0x39711D09, 0x009037E4, 0x103E7574, 0xFF8C833B, 0xB0F1B0F9, 0x01054742, 0x95F1D6AC, 0x7E38E69E, 0x9574263F, 0xB4685018, 0xD04330B4, 0x4C4BE368, 0xBFE54DB6, 0x958B0AA0, 0x74253277, 0xCFA1F72C, 0xD871135A, 0xABEAC951, 0xE80DEEEF, 0xE9937E19, 0xA71E4338, 0x81162CA1, 0x48E373CC, 0x29216CD3, 0x5DCEA0D9, 0x617143A0, 0x1513B564, 0x92CF2A19, 0xDCADB7A5, 0x9F8665F8, 0x1A9FE7FB, 0xF7FDB813, 0x6C27DB6F, 0xDF351CF7, 0x8D2C5B9B, 0x12AB3864, 0x06CCDE31, 0xE84E7511, 0x64E3FAEA, 0xEB3454C2, 0xAD3F34EB, 0x932C7D26, 0x369D56F3, 0x5AE1F6B3, 0x98634A9E, 0x3283E49A, 0x84607D90, 0x2E130EEE, 0x934B36A2, 0x85EC1638, 0xE8880602, 0xBFF0A03A, 0xEDD76A9A, 0x73E157CF, 0xF844B8DC, 0x2E2359D1, 0xDF955271, 0x9961A04B, 0xD57F6E78, 0xBAA9C530, 0xD3408632, 0x9D320C9C, 0x37B7022F, 0xBA5498A9, 0xC41304C9, 0x8DBEC8E7, 0x5D97502E, 0x93D62259, 0x0C27BC22, 0x92E0A720, 0x0F936F7F, 0x4C9FD3B5, 0xA62A0B74, 0x67497D10, 0x26CBD1C5, 0x8671E78C, 0xA09CE95B, 0xB21AF601, 0xEE8C9E5E, 0x83F21ADB, 0xE6E5EA84, 0x5976D27C, 0xF68DA549, 0x3648C216, 0x52BB83A3, 0x74B9070C, 0x3BFF6128, 0xE161E9E4, 0xEF6E15AA, 0x4EBAE85D, 0x0596BB32, 0x56B0FB72, 0x520F0EC8, 0x42256576, 0x89AFF2DE, 0x1027F001, 0x4B74A797, 0x07D52654, 0x54091F82, 0x0A867D30, 0x390EB326, 0x9B0B57BB, 0x360631AF, 0xFD79FCD9, 0x30102B0C, 0xB3E19BD7, 0x7BDC5FEF, 0xD2F81345, 0x4D4775BD, 0x46963C7E, 0x75F33EB5, 0x67C59A3B, 0xB05B296B, 0xDE805BC8, 0x1505B131, 0xB6CE49DD, 0xAD84B5AE, 0x60DC6731, 0x3430FE4E, 0xBD802FA6, 0xBF633921, 0x86D9357F, 0x16682205, 0x54E99026, 0x8C076C51, 0xA43155D7, 0x0907A83E, 0x2E5366C1, 0xF8F27BC4, 0xF258CFF1, 0x87C5A2E7, 0x278F3087, 0x58A06462, 0x2318B988, 0x7CFACEC4, 0x98AEAD17, 0xCC4A5BF3, 0xE948D556, 0xD30DF2C8, 0x92738CDB, 0xD72F56AC, 0x81F99269, 0x4DC632F6, 0xE6C08D21, 0xE2768061, 0x11BCDC6C, 0x93AF1969, 0x9BD0BFB9, 0x319F0267, 0xA351EE83, 0x06227B0C, 0xAB494240, 0xB8D5017D, 0xCE5EF755, 0x5339C599, 0x46D8879F, 0xBAF764B4, 0xE39AFAA1, 0x6D906810, 0x30CA8A54, 0xA79F60C3, 0x19F56B0D, 0x7A5198E6, 0x984351B4, 0xD635E94F, 0xC3DF0F7B, 0xD62F5CBD, 0x3A156119, 0xF14BCBAA, 0xDC6D64C9, 0xD3C61E56, 0xEF384C50, 0x718675CC, 0x0D0D4EE9, 0x28F6065D, 0x701BAAD3, 0x45CFA839, 0xAC95A62E, 0xB4E422D4, 0x74A8375F, 0x487A04CC, 0xA54C40D8, 0x28B42808, 0x0D1C7252, 0x41F07D47, 0x193A534E, 0x5884626B, 0x93B58A81, 0x214E0DDC, 0xB43FA2C6, 0xFCC92B40, 0xDA3804E9, 0x5E5A866B, 0x0C222585, 0x68118D7C, 0x921D9555, 0x4DAB8EBB, 0xDAA6E6B7, 0x51B6325A, 0x0541DD05, 0x2A0A5650, 0x911747CC, 0xC9E67EB5, 0x614ADB73, 0x6751C833, 0xF5DA6E74, 0x2E54C337, 0x0D6DAF08, 0xE8158A5F, 0xE25921CD, 0xA8DE0C06, 0x5A776B5F, 0xDB18653E, 0xC850DE78, 0xE0B882B3, 0x5D4E7232, 0x074FC134, 0x23BA96B7, 0x674EA428, 0x1E3462EB, 0x2D6A70E9, 0x2F42C470, 0x4E5A319C, 0xF95B4728, 0xAADA716F, 0x381FB378, 0xC4926B1C, 0x9EF6359A, 0xB74D0EBF, 0xCC182941, 0x0348355D, 0x55D02BC6, 0x29AF5C60, 0x74698E5E, 0x9B7CD4BD, 0x7B44647D, 0x3F925D69, 0xB61F004B, 0xD48335CF, 0x7E644E17, 0xAE8DD52E, 0x9A28124E, 0x2E2B4908, 0x5CAEC646, 0x85AE4161, 0x1E6F82D2, 0x5137161F, 0x0BF659A4, 0x9ACA5AAF, 0x0DD4338B, 0x2063F184, 0x805CCBCF, 0x08B4B9D3, 0x1605BD62, 0x83319B56, 0x51989FBA, 0xB25BAAB2, 0x226B2CB5, 0xD448FA63, 0x2B5F58FA, 0x61FA6409, 0xBB38E0B8, 0x9D9260A8, 0x0D676F0E, 0x37F50D01, 0x9FC277D4, 0xFEECF173, 0x3039E07D, 0xF56198E4, 0x2C285504, 0x5655DB2F, 0x6BECE558, 0x06B66480, 0x6A2A1A4E, 0x5B0FD8C4, 0x0A2E5219, 0xD962F530, 0x48BE8C7B, 0x4F389BA2, 0xC3AFC9D3, 0xC7C16241, 0x86B96121, 0x576F994F, 0xC1BACE7B, 0xB53B4D5E, 0x8A8B4457, 0x5F135F70, 0x6D5B2947, 0xDC38E2EC, 0x04556512, 0x2AE81743, 0xE18EDD2A, 0xB3E294F7, 0x096E5CE6, 0xEB8AF86D, 0x89495448, 0xF52FADBF, 0xEA944BCA, 0xFC398782, 0x5F8A01F2, 0x75F2E671, 0xD6D842DE, 0xF12D1D28, 0xA6887EA3, 0xA0471D30, 0xD9A371DF, 0x491CCB01, 0xF836B1F2, 0xF022585D, 0x456BBDA0, 0xBBB28842, 0xC78C28CE, 0x93E89063, 0x08907C89, 0x3CF57DB7, 0x042D4F55, 0x5116FD7E, 0x79E8BEC1, 0xF212D4F8, 0xB4840523, 0xA0CCD22B, 0xFDE1ABAD, 0x0DD1556C, 0x2341944D, 0x77374F05, 0x280CBF17, 0xB312676C, 0x8CC35AF7, 0x41842A6D, 0xD0941227, 0x2CB4ED9C, 0x4DEC4782, 0x97D567B9, 0x1B9DC055, 0x077EE58E, 0xE2A8E73E, 0x12E40E3A, 0x2A455534, 0xA2F92D5A, 0x1BAB527C, 0x83105F55, 0xD2F15A43, 0x2BC6A7A4, 0x891595E8, 0xB44B9DF8, 0x75E39F60, 0x785BD6E6, 0x0D44E621, 0x06BD4722, 0x53A400AD, 0x8D431385, 0x39F7AAFC, 0x38AF7BED, 0xFCE42B54, 0x50984CFC, 0x8580F7DF, 0x3C8022E1, 0x94DADE24, 0xC6B07A39, 0x38DC0FA1, 0xA7F4F96F, 0x6318578B, 0x84412A2E, 0xD453F2D9, 0x000FD0DD, 0x996E19A6, 0x0AD0EC5B, 0x5824ABC0, 0xCB0665EC, 0x1A133894, 0x0A67032F, 0x3FF7E377, 0x447733C6, 0x1439D0E3, 0xC0A20879, 0xBB409957, 0x410B0190, 0xCDE1CC48, 0x67DBB3AF, 0x8874F34C, 0x828F72B1, 0xB52329C4, 0x126C19FC, 0x8E46A49C, 0xC4256587, 0xD36DBE8A, 0x93110338, 0xED832BF3, 0x46A493EA, 0x3B53851D, 0xCED4F108, 0x8327EDFC, 0x9B1A18BC, 0xF98BAEDC, 0x24AB5038, 0xE9724B10, 0x22177B46, 0x5DAB5964, 0xF340AEF8, 0xBBE5C8F9, 0x26034E55, 0x7DEBEBFE, 0xF739E6E0, 0x0A11BE2E, 0x28FF98ED, 0xC0C94256, 0x42C3FD00, 0xF6AF87A2, 0x5B013F32, 0x9247959A, 0x72A5323D, 0xAE6BD09B, 0x07D24992, 0xE3784AFA, 0xA1067DF2, 0x41CF7774, 0x0414B20C, 0x86846416, 0xD5BB51A1, 0xE56FF1D1, 0xF2E2F75F, 0x58204DB8, 0x57C7CFDD, 0xC5D8BE76, 0x3DF65F7E, 0xE72A8B88, 0x241B383F, 0x0E412377, 0xF5F04BD4, 0x0C1FFAA4, 0x0B805FCF, 0x45F6E0DA, 0x2F345953, 0xFB203C52, 0x625E35B5, 0x62FE8B60, 0x63E3865A, 0x151A6ED1, 0x4745BC32, 0xB4EB6738, 0xABE46E33, 0x3AB5EDA3, 0xAD67E04E, 0x4195EE62, 0x6271261D, 0x31EF6230, 0xAFD782AC, 0xC2DC0504, 0xF59707BF, 0x11592307, 0xC06402E8, 0x97E53EAF, 0x18AC59A6, 0x8B4A3390, 0x1C6E7C9C, 0x207E4C3C, 0x3E6164BB, 0xC56B7C7E, 0x3E9FC54C, 0x9FEA73F5, 0xD789C04C, 0xF4FBF42D, 0xEC141B51, 0xD5C112C8, 0x10DF0B4A, 0x8B9CBC93, 0x456A3E3E, 0x7DC1A9BA, 0xCDC1B407, 0xE4E16886, 0x43B26D38, 0xF3FB0C5C, 0x663771DE, 0x56EF6EA0, 0x104065A7, 0x98F7D0BE, 0x0EC83736, 0xEC10CA7C, 0x9CAB841E, 0x05177602, 0x1C4F52AA, 0x5FC1C6A0, 0x56B9D804, 0x84444DA7, 0x59D8DE60, 0xE6380E05, 0x8F03E13B, 0x6D810433, 0x6F300BCE, 0x69052133, 0xFB26BB89, 0x7DB6AE87, 0x7E5107E0, 0xACF7960A, 0x6BF9C45C, 0x1DE44447, 0xB85EFAE3, 0x78845542, 0x4B485EF7, 0x7D473586, 0x1D2B4305, 0x03EC8AB8, 0x1E063C76, 0x0C481A43, 0xA7B78AED, 0x1E13C643, 0xEE10EFDB, 0xECFB3C83, 0xB29544EF, 0xD854514E, 0x2D11441D, 0xFB36591E, 0x7A34C1C3, 0xCA570061, 0xEA67A516, 0x9B55D055, 0xE17FD936, 0xD24076AE, 0xDC01CEB0, 0x7A83D5CB, 0x2098EC6B, 0xC1729234, 0xF3825737, 0x628A3236, 0x0C9043AE, 0xAE5C9B78, 0x8E136502, 0xFD6871C1, 0xFEB031A0, 0x2482B0C3, 0xB17969A7, 0xF5D2EBD0, 0x82C032DC, 0x9EC7263C, 0x6D8D98C1, 0xBB22D4D0, 0x0F33EC3E, 0xB9CCE1DC, 0x6A4C7736, 0x141CF9BF, 0x819F285F, 0x71853229, 0x907548C4, 0xB34ACED8, 0x448F142F, 0xFD4057EF, 0xAA0875D9, 0x46D1D66E, 0x32551FC3, 0x18FE841F, 0xFC84D5FF, 0x715E1B48, 0xC386950E, 0x280827D3, 0x3883717B, 0x4C806354, 0x9A56B0AC, 0xCF80CA31, 0x09EFFEF3, 0xBEAF247E, 0xA6FE533F, 0xC28D4A33, 0x68D122A6, 0x66AD7BEA, 0xDEB643B0, 0xA1259500, 0xA33F7546, 0x141144EC, 0xD795BC92, 0xF04FA916, 0x53629760, 0x2A0F41F1, 0x7124BEEE, 0x947F08CD, 0x6093B385, 0x5B07003F, 0xD80F2883, 0x9AD1699F, 0xD1DA2EC3, 0x9001A2B9, 0x6B4E2A66, 0x9DDAAEA6, 0xEA2AD368, 0x2F0C0C9C, 0xD28C4AED, 0xE29E5765, 0x9D0987A3, 0xB4C4325D, 0xC9D4322B, 0xB1E0711E, 0x644DE690, 0x71E31E40, 0xED7DF384, 0x0EEDC878, 0x76AEC071, 0x2772BB05, 0xEA0264FB, 0xF3486BB5, 0x42933FED, 0x9F1353D2, 0xF7FE2AEC, 0x1D4725DB, 0x3C9186C6, 0x8EF011FD, 0x237436F7, 0xA4F59E7A, 0x7E535044, 0xD447CAD3, 0xEB386DE6, 0xD971947F, 0x4AC6694B, 0x11F452EA, 0x22FE8AB0, 0x36678B59, 0xE8E6802A, 0xEB650413, 0xEEECDC9E, 0x5FB1EC05, 0x6A59E69F, 0x5E596B89, 0xBFF71ACA, 0x44F95B6A, 0x718503E4, 0x2962E070, 0x6F41C4CF, 0xB2B1CCE3, 0x7EA607A8, 0x87E77F84, 0x93DB524B, 0x6CEC7EDD, 0xD4244810, 0x699F0460, 0x74E64818, 0xF3E42CB9, 0x4F2E507A, 0xDFD45469, 0x2B8BA7F3, 0xCEFF1FF3, 0x3E260139, 0x17958489, 0xB0F04C4B, 0x82919FC4, 0x4BAC9DA5, 0x74AF1725, 0xC9CA32D3, 0xBC898A84, 0x89CC0DAE, 0x7CA2DB9C, 0x6A7891EE, 0xEA765D4E, 0x8760F569, 0x1567D402, 0xCFAF4836, 0x07EABF6F, 0x662D068F, 0xC49AFEF9, 0xF6908775, 0xB8F7AD0F, 0x76105A3D, 0x59B02EB3, 0xC7352CCC, 0x70562BCB, 0xE33796C5, 0x2F461B8A, 0x2246C788, 0xA7263298, 0x61DF8622, 0x8AF41C2F, 0x87A109AA, 0xCCA9AED3, 0xBD00451C, 0x9A548786, 0x5287EFFF, 0x1E8FA18F, 0xC1895C35, 0x1BDA2D3A, 0x2C16B2C2, 0xF156E278, 0xC16B6397, 0xC5568FC9, 0x327F2CAA, 0xAFA6A8AC, 0x20912288, 0xDEE4608B, 0xF94B4225, 0x1AE37F9C, 0x2C19893A, 0x7E05D436, 0xCC6958C2, 0xC1328B2F, 0x9085EB7A, 0x3950A5A1, 0x2792C566, 0xB0204F58, 0x7E558343, 0x2B45E29C, 0xE4D81290, 0x2C168356, 0x167903B3, 0xAD2D6118, 0x1A131F37, 0xE2E19C73, 0x7B80D5FD, 0x2D5187FC, 0x7BAAD71F, 0x2C7A8EAF, 0xF48DBBCD, 0x95117C72, 0x0BEE6FE2, 0xB9AFDE37, 0x83DE8C8D, 0x620567B7, 0x96C68D56, 0xB60DD762, 0xBAD64636, 0xBD8EC8E6, 0xEA2A6C10, 0x14FF6B5B, 0xFA823C46, 0xB1304346, 0x518A7D9B, 0x923E8379, 0x5B555DB2, 0x6C5ECE90, 0x628E5398, 0xC90D6DE5, 0x2D57CDC5, 0x8157BAE1, 0xE8B88F72, 0xE54F13DC, 0xEA9D7115, 0x10B21188, 0xD509D47F, 0x5B657F2C, 0x3B384C11, 0x68508DFB, 0x9EB059BF, 0x9480894A, 0xC51A1812, 0x8953D14A, 0x1029E88C, 0x1CECB6EA, 0x46C7178B, 0x251531A8, 0xA26B43B1, 0x9DE2DB0B, 0x879BB011, 0x040E71D2, 0x29778982, 0x0A66417F, 0x1D0B48FF, 0x72BB24FD, 0xC248A19B, 0xFE7B7FCE, 0x88DB86D9, 0x853B1CB0, 0xDCA83307, 0xBF512EE3, 0x0E9A0097, 0x1E06C097, 0x439DD8B6, 0x45C48667, 0x5F00F888, 0x9AA4529E, 0xC7AA8A83, 0x75ECC518, 0xAECEC32F, 0x1A2BF918, 0xFFAE1AF5, 0x530BB533, 0x51A7FDE8, 0xA8E1A264, 0xB6221743, 0x80CC0AD8, 0xAE3BBA40, 0xD7D9924A, 0x89DF0410, 0xEE9B182B, 0x6A77698A, 0x68F4F9B9, 0xA221156E, 0xE61E3B03, 0x62309B60, 0x417E259B, 0x9E8FC552, 0x1008F8C2, 0x69A12111, 0x88375E79, 0x3566FF10, 0x42186EED, 0x97B66B1C, 0x4E36E56D, 0x7DB4E4BF, 0x20B9E005, 0x3A69D5B8, 0xE3D5DCE0, 0xB9AC533E, 0x07A457AD, 0x77FF4818, 0x762AAC49, 0x2A8E4775, 0x6D9F6763, 0x30358C39, 0x0539D56F, 0x643A5BAD, 0xCA0BBB82, 0x529945B1, 0x93363699, 0xAF132044, 0x36D80244, 0x09399285, 0xFF4A4A97, 0x87A663D7, 0xC7B5B524, 0xED0FB46F, 0x0C585214, 0xD9A67BD3, 0x79BC3858, 0xA1BD3B84, 0x06D81A06, 0xFD6BA8EA, 0x4B692804, 0x37AD8299, 0xFB0E1B85, 0xBDA85D73, 0xCDDC5875, 0x0ABE636C, 0x48E74CE4, 0x302B0460, 0xB915D8DA, 0x8681758F, 0x96D48D1C, 0x5D70857C, 0x1C677BD5, 0x0867A6CE, 0x4B0A6670, 0xB7E563D4, 0x5B8A82EA, 0x1067CAE2, 0xF4EF1785, 0x2F2A5F8A, 0x9782F86A, 0xD63410EA, 0xEBC95C3C, 0xE149F846, 0xEBDEBDF6, 0xA992F1AA, 0xA6A018B0, 0x3AD30F1F, 0xF36FFF31, 0x454344D3, 0x509AF788, 0x0996C1CE, 0x76CCF22C, 0x2CBAAD82, 0x778F1884, 0xC0D2079C, 0x3690834E, 0x0BA54F43, 0x3E04AB78, 0x4FD6FB09, 0x012490DA, 0x6F3C3A61, 0x0D7F694A, 0xEB2B3002, 0xB4DBE084, 0xA9ECD735, 0xBF377D85, 0x58CEA94E, 0xE480C7A8, 0xD3306748, 0xEB29AF2F, 0x746AB4A7, 0x3F0F3F92, 0xAFF3CAAC, 0xAF4BD994, 0xC043CA81, 0x0D2F48A1, 0xB027D5D2, 0xEF4B0585, 0xA3DE4D93, 0x303CF0BB, 0x4A8F3027, 0x4CEBE33E, 0x64ED9A2F, 0x3BF182F0, 0xBAF4CF7F, 0x40CBB0E1, 0x7FBCAA57, 0xD3C974F2, 0xFA430D22, 0xD0F4774E, 0x93D78570, 0x1F99BFB6, 0xDE35F130, 0xA75E71F0, 0x6B012D7B, 0x64F03353, 0x0A3988F3, 0x6B3AA66B, 0x35D22F43, 0xCD02FDB5, 0xE9BC5BAA, 0xD8A4197E, 0x0E5D9481, 0x9E6F77AD, 0xD60E7493, 0x96E7C418, 0x5FADF519]
class TWL: # For tuples: index 0 for retail, index 1 for dev
# RSA signing keys
rsa_key_mod = [
(bytes.fromhex('C30293DEC05271302D4D22BADAA27379D4D9DE9EFD301DF50E7188D95F9CEE49B09D19AF0C76381C1C7D489AE02128B8B174074CCE83102B777C915B89CBD3450E799C15158E474E8C389E3786780EFD1E373AE103ED03F9084DE6DB4B005D27392C73E5B9B833054D2E2BFA4747F54A73A3F5B969FDD5F20EFAA3CF1DFE3359'), bytes.fromhex('bcfda1ff1f66dfecb469f8f7430c5d0f00d7204942060329850b99596198706efff6b47066f0dd8fdce9f20dd0211d77b89c5187c0b133ab13960b47b8424a0dc377e187b16b2431108a47f232f4c9782513d480100552c3e7507b2949ce93d98f2ab54dd1c191d807161015ffd6848f543d915b374548e46b62d2119b0d7169')),
(bytes.fromhex('B618D86128CB5C6F05FCD709183FB2D06B7DEED998DC4FDDC1A85918FBB065BD65809CC768A14EDC18AA7BCBB9A07CFC1FAB865DED9C2C5C6D07D9FCC29B7A9D7C3A7333B7E8048681C85C7DB3957DC9EC66072F8BB26D13C46CF0BA27823318D4316AB2ADBC37066A2EE9735F3A57C7D7F88EC1B93D3FD4E5276FB4008BB719'), bytes.fromhex('e99ea79f594df4a76004bd47f2b364cd1679c14739f6a9f8ee1ad072cf43970c93a1384e13406c105943e2712954142cc5da594db46aef85616f7f1c59342cc624f37bc3b740d146f890b7c29850af955242dbacd67ea9c33d1b51560706d00b01bb5893eaa02cc77d6a317ec9e2dafe1f2e9da75484dc28b918ea16f295556d')),
(bytes.fromhex('DA940901D5B7D3C511460C4119BC8ABAD1562888440710ABC5B8E306CEA65BE40752E28985566DE4CD5CBDFA4575FE581CE3509E3C67405E0F46396A3C48066ECEDD308341B5804DD9B864A3F048C9ECACC9CFAFF9B6460449617BE2A3A72588D3EDA5F3768492002C96BCB4389C0256564FEDC2A34E4B8861000316A58F5783'), bytes.fromhex('a79f54a0c745aef663a753b70acc0bcb65e111c60515b56ebdac0ccaf47c687af90e5d985bc84d223ba3be8b5b7f26449fc44844b132b7be63bad6c110cef6ed478fe1ff7f5ad55d94382fa1d4ef82b10dc443ecbe77b6829cfa178784822546fbd605c89a7ead44400d359c45446436614bf7e6315c7d9673e8acb4e35ed19d')),
(bytes.fromhex('956F790DF08BB85A76AAEFA27FE874758BED9EDF9E9A670CD818BEB9B2885203B3FA11AEAA186513B5D6BB85A384D0D0EFB366CBC6051AAA86827AB74311F59C9BFC6C7079D5F17BD0819F522056738C721F40CF2361932590A3C5DC94CFD17A8CBC954A918AA858F4D804BAF7D3C1C4D7B8F077012FA170260B2C049056F3A5'), bytes.fromhex('ac93bb3c155c5f25b04c37a42d85291d7a9d2dd579b55db108209cf04c562797f87e3ecb9406059400929bb05b06f6afaa9ca5f011a78acb0c11d60c3d30ac51795ab57f119274488281bf3bfa93bf6b5b3f86964fcc9012b2398d68167bc687f1f5606239fb107e487fdd82383876b5ce214bc96f318d23573db66ceec20d11'))
]
rsa_key_priv = [
(None, bytes.fromhex('1665dcc81699a39a32fb88350dae2e6d33c54b1f4382e0e70fcc831d13b2f448436fa28cdbb65a1bcdabb03330e26bd29f7f6f2e2e8911bd89b1b39e8958d9dbb99100da17a914c383ffff460f5f811b5b02d229ef48b7df8c34eda2ecc07950c6ad0b9828c2178096673a22d7606198f6ab101ee623064b61affed5afb83d81')),
(None, bytes.fromhex('cf67aa3b1f26c5687f2755fff5296cf962d5cf50f3d5d84b06e0c964d43b967374f171b267070fa968068b9799706ac4e1169ba80fdfcc2be737fc6a678b999ed1dacc68fceb8dfe4284728805af2332301ffacc6752936cc10acfd6d35f75e94d32c0311bd4b54bb44eb03ed56c3cdc57bb3224419c79befcc03b630c5dc6e5')),
(None, bytes.fromhex('48ca9c49a5bfd11716779797298d2aa20d800be3de596b0cc8396ae4c7ff2eb0186ff09d355e6a80af3d90859c1a3f5815b97b58b94ab91868debe5be11cbf85df5f30fdd2ecc077336258ecc147f741e82b2183e08ee0f4035d078491fa5bd8d347906e7d819c1ab3032fbc1a2801bb783360d2323409ee0835507a0277b901')),
(None, bytes.fromhex('95dcc81819f8980b73780c4d7ed606e93983eabc59af7c87f225d802f8574c94b4ce749b7694701da10daf334b28d5e9a03fddfd866736a8b2777ea82c2eeb437be4a3667c3a0090c5f5f859f995882aa8f494410502a047c0c1b9801f49bb09bf42bae6ee8d211dfb8fc7b77100fb3513d8bca33f3acf96b00b8a619c70f891'))
]
# HMAC keys
hmac_key = bytes.fromhex('2106C0DEBA98CE3FA692E39D46F2ED0176E3CC08562363FACAD4ECDF9A6278348F6D633CFE22CA9220889723D2CFAEC232678DFECA836498ACFD3E3787465824')
hmac_key_whitelist12 = bytes.fromhex('61BDDD727E72BEDEAD3ADF7F3D2DF7A5167EB4C97C6C007C57BB948A64CD4E1C516BBDDB1DEB54E93427F931515E894E7FD97CE992440FEF6BB612216888D8EE')
hmac_key_whitelist34 = bytes.fromhex('852948F3A1BB1330935DB8C9A59AE830C4D04ADDA49281FD4FA132FA4605DE687BA7D75BC93AC88DCD253A173CC2D6E0D2E5B9FB49F94D05701029517AC58949')
def key_scrambler(keyX, keyY):
return rol((keyX ^ keyY) + 0xFFFEFB4E295902582A680F5F1A4F3E79, 42, 128).to_bytes(0x10, 'big')
def aes_ctr_block(key, counter, inp):
cipher = AES.new(key, AES.MODE_ECB)
stream = cipher.encrypt(counter)
out = bytearray(16)
for i in range(16):
out[i] = stream[15 - i] ^ inp[i]
# Increment counter: (semi) byte reverse ctr to u32[4], add with carry, then reverse back
n = []
for i in range(4):
n.append((counter[i * 4 + 0] << 24) | (counter[i * 4 + 1] << 16) | (counter[i * 4 + 2] << 8) | (counter[i * 4 + 3] << 0))
carry = 1
for i in range(3, -1, -1):
sm = (n[i] + carry) & 0xFFFFFFFF
if sm < n[i]:
carry = 1
else:
carry = 0
n[i] = sm
for i in range(4):
counter[i * 4 + 0] = (n[i] >> 24) & 0xFF
counter[i * 4 + 1] = (n[i] >> 16) & 0xFF
counter[i * 4 + 2] = (n[i] >> 8) & 0xFF
counter[i * 4 + 3] = (n[i] >> 0) & 0xFF
return bytes(out), counter
blowfish_key = ([0x59AA568E, 0x90D71155, 0x4DEABFFE, 0xBD0D7591, 0xF7853998, 0xD09CC358, 0xC4156FF1, 0x90F9E4C3, 0x8EC09B0E, 0x5DE18794, 0xB9072CBA, 0xA64F7574, 0xC1E31C86, 0xE6EDF809, 0x3BBB377A, 0x4EF0F092, 0xF655FA47, 0xFB1BC516, 0x06744E56, 0x20DDB6D1, 0x42CFCFF1, 0x557E1718, 0xA193FF09, 0xDA36A69A, 0x433DF465, 0xED40976C, 0xD5A6DD6D, 0x6C23BF94, 0xE751A668, 0x3CE8E665, 0xD6BC9E92, 0x782646A1, 0x73DCE536, 0x8ECDECA1, 0xF1EE8B68, 0xF4ACC1DC, 0xC8849531, 0xE8EDC75E, 0xE45A37CA, 0xEC55BE2A, 0xFCF64567, 0xA9B47D7D, 0x9B6EE92C, 0xFF3FEB69, 0xB72E68A8, 0x94EF7BBD, 0x88931566, 0x3AB77FFE, 0x1DC38908, 0xD77459FA, 0xAF91419E, 0x57D56784, 0xBA00E963, 0x58074DEC, 0xDFC6DA1E, 0x6252D914, 0xBC03C3B0, 0xA5FDB727, 0xDEB16F1B, 0x7C724ACD, 0x09E58270, 0xD39FB6D6, 0xA46A2FC2, 0x32BDB539, 0xE4EAB971, 0x1C706721, 0x9221ACF4, 0x9E63E85E, 0x8302CC0C, 0xF8F89E87, 0x89FC0385, 0xFACC7707, 0x445F4DE5, 0x19D312EE, 0xCAE1E0BF, 0x1EBEE712, 0x1F6A931E, 0x384BA79F, 0x81A97785, 0x0CC63902, 0x55D26256, 0x1985A638, 0x85E12D3C, 0x383B5BA0, 0x2418E929, 0x6C9FE44D, 0x4E235FB1, 0xE2A06F97, 0xB241D1EA, 0xDBA73781, 0xEB068D77, 0xC268FC5A, 0x65973358, 0xA1B8350F, 0xF425BC3B, 0x4F180F0E, 0x60253DD8, 0x771AD08A, 0xB0615716, 0x0B55F258, 0xB9915230, 0x33AB299B, 0x0362E5CC, 0xDF6E6286, 0x9D76E5DD, 0x6FCA3E75, 0xD8885806, 0x8DA458F5, 0xAA7CCE17, 0xDDDECA0A, 0x72876F29, 0x6C0CE9C0, 0x3D322E55, 0xF3A727DA, 0xFC860C9E, 0x3383B547, 0xEBE8F6C9, 0xF42472EE, 0xAFF8B559, 0x70068571, 0xBB3CBEBB, 0x2C24AD67, 0xBA42B9EE, 0x68EC0BE6, 0x5B260F2B, 0xB63A934F, 0x9FE69FB9, 0x1AA0B951, 0x1C8D6637, 0xD250CCAE, 0x10301660, 0x563B990E, 0x907B28DE, 0x93F41687, 0x1FD09BC2, 0x33422C2C, 0xF136C339, 0xF84FA41E, 0x0043B1AC, 0xDF08BBFE, 0x5E2ADC2A, 0x10F37BC5, 0x2F96C91D, 0x514FC0DE, 0x6E939A35, 0x19B858B5, 0x19BAAF2A, 0xB1B5B2FF, 0xC189BC3F, 0xD88F3407, 0x6360A5ED, 0xDBFF9EF5, 0x5B23C01B, 0x1396D42F, 0x07511BAC, 0x90727128, 0x6598E1FF, 0x6A9DE730, 0x6DB12C21, 0xFACBBC6A, 0x3C25E850, 0x5C53D8D5, 0xCBA25353, 0xA5643F78, 0x61771D8D, 0x16E4E4A1, 0x329C0052, 0x5F2AD7F5, 0x3CFD09D7, 0x1B3B9901, 0x4DDC91E4, 0x6DE89EA3, 0x18AD4327, 0xBAC15F37, 0xA61261F5, 0x1C630C25, 0x2D90F852, 0xCB2C374B, 0xDE1E6C36, 0x1D47F5DF, 0x87CA7998, 0x800959D7, 0x14FDF7F9, 0xF4CE6923, 0xD2F8C4EE, 0xA07EF836, 0x8E359345, 0x82AE0DFC, 0x65BCAAF5, 0x58A965BA, 0xC6084B63, 0xC33FA68A, 0xF4C19B8F, 0x02451B13, 0x78289FD6, 0x53B1C27E, 0x4E7117E7, 0x550962C7, 0xADD5911A, 0xC0FA494A, 0xEF00D6F6, 0xF1D0C940, 0x1BB1FD0E, 0xD395F1CD, 0x95600873, 0xD2E056FA, 0xD06551FD, 0xC448D1AA, 0x5ABACB8F, 0x7622E360, 0x6F4A3C86, 0x35EEE988, 0x9A4A3634, 0x74E36D3F, 0xE42A930B, 0xE2C6474D, 0xF2B68E78, 0x149161CF, 0xFAB61B39, 0xCA880C04, 0x65D33BD1, 0xC6DAE5F4, 0xE91A380F, 0xA5CA3229, 0x786C919D, 0xD8C18C3D, 0x6E824910, 0x384C95E3, 0xF169302E, 0x3EBFAF7D, 0x5E513C6A, 0x1504BD8F, 0xCFEB3FE0, 0xE0A7B33E, 0xF3F7D81D, 0x1574EF4E, 0x5BA01E3A, 0x45EC988B, 0xE40CFB77, 0xFDCFDE88, 0x4D421881, 0x140DE220, 0x4ECF0D3B, 0xC841369D, 0x99AB47CB, 0x55F07977, 0x3285A4E4, 0x1114428D, 0x038C76BA, 0x05CFE840, 0x47CFBDE7, 0x22E672CE, 0xA013E459, 0x5E68C253, 0x7A4D4B4C, 0xCDBFE2B0, 0xA36377F2, 0x1EC321CA, 0xD2B67B01, 0x790243EC, 0x6D989786, 0x274167E7, 0x04CF710E, 0xFCC83D32, 0x99354D2C, 0x94D782B5, 0x2E2073D8, 0xA4F9AE6C, 0xD61257E9, 0x44866A9E, 0xE0728497, 0xB38D5628, 0x66DBEC25, 0xBF011176, 0x9BE1438D, 0x6D0BFA3D, 0x45154AB4, 0xAC762A4A, 0xFB8DA503, 0xE436E6D9, 0xFDC12063, 0xE35C9A0E, 0x0F9949C6, 0x109A0847, 0xFF3DAA0C, 0x9F46575A, 0xE5C524C5, 0xF1CA1AA2, 0xB02978DD, 0x7A724954, 0xACC42204, 0x97A2A11A, 0x2F57FD9B, 0xAFC93010, 0x4AF45E52, 0xF8253248, 0xCB026C3B, 0xA7E3BDE9, 0x54D5BE46, 0x6BEA0B43, 0x131D6F9C, 0xF5EB0EBA, 0x284F9884, 0xB2199CFE, 0xA04AF607, 0xCC0C8F75, 0x6A16A11C, 0x4E4251DC, 0x17B0A42C, 0x868755F5, 0x7A5AD00D, 0x4B9FB9CB, 0xF3235BAA, 0x810E7456, 0x96BB6514, 0x3EB21753, 0x7E71F19B, 0xFD1C5CFE, 0xEE6B58C7, 0xB582ED14, 0x47B062E8, 0xAD349CE6, 0x12293B91, 0x2B83E65C, 0xD4F15B7F, 0xE058C829, 0xA41776A0, 0x959DB1AD, 0xA101A2CE, 0xD0A3141E, 0xB722989D, 0xCD7F8CB8, 0x0F5B5B36, 0x3FCECACE, 0x5B548BBD, 0xDE827EF1, 0xF9A030FE, 0xBDE73584, 0x291E418E, 0x553FF740, 0x23AA2D5A, 0xE5C4329E, 0xBF22B0C1, 0xE78C7D5D, 0x0B28B457, 0x8EE7563D, 0x1F351E98, 0xA90DD7B7, 0x20E28990, 0x04A756EA, 0x84166FFF, 0xA9385EA0, 0xAF2DC1B6, 0xC17772E1, 0x21C72F3F, 0x85514B83, 0xCA3350B1, 0x4C580C54, 0x7C70FE23, 0xEFC7C7AF, 0xAFBFE57B, 0x05906C7A, 0x9F66B9C6, 0x44D5996C, 0xD5AC74CE, 0x00494BCF, 0x5101DA24, 0xC542BA6F, 0x8A732011, 0xBC4A4FDB, 0xA64027BC, 0x93A330B2, 0xCC6E78A0, 0x287DE734, 0x114C008B, 0x043D937F, 0x2A3C6756, 0xADC5DD2A, 0x75E19602, 0x8D660ED8, 0xC183DF27, 0x42C44718, 0x24AC998B, 0x22286874, 0xB27E5819, 0x19DAD496, 0x3626C753, 0x37DB53A5, 0xD398B465, 0x80DE73CB, 0x977E5980, 0xF625606F, 0x77204CC7, 0x35C680E3, 0x562CBA62, 0xF756F963, 0x3EF9917B, 0x9C350204, 0xD83D35FD, 0xB785BA04, 0x197FB9E6, 0x6A65519E, 0xDE21ECF0, 0x6BFD4190, 0xDC32084D, 0x9B432A61, 0x5B3561C1, 0xFDA2DE30, 0xD393C60D, 0xAD76ACFB, 0xB0EE855F, 0xDE4E2BE8, 0x8F67A012, 0x003FCF04, 0xE4B12BA0, 0xDABB335A, 0x589B7C05, 0xEA2B7B40, 0x9CC3E099, 0x9EE09167, 0xA5636B9F, 0x15B63CDA, 0x17908F05, 0x7E617CC7, 0x25DFBBD6, 0x96BA45A8, 0x84A07D0F, 0x41DDBAE5, 0x5A093DE7, 0x2022C68E, 0x0DD5C575, 0x388C6E4F, 0xA042F75E, 0xB135E5FC, 0x9313582B, 0xA7E0FEFF, 0x1ADD3027, 0x9E69DD05, 0x18F7235D, 0x9C64BE47, 0xF0A8E1F5, 0xDE678ACC, 0x18ED4A76, 0xA0239655, 0xD08422CE, 0xE1E21180, 0x95610D75, 0x1286B93C, 0x109D4D39, 0x93427D83, 0xA5F4E4AA, 0x9B59225E, 0xD3FDADF9, 0xA0F2B270, 0x8629CD71, 0x6198B821, 0x155DF5DE, 0x4D652709, 0x8CEDD0C8, 0xE7ED0B0C, 0x139E78EA, 0xF83C10DA, 0xCDFCAF33, 0x9662319C, 0xB69DC87A, 0x35E6FF75, 0xA83098D4, 0xAACF9CEF, 0xDAB964E8, 0x3BA62FC1, 0xBD7E6BFC, 0x1AEF62AD, 0x905E7D29, 0x124D7686, 0x5C297C61, 0x1D1E6397, 0x21CD77BD, 0xC23245CA, 0x7ADC0B16, 0xA410AC37, 0xBAF5F6BC, 0x2666672B, 0xB82E22C0, 0xEA9078F0, 0x0D0F8069, 0x60D289A5, 0x1AB0CF5E, 0x576F79DC, 0xD82C5192, 0xD66241F9, 0xF726F059, 0x93E27682, 0x21F6AB7A, 0xD27B81CB, 0x8CE88777, 0x76CEF2AA, 0x00DCECD1, 0xC18DF842, 0x418C35D1, 0x7097F482, 0x2F3A2F4A, 0x188FAC41, 0xFA29C29D, 0x0AFA0C44, 0xDDEAC62B, 0xD32E28EE, 0xCA6E8490, 0xECAFF48F, 0xBDC7D12D, 0xF69AD200, 0xAA5C38C5, 0x11437CF4, 0x0DBD576D, 0x4262A5D8, 0x05A7E930, 0xC0819BFC, 0x30DA162F, 0x546108AA, 0xF7C01E4D, 0xF2D4ED5C, 0x9630AD9F, 0xC5E3F091, 0xFFF0B1E4, 0x937B6711, 0xBAEFB7F4, 0x29936D32, 0x1F88D16C, 0x7C5A7E0A, 0xEF6AE923, 0x2CDE4C68, 0x36CBAA1F, 0xD371CE31, 0x8B2B5116, 0xE665D130, 0xAFB8BE02, 0x216136BC, 0x197C0E9D, 0x9CD6A9C7, 0x5C2FB623, 0x4B643B99, 0x748351DA, 0x3EF8CF0F, 0xA37AFBAA, 0xD1E20905, 0x3AF5A861, 0x5159F6B3, 0x3DE9A3C7, 0x3AE6FF2D, 0x96AFE441, 0xB87DCADF, 0x42165CEE, 0xD09DA374, 0xA9AEFD6D, 0x3B15B989, 0x19A8F848, 0xFE3AF6D7, 0x444B9607, 0x374BF933, 0x624F0838, 0xFC02FC8D, 0x3D658302, 0xEDD74840, 0x51990A20, 0xB2DA9DCA, 0xBFB7CFA8, 0x32672F31, 0xA300E3CB, 0x097E0AB0, 0x7A347BFC, 0x1D978CA6, 0x17CB62C7, 0x28F4B821, 0xDB51C9EF, 0x69B6AC36, 0x907490B7, 0xDBCBFDDB, 0x1781ED94, 0x4DE54EE5, 0xF6014A99, 0x9F5EE045, 0x704145A2, 0x2B4ED6AB, 0xDC06152D, 0x48881743, 0x3994B43A, 0x23CEBBDA, 0x0EB05C1E, 0x0D0B318E, 0x9B048078, 0x751C9B97, 0xACC7ADDE, 0x2B7F48B2, 0x29AE7659, 0x27EE79B8, 0x8E30E7F2, 0x84444079, 0x25CE1387, 0x8EFA0818, 0x8D71ACEB, 0xF27CA669, 0x291BD802, 0xEA64407D, 0xA1B205D3, 0x2B9D98A4, 0x2CEEC92C, 0x525AD93E, 0xD4CC6BF5, 0x114A0A84, 0x4B6EA4AB, 0x164631B2, 0x84324343, 0xE3210933, 0x539D9360, 0xD418EF71, 0xC8D1972B, 0x2DA0E3C3, 0xB7545BA2, 0xBF92A048, 0x15EF8E25, 0x02493520, 0x9E1B52FA, 0xF9339931, 0x2C1B0492, 0x8D19DB7D, 0xAD6129E3, 0x5CB794A6, 0x8B2EC52E, 0xBDE060AE, 0xEA930864, 0x989E8EA1, 0x2EF1E031, 0x5787D477, 0x816DF5A6, 0x4C9B898D, 0x0896C596, 0xBE59CCBD, 0x587B2108, 0x19C05533, 0x80440D8E, 0x59F9E800, 0x5098A230, 0xA6FDA846, 0xC5056559, 0xE7251A17, 0x328AC02A, 0x157E6911, 0xE96DFF96, 0x5298A3FA, 0x437B3379, 0x56C4E327, 0x40D633EA, 0xAC874E74, 0xBBE052AB, 0x568AED3E, 0xD225B2BE, 0x584CDF0E, 0x8FCA57DC, 0x00FAB0C0, 0xF37B6E41, 0x1707CB08, 0xE3D8A504, 0xDB429967, 0x73D5D71F, 0x229EEA66, 0x5F447DF4, 0xBF50B23E, 0x2F9F7ACA, 0x80955983, 0x6905EC70, 0x711297AF, 0xDBFDE811, 0x448A6E09, 0x90D5598C, 0x6A65F9A9, 0x3D3C0CF3, 0x2FA0B18E, 0xF03F1663, 0xF6E88027, 0x64569994, 0x93C83600, 0x21EB7C41, 0x86AEB24B, 0x7DACAC90, 0x8B991825, 0xA40D9C96, 0x530CFA7E, 0x61BA7FCA, 0x617BBA2F, 0x962F7529, 0x84B732CA, 0x3B1FE657, 0x34F3F158, 0x61C904A2, 0x20EA77A7, 0x83ED3E14, 0x878F8286, 0x88C3F910, 0x7E03A433, 0xE04E97EF, 0x66919FCE, 0x85C8CA04, 0x3A8BF6C7, 0xDFEB7531, 0xF41A9A67, 0xC7B1D033, 0x97EAD252, 0xC381DB63, 0x64310F9E, 0x755FDEE7, 0x46011903, 0xE50BF89F, 0xAB4F1A1F, 0xE0B07596, 0xF2154963, 0xA7AE26E5, 0x41821B1E, 0xD08B2ECC, 0xF730B3B5, 0x1BD9E765, 0x1E603B74, 0xFA5203E9, 0x0F45878C, 0x1A4D0DB9, 0x90ECA359, 0xADA233FB, 0xD3ACF058, 0x0C6F27A9, 0x1B18CB5D, 0x70CD14D9, 0xE39F42F7, 0x823E4739, 0xE4A29E03, 0x7C2F5D18, 0x55206368, 0x38C80B3D, 0xF3C79172, 0x704C8A0D, 0xC0807DDE, 0xA37F0A54, 0xB5D04942, 0xC3276919, 0x1CBCF95E, 0x1619ABDB, 0x991E908C, 0x6EB91795, 0xADDE7093, 0x7F5F26B0, 0x9F86B382, 0x9D302419, 0x837D2070, 0x29E1B322, 0x99B5EF8F, 0x7A66BC86, 0x18853956, 0x9B5FF663, 0xC824BC54, 0xC3C3A327, 0xAD80A98F, 0x3B4BA008, 0xCCF9DE0B, 0x92A32679, 0x42A2D07C, 0xD42E8F63, 0x4BAF6B7A, 0x5899B2B4, 0x0155754A, 0xCA9DD785, 0xA828973D, 0xA63CD1F6, 0x97D41545, 0xC42548D5, 0xA61000A4, 0x3EC4B41D, 0x08F0F76D, 0x91C9C44E, 0xB5D54507, 0x3E053444, 0x14E1111E, 0xA2BA3718, 0xEA167858, 0x83FD9842, 0xD383AC77, 0x65C95B36, 0x8B9D7625, 0x5DFC8021, 0x0ED8CBC4, 0xCC594E85, 0x513BC0A8, 0x0B5D60A2, 0xC32F2E8A, 0x183C9D18, 0x0DD5A732, 0x72F0EFDF, 0xA4350975, 0x2FB0E0EC, 0xB22D54EB, 0x22016773, 0x612D008E, 0x2A59C5A0, 0xF1B42015, 0xEBE50B7D, 0x6B704564, 0x3AC6BF34, 0x6A3335F2, 0x88474D95, 0x3D767C56, 0x7A6A7248, 0xA92832F6, 0x25F52A52, 0x40704693, 0x4E8658DE, 0x11662FA6, 0x75BD2405, 0x3C5EF4BC, 0x88DA69D0, 0x9D7FFA6B, 0xF4505103, 0x26F6AA11, 0xA63D2AA3, 0x180EB10B, 0x8C5A3AC4, 0x14D39BEA, 0x2FF95FBC, 0x9A94922B, 0xAAF7620C, 0xF0F9CC20, 0x1B5B56ED, 0xE45FEFA0, 0x5DE2E750, 0x0D13927F, 0x7068813C, 0x5D711214, 0xBAE9F124, 0x70C3EA3A, 0x8E19AB4F, 0x5F2038CB, 0xD8913D47, 0x8AB8E081, 0x735719C4, 0xB6D76E01, 0xADB780B2, 0x44E7773A, 0x559F3677, 0x4C88696B, 0xC6672FBD, 0x370CF29F, 0x886EA6A0, 0xD75A53F3, 0xC0AA7BCA, 0xC307F408, 0xC9840C36, 0x4915718C, 0x606FD591, 0xC53A333B, 0xDE8CE0F4, 0x08426DF7, 0x3BAED006, 0xE51B6024, 0xC4AACF54, 0x0E78A6F9, 0x403BCAED, 0x5FA4D313, 0x6E0A593C, 0xDADBC66F, 0x8F89318C, 0x871EFE01, 0x165BAC1A, 0x62853961, 0xE14CAEAE, 0x85D95D9C, 0x2A6E6BEC, 0xEF2BC632, 0xD6627E46, 0x67E86F4A, 0x500575DA, 0xE06B47B6, 0x2A48563E, 0x2218FBF5, 0x66F142D6, 0xF33D26C8, 0x44EAA79F, 0x90D88FEB, 0x455099F8, 0x865F7003, 0x89060892, 0x026A9390, 0xCEF2B506, 0x781E961D, 0xA2202790, 0xFC075084, 0xF819D0B1, 0x0C75B63B, 0xB2AA7334, 0x49C9B2C2, 0x587E4019, 0xA6086B9E, 0x87CE7A27, 0x3D7EE3E4, 0x127C3924, 0x168097BB, 0x949EA60F, 0x5F42A1CA, 0x37A0BE1C, 0x4F62686A, 0x501E77E2, 0xB6DFA889, 0xDF989B80, 0xC200216A, 0xF682B35F, 0x8B9868E1, 0x76EF068C, 0x2407D2E5, 0x86C1C026, 0x942D96B1, 0xA47711CB, 0xA9F946E8, 0xFD91619D, 0xCED12427, 0xBBAE6804, 0x44C94469, 0x5205104D, 0x96569869, 0x4649C275, 0xB9D81C46, 0xDC718671, 0x07EA185D, 0x7C3F8197, 0xFCC888E4, 0xE75EB2F8, 0x041714CF, 0x244C351E, 0x0DBAF60D, 0x291C3C5A, 0x0FD0F8F8, 0xDBA6A5F2, 0x833DA016, 0x5DF4B7C0, 0xC5F10F09, 0x7D6A24F0, 0x94037DC0, 0x9661A744, 0xE2A340A5, 0x00061345, 0xBA60C315, 0x756AE6D9, 0x21371580, 0xFD68DFAB, 0x9FDECF4A, 0x98F8A927, 0xD32D3D5C, 0xDCFF8C61, 0x4D25C8DF, 0x66F6DEF0, 0x215A2736, 0x381FFE89, 0x33524E99, 0x559BD04F, 0x15BA91DD, 0x95EB5718, 0xC4218624, 0x6738F02F, 0xD2660B92, 0xB9C3CB8E, 0x7F6C44BC, 0xCB457151, 0x6135F29F, 0xBFF28F5A, 0xDBAA5420, 0x1D52CE89, 0xD4E77975, 0xA7FF1F6A, 0xFDB956EE, 0xCA2C9FF3, 0x6DDFCE96, 0x0CAF2C2C, 0x7D35795D, 0x43BB27AF, 0x07179A67, 0xDE3B35F1, 0xD99892F8, 0x3D35F125, 0xF815CC6F, 0x499EBA52, 0xD876718D, 0x902C733F, 0xEFA2EF43, 0x192D83B9, 0xDEC63300, 0xD99D5058, 0xA7AA07A6, 0x818C1BE7, 0x9A3F114C, 0xEF9607B3, 0x483E952E, 0xB1272DF9, 0x5049917E, 0x91D2CCF0, 0x36E8CD69, 0x056850E6, 0x4DBED755, 0xD5D2E496, 0xD0A81B4B, 0x2854CB95, 0x4CB5E71C, 0x952E11DA, 0x300E87FE, 0x5E348059, 0x9D700948, 0x9EE83112, 0x3FE20735, 0x74794368, 0x42850985, 0x42995A92, 0x8CE9146C, 0xF306502A, 0x6DD8D506, 0xDC8C4D60, 0x84986AF6, 0x30B906E3, 0xCD75D7AA, 0xBC568D2F, 0x6B0D2E26, 0x408608F5, 0xC6EE12D6, 0x06597FA6, 0xAC3FEF15, 0xD6205521, 0xA929DBF4, 0x1FA6793C, 0x13F0327F, 0x25277A64, 0xE1643B86, 0x144EFD29, 0xBC6E9F1B, 0xAADFE377, 0xD7B87F61, 0x2FBCEAFE, 0x18C65491, 0x85AA55A7, 0xCA008F56, 0xAFA84902, 0xCBBE205A], [0x69635205, 0x1F420B04, 0x6BE1DA04, 0xFA2E2203, 0x5735EB05, 0xE1EB8900, 0x753CE103, 0x6D8BBD02, 0x69601E07, 0xC5B00604, 0x4E813707, 0x207C3504, 0x4305E706, 0x25B3D602, 0xDC2EF405, 0x08A45F07, 0x1FB68C05, 0x15B10500, 0xD784FB04, 0x37598300, 0xB0694D07, 0xF82E0903, 0xAA77C402, 0x663C6302, 0xEB791402, 0x9072BE02, 0xE34F2504, 0xDE181A04, 0x9E121100, 0xF3099201, 0xA3513705, 0x106DB402, 0xB49F8102, 0xA52F8B00, 0xF8D12007, 0xA2C71403, 0x7BAEB904, 0x28801604, 0x2F74AD01, 0x7495AA02, 0x0058A905, 0xA50D7A04, 0x93F07902, 0x90A8FA06, 0xBDA9A306, 0xAB421106, 0xB56BD302, 0xCBB8D507, 0x7F14D501, 0xF2B48501, 0xCE9C3204, 0xD8B5B104, 0x403AE106, 0x8C89F004, 0x07579B05, 0xD89F2D07, 0x63A9A604, 0x44C07105, 0x951D0B05, 0x98DEB806, 0xFFCA5302, 0xD5930F04, 0xA5E94D02, 0xBD596101, 0x1E4C1604, 0x0F9C0306, 0x3ABB6201, 0x5F6F7A03, 0x801F3E02, 0x47DCBE01, 0xC42CE402, 0xD31ABA02, 0x4ACD9F00, 0x649AA001, 0x2FF7D503, 0xF7162F00, 0xC2231506, 0x98DE9E01, 0x214EFB02, 0x82BA4A02, 0x4B325F03, 0x6D183B04, 0xBAD06F04, 0x7D4FD803, 0x5F9C5101, 0x37C64F05, 0x65314406, 0x65145900, 0x6A85D407, 0xF147C805, 0xA2E74907, 0xEC807D01, 0x2FBF1101, 0xBE20C902, 0x2356D806, 0x93DF4A06, 0xCC0C2603, 0x8DF2C002, 0x0CBE5B00, 0x5EF37103, 0x19714000, 0x7B5C0706, 0xC26DCB06, 0x12CB3100, 0xB50D2205, 0xD935D203, 0x35EB3607, 0x8C441607, 0xE9E4B902, 0xD808C406, 0x02D98202, 0xA3862505, 0x7FA47507, 0x0BA16C05, 0x4F168F02, 0x48593603, 0x4DDBBB07, 0xC7174203, 0xDBF4FD00, 0x82BE7802, 0xE32E6B05, 0xF4573A00, 0xDA446E02, 0xDFD68705, 0x81B39906, 0xDD58DD05, 0x4BC39900, 0x4F33FE07, 0xA1821606, 0xDC485F07, 0x1059A905, 0xF2D2C807, 0x3EF10107, 0x1421F901, 0xEB551F05, 0x958B1503, 0xEBCBA406, 0xD5C78806, 0x1E633904, 0xFE486400, 0x3F7BAB01, 0xB0D3DC03, 0x5DB13507, 0x145A0401, 0xD0F47C04, 0x19E1BF01, 0xD4765906, 0x8742BF06, 0xBFD25400, 0x1A287E03, 0x3EDC7404, 0x33F5DD01, 0x9E24FD07, 0x5CFF9606, 0xEF83FC06, 0x86598900, 0x53AD7F07, 0x75D4A002, 0x47CF8905, 0x0D066304, 0x538CF504, 0x84018C01, 0x7FEF1604, 0xE7B84801, 0x465F6600, 0x0E5FB106, 0xB376DD07, 0xBE2B5907, 0xF952C702, 0x9A635B03, 0xAB61B507, 0xC1025A05, 0xF4872C03, 0xC9F84D07, 0x087EDE04, 0xD09D7701, 0x83A1B004, 0xF173CD02, 0x6E105C01, 0xBCEB0E07, 0x03BB5500, 0xA21F6502, 0xD36DCE06, 0xAC3B5B06, 0x618AB105, 0x59358401, 0x0A60F100, 0x93285B03, 0x0FBA1901, 0x4CE21103, 0xDCA17600, 0x86545E07, 0x671C6502, 0xB2FAB002, 0x3AED9C02, 0xABDDE903, 0x3754B303, 0x6D0DD303, 0x08996203, 0x3C250B07, 0x6EFD0304, 0x1BAE3106, 0x5BE5C604, 0x46EACF05, 0x3982F700, 0x561EC304, 0xEA48AC02, 0x9357DA02, 0x80EED707, 0xD08DA501, 0x8EBC4004, 0x58A97F04, 0xAE20A104, 0x2F8CA407, 0x31D69004, 0x1B5C2004, 0xE1914407, 0x3787DC03, 0x917BAA05, 0xA0498102, 0x6853D102, 0xB257B802, 0x71203503, 0x3F2B3F01, 0x3422A302, 0x5F5AAD00, 0x07BBC102, 0xA8B14607, 0xC51B6F01, 0x53EC8E00, 0x74631F01, 0xF8DE3602, 0x36F1F501, 0x06125E01, 0xF615E807, 0xC6792804, 0x7DD53A03, 0x2A445805, 0xF1F94302, 0x9107B500, 0xED2B6304, 0x46E78C00, 0xB947BA02, 0x3D95DC04, 0x20C53002, 0x448A8B02, 0xAD4A4E03, 0x4A40F405, 0x9A2FC005, 0x98209C04, 0x118F7305, 0xBB1F3407, 0xDA5F8401, 0x1FD03E04, 0x07A39704, 0x98F95F05, 0x28D4DD04, 0xA4FDDD05, 0x722F4407, 0x9D220706, 0x16D12F05, 0xD328E500, 0xAAD7E301, 0x09BAEB02, 0x52C2E306, 0x6770F104, 0xBB220607, 0x0B860803, 0x5B049D03, 0x4888DD04, 0x5D10D901, 0xAAC98903, 0xAE6AB000, 0xACCA4D03, 0xE5E8C501, 0x63468302, 0xDB04BC07, 0x430F6C04, 0x2C5C7905, 0xD0A9C300, 0x6D649806, 0xDAE74104, 0x07EC0401, 0xC409CF04, 0x1F3BFA01, 0x18A8A307, 0x2F49C300, 0xC5419E05, 0xCC910C02, 0x155DF404, 0x2F536204, 0x6BB0B005, 0x777FB703, 0xFD081207, 0x1CB0BD00, 0x86938A06, 0x104C7F04, 0xF0A72800, 0x1075A206, 0x432B6F05, 0x4C760500, 0x95916E05, 0x7F996702, 0x98880104, 0x95EE3505, 0x59750207, 0xB6917406, 0x0942F302, 0xBB474E03, 0xE692E402, 0x031C3A01, 0xC4A55302, 0x4AE86406, 0xE6A56900, 0x8F2E0D00, 0xA8DAC406, 0x7487FA06, 0xC8A4D304, 0x17C3AB02, 0x60401405, 0xE9201102, 0x714B2E07, 0xAF253C07, 0x7E409105, 0x5063D900, 0x1D7BDF02, 0x1F232500, 0x60E6D603, 0xBF62DC03, 0x618BF206, 0x3D87AF02, 0x4CBF7D07, 0x0E32BC06, 0x5BB2D907, 0x00F19F07, 0xBC045303, 0x256CFB06, 0xF0047E01, 0xDA79B804, 0x68274702, 0x7854B006, 0x6D29F907, 0x41A2D306, 0xEED0E900, 0x27FFC406, 0xD9655F05, 0x93105502, 0x17790604, 0x4D528B03, 0x235D4007, 0xBEDC3F05, 0x3DA7A604, 0x189F5203, 0x50CA1D04, 0x3E929A06, 0x36445606, 0xE0A43C00, 0xB622E407, 0xDA379D05, 0x6481E406, 0x88BA3701, 0x55938B03, 0x461D8E00, 0xEA265400, 0x2474B606, 0x1985C502, 0xE52FAF04, 0x6FFC3200, 0x04D96E00, 0xC2BD9605, 0xF2291A06, 0x039D3A02, 0x069E4300, 0xD28D3400, 0xCEF8DC01, 0xE9885607, 0x0A9ED204, 0x8C44BD03, 0xF397AB05, 0xBBE30B05, 0x7473C005, 0x6CB4BE01, 0x6C665D03, 0xFFA7A705, 0x8AE32703, 0x3D2A8005, 0x43D04501, 0x08FF4404, 0x90E0C203, 0xABF12E04, 0x7BD52006, 0x13E0F607, 0x30A5FB06, 0xA8140C03, 0x385A2101, 0x4A91BE03, 0xD2B3FF05, 0xDC788402, 0x4B562607, 0x657D5300, 0xDE616100, 0x2BB0AE07, 0x8E6D0D02, 0x66FAC401, 0x0025F105, 0xEF686804, 0x3B4F1702, 0x33552502, 0x36E41A07, 0xF7544A01, 0x3433DB07, 0x53DA1B04, 0x46D98302, 0xDA303105, 0x60A6AB01, 0x560D3607, 0x5C855600, 0xBD94CE00, 0xD9CD0604, 0x08E0E606, 0xE0364D00, 0x86621C05, 0x6E347002, 0x6909AD05, 0x74E2D007, 0x1E99E500, 0x21B28602, 0xCA196305, 0x0BE18400, 0x59BD0C05, 0x39D58306, 0xAA034B03, 0xB5DB9A06, 0xD2163F01, 0x2A11EA01, 0xB80D7C03, 0x66920F07, 0xC1E56B02, 0x7CE4E404, 0x74C11D02, 0x68439F04, 0x2BA50B03, 0x25E8A704, 0x22918602, 0x50689802, 0x55175002, 0x069CB903, 0xB80E9600, 0x1FFEDA07, 0x44F6C103, 0x28E82304, 0x384A2C03, 0x48F70206, 0x5E62AA06, 0x50795807, 0xF04B9602, 0x33B6A603, 0x347E6203, 0xE474BF03, 0x2F2ADA03, 0x40B4AA04, 0x13810201, 0x5C0A8603, 0x76458704, 0xED318C07, 0x9CBC4800, 0x42485401, 0xEA229901, 0x3234D103, 0x02462E07, 0x387F9405, 0xD9595004, 0xB1B4BC03, 0x6E19D104, 0x7FA33E00, 0x79B61A03, 0x41499F04, 0x999DB203, 0x56538F04, 0x4BCD7607, 0x85BA1303, 0xA3BB0002, 0x81ABB800, 0x64C35A00, 0x4FD95404, 0x8AFA9700, 0xF26FCF06, 0x50605902, 0x64E34205, 0x46F0CB00, 0x4A62D903, 0x0785B605, 0xA161FC04, 0x735ABE05, 0xF7CF3A02, 0xE3CFCF06, 0xBA9F6302, 0x8F3C7B05, 0x6CFE7C01, 0xD394CB01, 0x9BD62803, 0xE7FEEC02, 0xF0580207, 0xB6991702, 0xCBB4FE02, 0x62A31105, 0xABC68900, 0xD405A306, 0x52A8B805, 0x8C133102, 0xB50AC303, 0x0D513E04, 0x49525606, 0xF4DC2104, 0x5788D504, 0x5806D105, 0x69A8EE05, 0x1D4D4004, 0x8F0C0E01, 0x114FB604, 0x1E885E00, 0x90A88306, 0x17071B03, 0x6184A302, 0x9B6CEB01, 0xB8E35C05, 0x3D731404, 0x2F600C06, 0xFF33F000, 0x337B1605, 0x78DCA904, 0x24F37700, 0x27157903, 0x09632A06, 0x11162903, 0x18982F02, 0xDE2B4507, 0x6827F906, 0xA65D0C01, 0x65506707, 0x9AB03203, 0x09608500, 0x88379902, 0x491EF806, 0x92CA3600, 0xEA2EAA07, 0x2FBD5804, 0xACD84D00, 0x7EEC6B02, 0x64862703, 0xCF815507, 0x2163E901, 0x6CEE1301, 0xCB3F3004, 0xCAF34202, 0xDD8BB000, 0xF85C0F05, 0x97A10405, 0xFB5BFE07, 0x0BF9BD07, 0xB15BC601, 0x36149200, 0xF5027200, 0x4942CA04, 0x9EB64F03, 0x7BDB8302, 0x1AC6C703, 0x14EAB306, 0x5A887B07, 0x312D7507, 0xC8D17E03, 0x3DCEA504, 0x95F9D306, 0x4BC2DC00, 0xD0727004, 0xDB66C101, 0x47068601, 0x65934807, 0x885FEE00, 0x82883F06, 0x9871D706, 0x90A54501, 0x7A189102, 0x06466E00, 0xA6509506, 0x8C4C2206, 0xCEB18B06, 0x5D9F5101, 0x83A8F101, 0x85933006, 0xE253C606, 0x476EAB01, 0x1ED04105, 0x6918A200, 0xFA428F03, 0xE5BCF804, 0x0734AC07, 0xB5C39F04, 0x2B90F407, 0x7592CF03, 0x3D6F5205, 0x238BE205, 0x3AEAEE00, 0x332C9803, 0x82421204, 0x50F29603, 0x4CA19501, 0xAE5E2E07, 0x17E7E600, 0x5EC83D00, 0xF86F8B03, 0xFEB6C704, 0x3B856F07, 0x78A9BA05, 0x53DF0E03, 0xABAEF104, 0xB0D1A303, 0x9DBA0702, 0x89819203, 0xFD3D6E00, 0x63DB2E01, 0xC3162106, 0x5B308607, 0xAD3F5C06, 0x9BE44A04, 0x8D133104, 0xC6638906, 0x8CC0CD07, 0xEECB7901, 0xB223E804, 0xC619F903, 0xF160B304, 0x3CACE506, 0x34C34005, 0x2C10A906, 0x09B51C06, 0x36853B01, 0xD6B3D500, 0x808C8304, 0xA8086306, 0xEAE76A07, 0x8A961306, 0x4EC14E05, 0x5408BC05, 0xA9024603, 0x5CB58F06, 0x5BA5D504, 0xB018FC02, 0x709B4B04, 0xAF28BF05, 0xF289FE07, 0x7A205204, 0x4FAAAF03, 0xA8FE8802, 0x0CC62604, 0x1D6F4D03, 0x74A23E05, 0x1E63F506, 0x3EAF4903, 0x15BC8A04, 0x37096E02, 0x8B9BC603, 0xDE94CA03, 0x846DF302, 0x6AC9AB01, 0xE1C9C501, 0xA6C1B305, 0x4BE12500, 0xD80F3E03, 0xEFBDBA07, 0x80C7FF06, 0x951EED02, 0x6425B904, 0x38425B07, 0x49EF8F07, 0x4B02A104, 0x246CAA00, 0x320C3101, 0x0D8D7B06, 0xEC389D05, 0x03164106, 0x504F9D03, 0x1B470300, 0x451F2F00, 0xF8F17A02, 0x50681E06, 0x34B75A05, 0xE3996E03, 0x75440107, 0xC3109B06, 0x1AE58B06, 0xC506C002, 0xB8E78802, 0xDB455B07, 0x651C6F01, 0x485E4603, 0xCA683C04, 0x8D7EE705, 0x31F75100, 0xFFC22D01, 0x1419C101, 0xA1A6AD02, 0x106B4502, 0x9F046503, 0xA6803F01, 0x28ADB403, 0xE280C401, 0xDBF6C206, 0x84205106, 0x11DCE500, 0x1519DC02, 0x96068401, 0xA0874003, 0x200CC407, 0x033E9603, 0xE1AE2B06, 0x5695BC07, 0x4420DF02, 0xEE239800, 0xB0717602, 0x06081C05, 0x63E47904, 0x4B414102, 0x2B582405, 0x707E0706, 0x05999602, 0x78054801, 0x0F23AF02, 0x24D8A907, 0x395F9503, 0x64614104, 0x8D765E03, 0x41EBDB02, 0x5EC21A03, 0xA13DB401, 0xCCF30F04, 0x423BB902, 0x63CDD000, 0x3740C305, 0x9D7FE105, 0x6B00D406, 0x74622106, 0xF26C5300, 0x02943C00, 0xCA6B6B00, 0x5A97C402, 0xA4102B02, 0x25197105, 0x98CE5501, 0x676B8C03, 0x0C6AA002, 0x1CAC0F06, 0x255BAB02, 0xA3B98F03, 0xEC611201, 0xB591A300, 0x7186DB07, 0x1C63FA04, 0xBEEF3907, 0x2AC1ED06, 0x70C7F404, 0x14D13D00, 0x038C8800, 0x5CF9FF00, 0x4EBDEF02, 0xCC2C9C02, 0xC3F3D302, 0x3C859B02, 0x103C6002, 0x1D43F800, 0xE40B2503, 0xF8FE6004, 0xD5E25002, 0x2E723904, 0x6E3A5102, 0xCD2FD805, 0xC2944806, 0x69274905, 0x80662603, 0x75047E04, 0xB60EFA02, 0x613CBA06, 0xA9A97F04, 0xFEA9C102, 0xB7CF5A02, 0xD25E9802, 0xAC1B4404, 0x186E0D06, 0xD7A4D504, 0x2E7F2A04, 0xAB2D9006, 0x207BE800, 0xCE6E7F01, 0x2A313401, 0xCE7C4D05, 0x489FC404, 0xA03BE303, 0xF10C9900, 0xBD21BD00, 0x0D6B4601, 0x78E20207, 0x6CD08E03, 0xB97EBC04, 0xF79BD507, 0x39205704, 0x14EFC002, 0xDCDEB300, 0x1BB76005, 0x973DEE04, 0xE1168801, 0x9B5D1806, 0x3E1ED901, 0x2EA03303, 0x2F198702, 0xC52C0502, 0xF502E706, 0xD7854304, 0xECD8C003, 0x72A7EA03, 0x84D69504, 0xADBC9C02, 0xF4B41D05, 0x8ABD1304, 0xE4067B05, 0x620B6502, 0x94316804, 0x28CECD07, 0x815B8105, 0x0C63BF02, 0xCDC80804, 0x9CD9F107, 0x4DDBD904, 0xA1FCE207, 0xBE157F06, 0xD2324C03, 0x6FE0A507, 0x42D64903, 0x23534706, 0xAB4E1005, 0x6244FD04, 0x61047503, 0x43D9B102, 0xC7A91E06, 0x7DC97B06, 0x6B9A6102, 0xA7F15406, 0x70E65301, 0xC097E500, 0xAB34F205, 0x59C4F704, 0x57D56D02, 0x01FCA006, 0x13E30507, 0xFE6D0505, 0x24D58D01, 0xBE7E3F03, 0x2E5A0702, 0xF299BF05, 0x7810AA00, 0x2EB8C600, 0x59A59401, 0xBB62AC06, 0x80741803, 0xBE164302, 0x4C675B03, 0xDA789C06, 0x5BBE9806, 0xF3539307, 0xD43CAE02, 0xD4C9CA00, 0x93BF6D00, 0x6FCE1B06, 0x884CB704, 0x3E11E007, 0x4CC73E01, 0xBED65A03, 0x5D216003, 0xE0B0F307, 0x6A7BB301, 0xCCA0B205, 0x5D2FD303, 0x4DB96B01, 0xD174A301, 0x73F9A806, 0x19AC8101, 0x016B1704, 0x8EC98507, 0x53DB1300, 0xCE475207, 0x49FF6707, 0x3494B200, 0xB3DE1F06, 0xF07CC505, 0xA2FDD107, 0xE5680903, 0xA41BC001, 0x74C3BA03, 0xE1CD4407, 0xBACDE907, 0x1AE79901, 0xEA812401, 0x2E71D107, 0xCB4CCD01, 0x6D7B3701, 0x0E5B6005, 0xD2EA2F00, 0x7B33B202, 0x302D6207, 0xD94AA000, 0x46BED302, 0x4929F007, 0x61A22404, 0xB5856507, 0xBE168807, 0x17411507, 0x4218C101, 0xF9290005, 0x4E8B9207, 0x7699F804, 0x2C085804, 0x5DCF1901, 0x8A4CB501, 0x2C28F504, 0x825F0902, 0x26DBDF01, 0x89BCB706, 0x56A68205, 0x3D625A07, 0x94B7BD04, 0x62A93706, 0x2D667A05, 0xC78E6B04, 0x0F682106, 0xA7755102, 0x4ACB2100, 0x15329B00, 0xAD1C5F01, 0xDD9B5806, 0x8B16C006, 0xF9B76203, 0x82073007, 0x5323B206, 0x88075406, 0x27031601, 0x11873E02, 0x33400105, 0xD7050400, 0xD24A8C02, 0x42D23602, 0x21E7F205, 0x0AF67C06, 0xCD8ABB05, 0x1AEF6000, 0x8E70AC05, 0x7DBCE207, 0x8697C907, 0x6092E400, 0x1A41E501, 0xFB517D04, 0xA801CD05, 0xEB811007, 0x640FCD04, 0xD2189803, 0x6C093303, 0xD186B604, 0x33D69903, 0x3DC77407, 0x4A7ECE07, 0x45FBE803, 0x9604F007, 0x22969007, 0xB7017704, 0xD1C82705, 0x8D31E907, 0x069C6200, 0x7398C700, 0x1C1C4C02, 0x97B74307, 0x62E6B105, 0x002F5401, 0x8C05AC02, 0x04AE7801, 0x07DC5301, 0xF517D607, 0xB322BC05, 0xD6584605, 0xD128E307, 0x50977604, 0x6ACC1D04, 0x9F5EC504, 0x2F565F02, 0xD9D32A01, 0x246CE107, 0xC2779107, 0xEFA8FC04, 0x8633D902, 0x691E1605, 0x9D9DB306, 0xE0998600, 0x9F510504, 0xBAB69F02, 0xFF338F03, 0x1DED4304, 0x088C6004, 0x876B4202, 0x78A06206, 0xEC48A705, 0xCEA60503, 0x1B84E104, 0x26FE7101, 0xFADC7A05, 0x0A6CF400, 0xC82E0500, 0x84091F05, 0xFF85E306, 0x103F1701, 0xF26D1605, 0xE83A7907, 0x93333C01, 0xF5356100, 0x0009C006, 0x63F7D504, 0x3D99C702, 0xEE9A0407, 0xBDF27202, 0xB55C1D02, 0xFE3EA505, 0xB16A4606, 0x2BDD7F07, 0xA36D9703, 0xC3BAEE05, 0x9BE21503, 0x978D0D00, 0x2F29E000, 0x304AAC01, 0xEA68D405, 0x7A2EF907, 0xB80E7904, 0xE16D4100, 0x9C26C001, 0xC04F5606, 0xD18F4D06])