From c4edd957b43f95cdb2e368288ab422972b689003 Mon Sep 17 00:00:00 2001 From: Richard Moore Date: Fri, 22 Jun 2018 03:10:59 -0400 Subject: [PATCH] Updated dist files. --- dist/ethers.js | 1 - dist/ethers.min.js | 2 +- dist/ethers.min.js.map | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/dist/ethers.js b/dist/ethers.js index 7a3883ee9..d01e9e6fa 100644 --- a/dist/ethers.js +++ b/dist/ethers.js @@ -8340,7 +8340,6 @@ module.exports = { }; var limit = parseInt(1000 / r); // Trick from scrypt-async; if there is a setImmediate shim in place, use it - console.log('SS2', typeof(setImmediate), window); var nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout; // This is really all I changed; making scryptsy a state machine so we occasionally diff --git a/dist/ethers.min.js b/dist/ethers.min.js index 0e6509a0e..ef601476f 100644 --- a/dist/ethers.min.js +++ b/dist/ethers.min.js @@ -1,2 +1,2 @@ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ethers=t()}}(function(){return function o(s,a,u){function h(e,t){if(!a[e]){if(!s[e]){var r="function"==typeof require&&require;if(!t&&r)return r(e,!0);if(l)return l(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var i=a[e]={exports:{}};s[e][0].call(i.exports,function(t){return h(s[e][1][t]||t)},i,i.exports,o,s,a,u)}return a[e].exports}for(var l="function"==typeof require&&require,t=0;t>4]+i[15&n])}return e.join("")}}),f={16:10,24:12,32:14},c=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],d=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],h=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],l=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],v=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],y=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],m=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],g=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],b=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],w=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],_=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],M=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],A=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],k=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function S(t){for(var e=[],r=0;r>2,this._Ke[r][e%4]=o[e],this._Kd[t-r][e%4]=o[e];for(var s,a=0,u=i;u>16&255]<<24^d[s>>8&255]<<16^d[255&s]<<8^d[s>>24&255]^c[a]<<24,a+=1,8!=i)for(e=1;e>8&255]<<8^d[s>>16&255]<<16^d[s>>24&255]<<24;for(e=i/2+1;e>2,l=u%4,this._Ke[h][l]=o[e],this._Kd[t-h][l]=o[e++],u++}for(var h=1;h>24&255]^M[s>>16&255]^A[s>>8&255]^k[255&s]},E.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=S(t),i=0;i<4;i++)n[i]^=this._Ke[0][i];for(var o=1;o>24&255]^p[n[(i+1)%4]>>16&255]^v[n[(i+2)%4]>>8&255]^y[255&n[(i+3)%4]]^this._Ke[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Ke[e][i],a[4*i]=255&(d[n[i]>>24&255]^s>>24),a[4*i+1]=255&(d[n[(i+1)%4]>>16&255]^s>>16),a[4*i+2]=255&(d[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(d[255&n[(i+3)%4]]^s);return a},E.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=S(t),i=0;i<4;i++)n[i]^=this._Kd[0][i];for(var o=1;o>24&255]^g[n[(i+3)%4]>>16&255]^b[n[(i+2)%4]>>8&255]^w[255&n[(i+1)%4]]^this._Kd[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Kd[e][i],a[4*i]=255&(h[n[i]>>24&255]^s>>24),a[4*i+1]=255&(h[n[(i+3)%4]>>16&255]^s>>16),a[4*i+2]=255&(h[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(h[255&n[(i+1)%4]]^s);return a};var P=function(t){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new E(t)};P.prototype.encrypt=function(t){if((t=o(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=u(t.length),r=u(16),n=0;n>=8},T.prototype.setBytes=function(t){if(16!=(t=o(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},T.prototype.increment=function(){for(var t=15;0<=t;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var R=function(t,e){if(!(this instanceof R))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof T||(e=new T(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new E(t)};R.prototype.encrypt=function(t){for(var e=o(t,!0),r=0;r>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);else if("le"===r)for(i=n=0;n>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);return this.strip()},m.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r>>26-o&4194303,26<=(o+=24)&&(o-=26,n++);r+6!==e&&(i=s(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},m.prototype._parseBase=function(t,e,r){this.words=[0];for(var n=0,i=this.length=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,s=o%n,a=Math.min(o,o-s)+r,u=0,h=r;h"};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function i(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;n=(r.length=n)-1|0;var i=0|t.words[0],o=0|e.words[0],s=i*o,a=67108863&s,u=s/67108864|0;r.words[0]=a;for(var h=1;h>>26,f=67108863&u,c=Math.min(h,e.length-1),d=Math.max(0,h-t.length+1);d<=c;d++){var p=h-d|0;l+=(s=(i=0|t.words[p])*(o=0|e.words[d])+f)/67108864|0,f=67108863&s}r.words[h]=0|f,u=0|l}return 0!==u?r.words[h]=0|u:r.length--,r.strip()}m.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,i=0,o=0;o>>24-n&16777215)||o!==this.length-1?c[6-a.length]+a+r:a+r,26<=(n+=2)&&(n-=26,o--)}for(0!==i&&(r=i.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&2<=t&&t<=36){var u=d[t],h=p[t];r="";var l=this.clone();for(l.negative=0;!l.isZero();){var f=l.modn(h).toString(t);r=(l=l.idivn(h)).isZero()?f+r:c[u-f.length]+f+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}y(!1,"Base should be between 2 and 36")},m.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:2>>=13),64<=e&&(r+=7,e>>>=7),8<=e&&(r+=4,e>>>=4),2<=e&&(r+=2,e>>>=2),r+e},m.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},m.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},m.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},m.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},m.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},m.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},m.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},m.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},m.prototype.inotn=function(t){y("number"==typeof t&&0<=t);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),0>26-r),this.strip()},m.prototype.notn=function(t){return this.clone().inotn(t)},m.prototype.setn=function(t,e){y("number"==typeof t&&0<=t);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},m.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;0>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],p=8191&d,v=d>>>13,y=0|s[2],m=8191&y,g=y>>>13,b=0|s[3],w=8191&b,_=b>>>13,M=0|s[4],A=8191&M,k=M>>>13,S=0|s[5],E=8191&S,P=S>>>13,N=0|s[6],x=8191&N,I=N>>>13,T=0|s[7],R=8191&T,O=T>>>13,C=0|s[8],B=8191&C,L=C>>>13,D=0|s[9],U=8191&D,j=D>>>13,F=0|a[0],G=8191&F,z=F>>>13,H=0|a[1],V=8191&H,q=H>>>13,K=0|a[2],W=8191&K,J=K>>>13,Z=0|a[3],$=8191&Z,X=Z>>>13,Y=0|a[4],Q=8191&Y,tt=Y>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],ot=8191&it,st=it>>>13,at=0|a[7],ut=8191&at,ht=at>>>13,lt=0|a[8],ft=8191<,ct=lt>>>13,dt=0|a[9],pt=8191&dt,vt=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var yt=(h+(n=Math.imul(f,G))|0)+((8191&(i=(i=Math.imul(f,z))+Math.imul(c,G)|0))<<13)|0;h=((o=Math.imul(c,z))+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(p,G),i=(i=Math.imul(p,z))+Math.imul(v,G)|0,o=Math.imul(v,z);var mt=(h+(n=n+Math.imul(f,V)|0)|0)+((8191&(i=(i=i+Math.imul(f,q)|0)+Math.imul(c,V)|0))<<13)|0;h=((o=o+Math.imul(c,q)|0)+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(m,G),i=(i=Math.imul(m,z))+Math.imul(g,G)|0,o=Math.imul(g,z),n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,q)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,q)|0;var gt=(h+(n=n+Math.imul(f,W)|0)|0)+((8191&(i=(i=i+Math.imul(f,J)|0)+Math.imul(c,W)|0))<<13)|0;h=((o=o+Math.imul(c,J)|0)+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(w,G),i=(i=Math.imul(w,z))+Math.imul(_,G)|0,o=Math.imul(_,z),n=n+Math.imul(m,V)|0,i=(i=i+Math.imul(m,q)|0)+Math.imul(g,V)|0,o=o+Math.imul(g,q)|0,n=n+Math.imul(p,W)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(v,W)|0,o=o+Math.imul(v,J)|0;var bt=(h+(n=n+Math.imul(f,$)|0)|0)+((8191&(i=(i=i+Math.imul(f,X)|0)+Math.imul(c,$)|0))<<13)|0;h=((o=o+Math.imul(c,X)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(A,G),i=(i=Math.imul(A,z))+Math.imul(k,G)|0,o=Math.imul(k,z),n=n+Math.imul(w,V)|0,i=(i=i+Math.imul(w,q)|0)+Math.imul(_,V)|0,o=o+Math.imul(_,q)|0,n=n+Math.imul(m,W)|0,i=(i=i+Math.imul(m,J)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,J)|0,n=n+Math.imul(p,$)|0,i=(i=i+Math.imul(p,X)|0)+Math.imul(v,$)|0,o=o+Math.imul(v,X)|0;var wt=(h+(n=n+Math.imul(f,Q)|0)|0)+((8191&(i=(i=i+Math.imul(f,tt)|0)+Math.imul(c,Q)|0))<<13)|0;h=((o=o+Math.imul(c,tt)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(E,G),i=(i=Math.imul(E,z))+Math.imul(P,G)|0,o=Math.imul(P,z),n=n+Math.imul(A,V)|0,i=(i=i+Math.imul(A,q)|0)+Math.imul(k,V)|0,o=o+Math.imul(k,q)|0,n=n+Math.imul(w,W)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,W)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(m,$)|0,i=(i=i+Math.imul(m,X)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,X)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,tt)|0;var _t=(h+(n=n+Math.imul(f,rt)|0)|0)+((8191&(i=(i=i+Math.imul(f,nt)|0)+Math.imul(c,rt)|0))<<13)|0;h=((o=o+Math.imul(c,nt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(x,G),i=(i=Math.imul(x,z))+Math.imul(I,G)|0,o=Math.imul(I,z),n=n+Math.imul(E,V)|0,i=(i=i+Math.imul(E,q)|0)+Math.imul(P,V)|0,o=o+Math.imul(P,q)|0,n=n+Math.imul(A,W)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(k,W)|0,o=o+Math.imul(k,J)|0,n=n+Math.imul(w,$)|0,i=(i=i+Math.imul(w,X)|0)+Math.imul(_,$)|0,o=o+Math.imul(_,X)|0,n=n+Math.imul(m,Q)|0,i=(i=i+Math.imul(m,tt)|0)+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(v,rt)|0,o=o+Math.imul(v,nt)|0;var Mt=(h+(n=n+Math.imul(f,ot)|0)|0)+((8191&(i=(i=i+Math.imul(f,st)|0)+Math.imul(c,ot)|0))<<13)|0;h=((o=o+Math.imul(c,st)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(R,G),i=(i=Math.imul(R,z))+Math.imul(O,G)|0,o=Math.imul(O,z),n=n+Math.imul(x,V)|0,i=(i=i+Math.imul(x,q)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,q)|0,n=n+Math.imul(E,W)|0,i=(i=i+Math.imul(E,J)|0)+Math.imul(P,W)|0,o=o+Math.imul(P,J)|0,n=n+Math.imul(A,$)|0,i=(i=i+Math.imul(A,X)|0)+Math.imul(k,$)|0,o=o+Math.imul(k,X)|0,n=n+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,tt)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(m,rt)|0,i=(i=i+Math.imul(m,nt)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,nt)|0,n=n+Math.imul(p,ot)|0,i=(i=i+Math.imul(p,st)|0)+Math.imul(v,ot)|0,o=o+Math.imul(v,st)|0;var At=(h+(n=n+Math.imul(f,ut)|0)|0)+((8191&(i=(i=i+Math.imul(f,ht)|0)+Math.imul(c,ut)|0))<<13)|0;h=((o=o+Math.imul(c,ht)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,G),i=(i=Math.imul(B,z))+Math.imul(L,G)|0,o=Math.imul(L,z),n=n+Math.imul(R,V)|0,i=(i=i+Math.imul(R,q)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,q)|0,n=n+Math.imul(x,W)|0,i=(i=i+Math.imul(x,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,n=n+Math.imul(E,$)|0,i=(i=i+Math.imul(E,X)|0)+Math.imul(P,$)|0,o=o+Math.imul(P,X)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,tt)|0)+Math.imul(k,Q)|0,o=o+Math.imul(k,tt)|0,n=n+Math.imul(w,rt)|0,i=(i=i+Math.imul(w,nt)|0)+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(m,ot)|0,i=(i=i+Math.imul(m,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0,n=n+Math.imul(p,ut)|0,i=(i=i+Math.imul(p,ht)|0)+Math.imul(v,ut)|0,o=o+Math.imul(v,ht)|0;var kt=(h+(n=n+Math.imul(f,ft)|0)|0)+((8191&(i=(i=i+Math.imul(f,ct)|0)+Math.imul(c,ft)|0))<<13)|0;h=((o=o+Math.imul(c,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,G),i=(i=Math.imul(U,z))+Math.imul(j,G)|0,o=Math.imul(j,z),n=n+Math.imul(B,V)|0,i=(i=i+Math.imul(B,q)|0)+Math.imul(L,V)|0,o=o+Math.imul(L,q)|0,n=n+Math.imul(R,W)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(x,$)|0,i=(i=i+Math.imul(x,X)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,X)|0,n=n+Math.imul(E,Q)|0,i=(i=i+Math.imul(E,tt)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,tt)|0,n=n+Math.imul(A,rt)|0,i=(i=i+Math.imul(A,nt)|0)+Math.imul(k,rt)|0,o=o+Math.imul(k,nt)|0,n=n+Math.imul(w,ot)|0,i=(i=i+Math.imul(w,st)|0)+Math.imul(_,ot)|0,o=o+Math.imul(_,st)|0,n=n+Math.imul(m,ut)|0,i=(i=i+Math.imul(m,ht)|0)+Math.imul(g,ut)|0,o=o+Math.imul(g,ht)|0,n=n+Math.imul(p,ft)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(v,ft)|0,o=o+Math.imul(v,ct)|0;var St=(h+(n=n+Math.imul(f,pt)|0)|0)+((8191&(i=(i=i+Math.imul(f,vt)|0)+Math.imul(c,pt)|0))<<13)|0;h=((o=o+Math.imul(c,vt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(U,V),i=(i=Math.imul(U,q))+Math.imul(j,V)|0,o=Math.imul(j,q),n=n+Math.imul(B,W)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(L,W)|0,o=o+Math.imul(L,J)|0,n=n+Math.imul(R,$)|0,i=(i=i+Math.imul(R,X)|0)+Math.imul(O,$)|0,o=o+Math.imul(O,X)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,tt)|0)+Math.imul(I,Q)|0,o=o+Math.imul(I,tt)|0,n=n+Math.imul(E,rt)|0,i=(i=i+Math.imul(E,nt)|0)+Math.imul(P,rt)|0,o=o+Math.imul(P,nt)|0,n=n+Math.imul(A,ot)|0,i=(i=i+Math.imul(A,st)|0)+Math.imul(k,ot)|0,o=o+Math.imul(k,st)|0,n=n+Math.imul(w,ut)|0,i=(i=i+Math.imul(w,ht)|0)+Math.imul(_,ut)|0,o=o+Math.imul(_,ht)|0,n=n+Math.imul(m,ft)|0,i=(i=i+Math.imul(m,ct)|0)+Math.imul(g,ft)|0,o=o+Math.imul(g,ct)|0;var Et=(h+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,vt)|0)+Math.imul(v,pt)|0))<<13)|0;h=((o=o+Math.imul(v,vt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,W),i=(i=Math.imul(U,J))+Math.imul(j,W)|0,o=Math.imul(j,J),n=n+Math.imul(B,$)|0,i=(i=i+Math.imul(B,X)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,X)|0,n=n+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,tt)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(x,rt)|0,i=(i=i+Math.imul(x,nt)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,nt)|0,n=n+Math.imul(E,ot)|0,i=(i=i+Math.imul(E,st)|0)+Math.imul(P,ot)|0,o=o+Math.imul(P,st)|0,n=n+Math.imul(A,ut)|0,i=(i=i+Math.imul(A,ht)|0)+Math.imul(k,ut)|0,o=o+Math.imul(k,ht)|0,n=n+Math.imul(w,ft)|0,i=(i=i+Math.imul(w,ct)|0)+Math.imul(_,ft)|0,o=o+Math.imul(_,ct)|0;var Pt=(h+(n=n+Math.imul(m,pt)|0)|0)+((8191&(i=(i=i+Math.imul(m,vt)|0)+Math.imul(g,pt)|0))<<13)|0;h=((o=o+Math.imul(g,vt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,$),i=(i=Math.imul(U,X))+Math.imul(j,$)|0,o=Math.imul(j,X),n=n+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,tt)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,tt)|0,n=n+Math.imul(R,rt)|0,i=(i=i+Math.imul(R,nt)|0)+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(x,ot)|0,i=(i=i+Math.imul(x,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,n=n+Math.imul(E,ut)|0,i=(i=i+Math.imul(E,ht)|0)+Math.imul(P,ut)|0,o=o+Math.imul(P,ht)|0,n=n+Math.imul(A,ft)|0,i=(i=i+Math.imul(A,ct)|0)+Math.imul(k,ft)|0,o=o+Math.imul(k,ct)|0;var Nt=(h+(n=n+Math.imul(w,pt)|0)|0)+((8191&(i=(i=i+Math.imul(w,vt)|0)+Math.imul(_,pt)|0))<<13)|0;h=((o=o+Math.imul(_,vt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(U,Q),i=(i=Math.imul(U,tt))+Math.imul(j,Q)|0,o=Math.imul(j,tt),n=n+Math.imul(B,rt)|0,i=(i=i+Math.imul(B,nt)|0)+Math.imul(L,rt)|0,o=o+Math.imul(L,nt)|0,n=n+Math.imul(R,ot)|0,i=(i=i+Math.imul(R,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,n=n+Math.imul(x,ut)|0,i=(i=i+Math.imul(x,ht)|0)+Math.imul(I,ut)|0,o=o+Math.imul(I,ht)|0,n=n+Math.imul(E,ft)|0,i=(i=i+Math.imul(E,ct)|0)+Math.imul(P,ft)|0,o=o+Math.imul(P,ct)|0;var xt=(h+(n=n+Math.imul(A,pt)|0)|0)+((8191&(i=(i=i+Math.imul(A,vt)|0)+Math.imul(k,pt)|0))<<13)|0;h=((o=o+Math.imul(k,vt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,rt),i=(i=Math.imul(U,nt))+Math.imul(j,rt)|0,o=Math.imul(j,nt),n=n+Math.imul(B,ot)|0,i=(i=i+Math.imul(B,st)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,st)|0,n=n+Math.imul(R,ut)|0,i=(i=i+Math.imul(R,ht)|0)+Math.imul(O,ut)|0,o=o+Math.imul(O,ht)|0,n=n+Math.imul(x,ft)|0,i=(i=i+Math.imul(x,ct)|0)+Math.imul(I,ft)|0,o=o+Math.imul(I,ct)|0;var It=(h+(n=n+Math.imul(E,pt)|0)|0)+((8191&(i=(i=i+Math.imul(E,vt)|0)+Math.imul(P,pt)|0))<<13)|0;h=((o=o+Math.imul(P,vt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,ot),i=(i=Math.imul(U,st))+Math.imul(j,ot)|0,o=Math.imul(j,st),n=n+Math.imul(B,ut)|0,i=(i=i+Math.imul(B,ht)|0)+Math.imul(L,ut)|0,o=o+Math.imul(L,ht)|0,n=n+Math.imul(R,ft)|0,i=(i=i+Math.imul(R,ct)|0)+Math.imul(O,ft)|0,o=o+Math.imul(O,ct)|0;var Tt=(h+(n=n+Math.imul(x,pt)|0)|0)+((8191&(i=(i=i+Math.imul(x,vt)|0)+Math.imul(I,pt)|0))<<13)|0;h=((o=o+Math.imul(I,vt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,ut),i=(i=Math.imul(U,ht))+Math.imul(j,ut)|0,o=Math.imul(j,ht),n=n+Math.imul(B,ft)|0,i=(i=i+Math.imul(B,ct)|0)+Math.imul(L,ft)|0,o=o+Math.imul(L,ct)|0;var Rt=(h+(n=n+Math.imul(R,pt)|0)|0)+((8191&(i=(i=i+Math.imul(R,vt)|0)+Math.imul(O,pt)|0))<<13)|0;h=((o=o+Math.imul(O,vt)|0)+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,ft),i=(i=Math.imul(U,ct))+Math.imul(j,ft)|0,o=Math.imul(j,ct);var Ot=(h+(n=n+Math.imul(B,pt)|0)|0)+((8191&(i=(i=i+Math.imul(B,vt)|0)+Math.imul(L,pt)|0))<<13)|0;h=((o=o+Math.imul(L,vt)|0)+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863;var Ct=(h+(n=Math.imul(U,pt))|0)+((8191&(i=(i=Math.imul(U,vt))+Math.imul(j,pt)|0))<<13)|0;return h=((o=Math.imul(j,vt))+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,u[0]=yt,u[1]=mt,u[2]=gt,u[3]=bt,u[4]=wt,u[5]=_t,u[6]=Mt,u[7]=At,u[8]=kt,u[9]=St,u[10]=Et,u[11]=Pt,u[12]=Nt,u[13]=xt,u[14]=It,u[15]=Tt,u[16]=Rt,u[17]=Ot,u[18]=Ct,0!==h&&(u[19]=h,r.length++),r};function a(t,e,r){return(new u).mulp(t,e,r)}function u(t,e){this.x=t,this.y=e}Math.imul||(o=i),m.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?o(this,t,e):r<63?i(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}(this,t,e):a(this,t,e)},u.prototype.makeRBT=function(t){for(var e=new Array(t),r=m.prototype._countBits(t)-1,n=0;n>=1;return n},u.prototype.permute=function(t,e,r,n,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,r[2*o+1]=8191&i,i>>>=13;for(o=2*e;o>=26,e+=n/67108864|0,e+=i>>>26,this.words[r]=67108863&i}return 0!==e&&(this.words[r]=e,this.length++),this},m.prototype.muln=function(t){return this.clone().imuln(t)},m.prototype.sqr=function(){return this.mul(this)},m.prototype.isqr=function(){return this.imul(this.clone())},m.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}(t);if(0===e.length)return new m(1);for(var r=this,n=0;n>>26-r<<26-r;if(0!==r){var o=0;for(e=0;e>>26-r}o&&(this.words[e]=o,this.length++)}if(0!==n){for(e=this.length-1;0<=e;e--)this.words[e+n]=this.words[e];for(e=0;e>>i<o)for(this.length-=o,u=0;u>>i,h=l&s}return a&&0!==h&&(a.words[a.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},m.prototype.ishrn=function(t,e,r){return y(0===this.negative),this.iushrn(t,e,r)},m.prototype.shln=function(t){return this.clone().ishln(t)},m.prototype.ushln=function(t){return this.clone().iushln(t)},m.prototype.shrn=function(t){return this.clone().ishrn(t)},m.prototype.ushrn=function(t){return this.clone().iushrn(t)},m.prototype.testn=function(t){y("number"==typeof t&&0<=t);var e=t%26,r=(t-e)/26,n=1<>>e<>26)-(a/67108864|0),this.words[n+r]=67108863&i}for(;n>26,this.words[n+r]=67108863&i;if(0===s)return this.strip();for(y(-1===s),n=s=0;n>26,this.words[n]=67108863&i;return this.negative=1,this.strip()},m.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),i=t,o=0|i.words[i.length-1];0!==(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,a=n.length-i.length;if("mod"!==e){(s=new m(null)).length=a+1,s.words=new Array(s.length);for(var u=0;uthis.length||this.cmp(t)<0?{div:new m(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new m(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new m(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,i,o},m.prototype.div=function(t){return this.divmod(t,"div",!1).div},m.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},m.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},m.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},m.prototype.modn=function(t){y(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;0<=n;n--)r=(e*r+(0|this.words[n]))%t;return r},m.prototype.idivn=function(t){y(t<=67108863);for(var e=0,r=this.length-1;0<=r;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},m.prototype.divn=function(t){return this.clone().idivn(t)},m.prototype.egcd=function(t){y(0===t.negative),y(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new m(1),i=new m(0),o=new m(0),s=new m(1),a=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++a;for(var u=r.clone(),h=e.clone();!e.isZero();){for(var l=0,f=1;0==(e.words[0]&f)&&l<26;++l,f<<=1);if(0>>26,s&=67108863,this.words[o]=s}return 0!==i&&(this.words[o]=i,this.length++),this},m.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},m.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),1t.length)return 1;if(this.lengththis.n;);var n=e>>22,i=o}i>>>=22,0===(t.words[n-10]=i)&&10>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},m._prime=function(t){if(h[t])return h[t];var e;if("k256"===t)e=new v;else if("p224"===t)e=new g;else if("p192"===t)e=new b;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new w}return h[t]=e},_.prototype._verify1=function(t){y(0===t.negative,"red works only with positives"),y(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){y(0==(t.negative|e.negative),"red works only with positives"),y(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return 0<=r.cmp(this.m)&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return 0<=r.cmp(this.m)&&r.isub(this.m),r},_.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(y(e%2==1),3===e){var r=this.m.add(new m(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),i=0;!n.isZero()&&0===n.andln(1);)i++,n.iushrn(1);y(!n.isZero());var o=new m(1).toRed(this),s=o.redNeg(),a=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new m(2*u*u).toRed(this);0!==this.pow(u,a).cmp(s);)u.redIAdd(s);for(var h=this.pow(u,n),l=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),c=i;0!==f.cmp(o);){for(var d=f,p=0;0!==d.cmp(o);p++)d=d.redSqr();y(p>h&1;i!==r[0]&&(i=this.sqr(i)),0!==l||0!==o?(o<<=1,o|=l,(4===++s||0===n&&0===h)&&(i=this.mul(i,r[o]),o=s=0)):s=0}a=26}return i},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},m.mont=function(t){return new M(t)},r(M,_),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new m(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t,this)},{buffer:4}],3:[function(t,e,r){var n=t("../../src.ts/utils").randomBytes;e.exports=function(t){return n(t)}},{"../../src.ts/utils":65}],4:[function(t,e,r){},{}],5:[function(t,e,r){"use strict";var n=r;n.version=t("../package.json").version,n.utils=t("./elliptic/utils"),n.rand=t("brorand"),n.hmacDRBG=t("./elliptic/hmac-drbg"),n.curve=t("./elliptic/curve"),n.curves=t("./elliptic/curves"),n.ec=t("./elliptic/ec"),n.eddsa=t("./elliptic/eddsa")},{"../package.json":19,"./elliptic/curve":8,"./elliptic/curves":11,"./elliptic/ec":12,"./elliptic/eddsa":15,"./elliptic/hmac-drbg":16,"./elliptic/utils":18,brorand:3}],6:[function(t,e,r){"use strict";var n=t("bn.js"),i=t("../../elliptic").utils,S=i.getNAF,E=i.getJSF,f=i.assert;function o(t,e){this.type=t,this.p=new n(e.p,16),this.red=e.prime?n.red(e.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=e.n&&new n(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||0>1]):s.mixedAdd(i[-u-1>>1].neg()):0>1]):s.add(i[-u-1>>1].neg())}return"affine"===t.type?s.toP():s},o.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,s=this._wnafT2,a=this._wnafT3,u=0,h=0;h>1]:k<0&&(A=s[y][-k-1>>1].neg()),b="affine"===A.type?b.mixedAdd(A):b.add(A))}}for(h=0;h=Math.ceil((t.bitLength()+1)/e.step)},s.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},h.prototype.isInfinity=function(){return this.inf},h.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},h.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},h.prototype.getX=function(){return this.x.fromRed()},h.prototype.getY=function(){return this.y.fromRed()},h.prototype.mul=function(t){return t=new _(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},h.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},h.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},h.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},h.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},h.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(l,s.BasePoint),u.prototype.jpoint=function(t,e,r){return new l(this,t,e,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),u=o.redSub(s);if(0===a.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=a.redSqr(),l=h.redMul(a),f=n.redMul(h),c=u.redSqr().redIAdd(l).redISub(f).redISub(f),d=u.redMul(f.redISub(c)).redISub(o.redMul(l)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(c,d,p)},l.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(n),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),h=u.redMul(s),l=r.redMul(u),f=a.redSqr().redIAdd(h).redISub(l).redISub(l),c=a.redMul(l.redISub(f)).redISub(i.redMul(h)),d=this.z.redMul(s);return this.curve.jpoint(f,c,d)},l.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":5,"../curve":8,"bn.js":2,inherits:32}],11:[function(t,e,r){"use strict";var n,i=r,o=t("hash.js"),s=t("../elliptic"),a=s.utils.assert;function u(t){"short"===t.type?this.curve=new s.curve.short(t):"edwards"===t.type?this.curve=new s.curve.edwards(t):this.curve=new s.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function h(e,r){Object.defineProperty(i,e,{configurable:!0,enumerable:!0,get:function(){var t=new u(r);return Object.defineProperty(i,e,{configurable:!0,enumerable:!0,value:t}),t}})}i.PresetCurve=u,h("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),h("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),h("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),h("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),h("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),h("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),h("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{n=t("./precomputed/secp256k1")}catch(t){n=void 0}h("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",n]})},{"../elliptic":5,"./precomputed/secp256k1":17,"hash.js":20}],12:[function(t,e,r){"use strict";var y=t("bn.js"),m=t("../../elliptic"),d=m.utils.assert,n=t("./key"),g=t("./signature");function i(t){if(!(this instanceof i))return new i(t);"string"==typeof t&&(d(m.curves.hasOwnProperty(t),"Unknown curve "+t),t=m.curves[t]),t instanceof m.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}(e.exports=i).prototype.keyPair=function(t){return new n(this,t)},i.prototype.keyFromPrivate=function(t,e){return n.fromPrivate(this,t,e)},i.prototype.keyFromPublic=function(t,e){return n.fromPublic(this,t,e)},i.prototype.genKeyPair=function(t){t||(t={});for(var e=new m.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||m.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new y(2));;){var i=new y(e.generate(r));if(!(0>1;if(0<=s.cmp(this.curve.p.umod(this.curve.n))&&h)throw new Error("Unable to find sencond key candinate");s=h?this.curve.pointFromX(s.add(this.curve.n),u):this.curve.pointFromX(s,u);var l=e.r.invm(i),f=i.sub(o).mul(l).umod(i),c=a.mul(l).umod(i);return this.g.mulAdd(f,s,c)},i.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new g(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":5,"./key":13,"./signature":14,"bn.js":2}],13:[function(t,e,r){"use strict";var n=t("bn.js"),i=t("../../elliptic").utils.assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}(e.exports=o).fromPublic=function(t,e,r){return e instanceof o?e:new o(t,{pub:e,pubEnc:r})},o.fromPrivate=function(t,e,r){return e instanceof o?e:new o(t,{priv:e,privEnc:r})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new n(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?i(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||i(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.mul(this.priv).getX()},o.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return""}},{"../../elliptic":5,"bn.js":2}],14:[function(t,e,r){"use strict";var a=t("bn.js"),u=t("../../elliptic").utils,n=u.assert;function i(t,e){if(t instanceof i)return t;this._importDER(t,e)||(n(t.r&&t.s,"Signature without r or s"),this.r=new a(t.r,16),this.s=new a(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function h(){this.place=0}function l(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,s=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}(e.exports=i).prototype._importDER=function(t,e){t=u.toArray(t,e);var r=new h;if(48!==t[r.place++])return!1;if(l(t,r)+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var n=l(t,r),i=t.slice(r.place,n+r.place);if(r.place+=n,2!==t[r.place++])return!1;var o=l(t,r);if(t.length!==o+r.place)return!1;var s=t.slice(r.place,o+r.place);return 0===i[0]&&128&i[1]&&(i=i.slice(1)),0===s[0]&&128&s[1]&&(s=s.slice(1)),this.r=new a(i),this.s=new a(s),!(this.recoveryParam=null)},i.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=s(e),r=s(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),(n=n.concat(e)).push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),u.encode(o,t)}},{"../../elliptic":5,"bn.js":2}],15:[function(t,e,r){arguments[4][7][0].apply(r,arguments)},{dup:7}],16:[function(t,e,r){"use strict";var n=t("hash.js"),s=t("../elliptic").utils,i=s.assert;function o(t){if(!(this instanceof o))return new o(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this.reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=s.toArray(t.entropy,t.entropyEnc),r=s.toArray(t.nonce,t.nonceEnc),n=s.toArray(t.pers,t.persEnc);i(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}(e.exports=o).prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this.reseed=1},o.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=s.toArray(r,n),this._update(r));for(var i=[];i.length>8,s=255&i;o?r.push(o,s):r.push(s)}return r},n.zero2=o,n.toHex=s,n.encode=function(t,e){return"hex"===e?s(t):t},n.getNAF=function(t,e){for(var r=[],n=1<>1)-1>1)-s:s,i.isubn(o)}else o=0;r.push(o);for(var a=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,u=1;u=this._delta8){var r=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),i(t.length<=this.blockSize);for(var e=t.length;e>>3},r.g1_256=function(t){return n(t,17)^n(t,19)^t>>>10}},{"../utils":31}],31:[function(t,e,r){"use strict";var h=t("minimalistic-assert"),n=t("inherits");function o(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function s(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}r.inherits=n,r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n>8,s=255&i;o?r.push(o,s):r.push(s)}else for(n=0;n>>0}return o},r.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},r.rotr32=function(t,e){return t>>>e|t<<32-e},r.rotl32=function(t,e){return t<>>32-e},r.sum32=function(t,e){return t+e>>>0},r.sum32_3=function(t,e,r){return t+e+r>>>0},r.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},r.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},r.sum64=function(t,e,r,n){var i=t[e],o=n+t[e+1]>>>0,s=(o>>0,t[e+1]=o},r.sum64_hi=function(t,e,r,n){return(e+n>>>0>>0},r.sum64_lo=function(t,e,r,n){return e+n>>>0},r.sum64_4_hi=function(t,e,r,n,i,o,s,a){var u=0,h=e;return u+=(h=h+n>>>0)>>0)>>0)>>0},r.sum64_4_lo=function(t,e,r,n,i,o,s,a){return e+n+o+a>>>0},r.sum64_5_hi=function(t,e,r,n,i,o,s,a,u,h){var l=0,f=e;return l+=(f=f+n>>>0)>>0)>>0)>>0)>>0},r.sum64_5_lo=function(t,e,r,n,i,o,s,a,u,h){return e+n+o+a+h>>>0},r.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},r.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},r.shr64_hi=function(t,e,r){return t>>>r},r.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0}},{inherits:32,"minimalistic-assert":34}],32:[function(t,e,r){"function"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],33:[function(t,_,e){(function(b,w){!function(){"use strict";var t="object"==typeof window?window:{};!t.JS_SHA3_NO_NODE_JS&&"object"==typeof b&&b.versions&&b.versions.node&&(t=w);for(var e=!t.JS_SHA3_NO_COMMON_JS&&"object"==typeof _&&_.exports,u="0123456789abcdef".split(""),l=[0,8,16,24],lt=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],r=[224,256,384,512],o=["hex","buffer","arrayBuffer","array"],s=function(e,r,n){return function(t){return new m(e,r,e).update(t)[n]()}},a=function(r,n,i){return function(t,e){return new m(r,n,e).update(t)[i]()}},n=function(t,e){var r=s(t,e,"hex");r.create=function(){return new m(t,e,t)},r.update=function(t){return r.create().update(t)};for(var n=0;n>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}m.prototype.update=function(t){var e="string"!=typeof t;e&&t.constructor===ArrayBuffer&&(t=new Uint8Array(t));for(var r,n,i=t.length,o=this.blocks,s=this.byteCount,a=this.blockCount,u=0,h=this.s;u>2]|=t[u]<>2]|=n<>2]|=(192|n>>6)<>2]|=(224|n>>12)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e>4&15]+u[15&t]+u[t>>12&15]+u[t>>8&15]+u[t>>20&15]+u[t>>16&15]+u[t>>28&15]+u[t>>24&15];s%e==0&&(g(r),o=0)}return i&&(t=r[o],0>4&15]+u[15&t]),1>12&15]+u[t>>8&15]),2>20&15]+u[t>>16&15])),a},m.prototype.buffer=m.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var u=new Uint32Array(t);s>8&255,u[t+2]=e>>16&255,u[t+3]=e>>24&255;a%r==0&&g(n)}return o&&(t=a<<2,e=n[s],0>8&255),2>16&255)),u};var g=function(t){var e,r,n,i,o,s,a,u,h,l,f,c,d,p,v,y,m,g,b,w,_,M,A,k,S,E,P,N,x,I,T,R,O,C,B,L,D,U,j,F,G,z,H,V,q,K,W,J,Z,$,X,Y,Q,tt,et,rt,nt,it,ot,st,at,ut,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],u=t[4]^t[14]^t[24]^t[34]^t[44],h=t[5]^t[15]^t[25]^t[35]^t[45],l=t[6]^t[16]^t[26]^t[36]^t[46],f=t[7]^t[17]^t[27]^t[37]^t[47],e=(c=t[8]^t[18]^t[28]^t[38]^t[48])^(s<<1|a>>>31),r=(d=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(u<<1|h>>>31),r=o^(h<<1|u>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(l<<1|f>>>31),r=a^(f<<1|l>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=u^(c<<1|d>>>31),r=h^(d<<1|c>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=l^(i<<1|o>>>31),r=f^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,p=t[0],v=t[1],K=t[11]<<4|t[10]>>>28,W=t[10]<<4|t[11]>>>28,N=t[20]<<3|t[21]>>>29,x=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,at=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,C=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,m=t[12]<<12|t[13]>>>20,J=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,I=t[33]<<13|t[32]>>>19,T=t[32]<<13|t[33]>>>19,ut=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,tt=t[5]<<30|t[4]>>>2,et=t[4]<<30|t[5]>>>2,L=t[14]<<6|t[15]>>>26,D=t[15]<<6|t[14]>>>26,g=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,$=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,R=t[45]<<29|t[44]>>>3,O=t[44]<<29|t[45]>>>3,k=t[6]<<28|t[7]>>>4,S=t[7]<<28|t[6]>>>4,rt=t[17]<<23|t[16]>>>9,nt=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,j=t[27]<<25|t[26]>>>7,w=t[36]<<21|t[37]>>>11,_=t[37]<<21|t[36]>>>11,Y=t[47]<<24|t[46]>>>8,Q=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,q=t[9]<<27|t[8]>>>5,E=t[18]<<20|t[19]>>>12,P=t[19]<<20|t[18]>>>12,it=t[29]<<7|t[28]>>>25,ot=t[28]<<7|t[29]>>>25,F=t[38]<<8|t[39]>>>24,G=t[39]<<8|t[38]>>>24,M=t[48]<<14|t[49]>>>18,A=t[49]<<14|t[48]>>>18,t[0]=p^~y&g,t[1]=v^~m&b,t[10]=k^~E&N,t[11]=S^~P&x,t[20]=C^~L&U,t[21]=B^~D&j,t[30]=V^~K&J,t[31]=q^~W&Z,t[40]=tt^~rt&it,t[41]=et^~nt&ot,t[2]=y^~g&w,t[3]=m^~b&_,t[12]=E^~N&I,t[13]=P^~x&T,t[22]=L^~U&F,t[23]=D^~j&G,t[32]=K^~J&$,t[33]=W^~Z&X,t[42]=rt^~it&st,t[43]=nt^~ot&at,t[4]=g^~w&M,t[5]=b^~_&A,t[14]=N^~I&R,t[15]=x^~T&O,t[24]=U^~F&z,t[25]=j^~G&H,t[34]=J^~$&Y,t[35]=Z^~X&Q,t[44]=it^~st&ut,t[45]=ot^~at&ht,t[6]=w^~M&p,t[7]=_^~A&v,t[16]=I^~R&k,t[17]=T^~O&S,t[26]=F^~z&C,t[27]=G^~H&B,t[36]=$^~Y&V,t[37]=X^~Q&q,t[46]=st^~ut&tt,t[47]=at^~ht&et,t[8]=M^~p&y,t[9]=A^~v&m,t[18]=R^~k&E,t[19]=O^~S&P,t[28]=z^~C&L,t[29]=H^~B&D,t[38]=Y^~V&K,t[39]=Q^~q&W,t[48]=ut^~tt&rt,t[49]=ht^~et&nt,t[0]^=lt[n],t[1]^=lt[n+1]};if(e)_.exports=h;else for(c=0;c>>17|n<<15)^(n>>>19|n<<13)^n>>>10,a=((n=S[i-15])>>>7|n<<25)^(n>>>18|n<<14)^n>>>3,S[i]=(s+S[i-7]|0)+(a+S[i-16]|0)|0;for(i=0;i<64;i++)s=(((c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7))+(c&d^~c&p)|0)+(v+(y[i]+S[i]|0)|0)|0,a=((u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10))+(u&h^u&l^h&l)|0,v=p,p=d,d=c,c=f+s|0,f=l,l=h,h=u,u=s+a|0;m=m+u|0,g=g+h|0,b=b+l|0,w=w+f|0,_=_+c|0,M=M+d|0,A=A+p|0,k=k+v|0,e+=64,r-=64}}e(t);var r,n=t.length%64,i=t.length/536870912|0,o=t.length<<3,s=n<56?56:120,a=t.slice(t.length-n,t.length);for(a.push(128),r=n+1;r>>24&255),a.push(i>>>16&255),a.push(i>>>8&255),a.push(i>>>0&255),a.push(o>>>24&255),a.push(o>>>16&255),a.push(o>>>8&255),a.push(o>>>0&255),e(a),[m>>>24&255,m>>>16&255,m>>>8&255,m>>>0&255,g>>>24&255,g>>>16&255,g>>>8&255,g>>>0&255,b>>>24&255,b>>>16&255,b>>>8&255,b>>>0&255,w>>>24&255,w>>>16&255,w>>>8&255,w>>>0&255,_>>>24&255,_>>>16&255,_>>>8&255,_>>>0&255,M>>>24&255,M>>>16&255,M>>>8&255,M>>>0&255,A>>>24&255,A>>>16&255,A>>>8&255,A>>>0&255,k>>>24&255,k>>>16&255,k>>>8&255,k>>>0&255]}function x(t,e,r){var n;t=t.length<=64?t:h(t);var i=64+e.length+4,o=new Array(i),s=new Array(64),a=[];for(n=0;n<64;n++)o[n]=54;for(n=0;n>>32-e}function s(t,e){R(t,0,e,0,16);for(var r=8;0>0&255),f.push(c[t]>>8&255),f.push(c[t]>>16&255),f.push(c[t]>>24&255);var i=x(o,f,h);return l(null,1,i)}P(N)};N()}void 0!==o?r.exports=e:t&&(t.scrypt&&(t._scrypt=t.scrypt),t.scrypt=e)}(this)}).call(this,t("timers").setImmediate)},{timers:38}],37:[function(t,e,r){(function(y,t){!function(r,n){"use strict";if(!r.setImmediate){var t,i,e,o,s,a=1,u={},h=!1,l=r.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(r);f=f&&f.setTimeout?f:r,"[object process]"==={}.toString.call(r.process)?t=function(){var t=c(arguments);return y.nextTick(d(p,t)),t}:!function(){if(r.postMessage&&!r.importScripts){var t=!0,e=r.onmessage;return r.onmessage=function(){t=!1},r.postMessage("","*"),r.onmessage=e,t}}()?r.MessageChannel?((e=new MessageChannel).port1.onmessage=function(t){p(t.data)},t=function(){var t=c(arguments);return e.port2.postMessage(t),t}):l&&"onreadystatechange"in l.createElement("script")?(i=l.documentElement,t=function(){var t=c(arguments),e=l.createElement("script");return e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e),t}):t=function(){var t=c(arguments);return setTimeout(d(p,t),0),t}:(o="setImmediate$"+Math.random()+"$",s=function(t){t.source===r&&"string"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},r.addEventListener?r.addEventListener("message",s,!1):r.attachEvent("onmessage",s),t=function(){var t=c(arguments);return r.postMessage(o+t,"*"),t}),f.setImmediate=t,f.clearImmediate=v}function c(t){return u[a]=d.apply(n,t),a++}function d(t){var e=[].slice.call(arguments,1);return function(){"function"==typeof t?t.apply(n,e):new Function(""+t)()}}function p(t){if(h)setTimeout(d(p,t),0);else{var e=u[t];if(e){h=!0;try{e()}finally{v(t),h=!1}}}}function v(t){delete u[t]}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,t("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:35}],38:[function(t,e,r){(function(t){e.exports={setImmediate:t.setImmediate}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],39:[function(t,i,e){(function(t){var e;if(t.crypto&&crypto.getRandomValues){var r=new Uint8Array(16);e=function(){return crypto.getRandomValues(r),r}}if(!e){var n=new Array(16);e=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),n[e]=t>>>((3&e)<<3)&255;return n}}i.exports=e}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],40:[function(t,e,r){for(var s=t("./rng"),i=[],o={},n=0;n<256;n++)i[n]=(n+256).toString(16).substr(1),o[i[n]]=n;function d(t,e){var r=e||0,n=i;return n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]}var a=s(),p=[1|a[0],a[1],a[2],a[3],a[4],a[5]],v=16383&(a[6]<<8|a[7]),y=0,m=0;function u(t,e,r){var n=e&&r||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null);var i=(t=t||{}).random||(t.rng||s)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e)for(var o=0;o<16;o++)e[n+o]=i[o];return e||d(i)}var h=u;h.v1=function(t,e,r){var n=e&&r||0,i=e||[],o=void 0!==(t=t||{}).clockseq?t.clockseq:v,s=void 0!==t.msecs?t.msecs:(new Date).getTime(),a=void 0!==t.nsecs?t.nsecs:m+1,u=s-y+(a-m)/1e4;if(u<0&&void 0===t.clockseq&&(o=o+1&16383),(u<0||y>>24&255,i[n++]=h>>>16&255,i[n++]=h>>>8&255,i[n++]=255&h;var l=s/4294967296*1e4&268435455;i[n++]=l>>>8&255,i[n++]=255&l,i[n++]=l>>>24&15|16,i[n++]=l>>>16&255,i[n++]=o>>>8|128,i[n++]=255&o;for(var f=t.node||p,c=0;c<6;c++)i[n+c]=f[c];return e||d(i)},h.v4=u,h.parse=function(t,e,r){var n=e&&r||0,i=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){i<16&&(e[n+i++]=o[t])});i<16;)e[n+i++]=0;return e},h.unparse=d,e.exports=h},{"./rng":39}],41:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=t("../src.ts/utils/bytes");e.exports={decode:function(t){t=atob(t);for(var e=[],r=0;r>24&255,l[e.length+1]=f>>16&255,l[e.length+2]=f>>8&255,l[e.length+3]=255&f;var c=g.computeHmac(i,t,l);o||(o=c.length,a=new Uint8Array(o),s=n-((u=Math.ceil(n/o))-1)*o),a.set(c);for(var d=1;dthis.inputs.length&&l.throwError("too many constructor arguments",l.UNEXPECTED_ARGUMENT,{count:e.length,expectedCount:this.inputs.length});try{return t+f.defaultAbiCoder.encode(this.inputs,e).substring(2)}catch(t){l.throwError("invalid constructor argument",l.INVALID_ARGUMENT,{arg:t.arg,reason:t.reason,value:t.value})}return null},e}(p);r.DeployDescription=y;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.encode=function(t){t.lengththis.inputs.length&&l.throwError("too many input arguments",l.UNEXPECTED_ARGUMENT,{count:t.length,expectedCount:this.inputs.length});try{return this.sighash+f.defaultAbiCoder.encode(this.inputs,t).substring(2)}catch(t){l.throwError("invalid input argument",l.INVALID_ARGUMENT,{arg:t.arg,reason:t.reason,value:t.value})}return null},e.prototype.decode=function(e){try{return f.defaultAbiCoder.decode(this.outputs,c.arrayify(e))}catch(t){l.throwError("invalid data for function output",l.INVALID_ARGUMENT,{arg:"data",errorArg:t.arg,errorValue:t.value,value:e,reason:t.reason})}},e}(p);r.FunctionDescription=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p),b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.decode=function(t,r){null==r||this.anonymous||(r=r.slice(1));var n=[],i=[],o=[];if(this.inputs.forEach(function(t,e){t.indexed?"string"===t.type||"bytes"===t.type||0<=t.type.indexOf("[")||"tuple"===t.type.substring(0,5)?(n.push({type:"bytes32",name:t.name||""}),o.push(!0)):(n.push(t),o.push(!1)):(i.push(t),o.push(!1))}),null!=r)var s=f.defaultAbiCoder.decode(n,c.concat(r));var a=f.defaultAbiCoder.decode(i,c.arrayify(t)),u=new g({}),h=0,l=0;return this.inputs.forEach(function(t,e){t.indexed?null==r?u[e]=new v({type:"indexed",hash:null}):o[e]?u[e]=new v({type:"indexed",hash:s[l++]}):u[e]=s[l++]:u[e]=a[h++],t.name&&(u[t.name]=u[e])}),u.length=this.inputs.length,u},e}(p);r.EventDescription=b;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p),_=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p);function M(t){switch(t.type){case"constructor":var e=new y({inputs:t.inputs,payable:null==t.payable||!!t.payable,type:"deploy"});this.deployFunction||(this.deployFunction=e);break;case"function":n=(n="("+d(t.inputs).types.join(",")+")").replace(/tuple/g,""),n=t.name+n;var r=a.keccak256(u.toUtf8Bytes(n)).substring(0,10);e=new m({inputs:t.inputs,outputs:t.outputs,payable:null==t.payable||!!t.payable,type:t.constant?"call":"transaction",signature:n,sighash:r});t.name&&null==this.functions[t.name]&&h.defineReadOnly(this.functions,t.name,e),null==this.functions[e.signature]&&h.defineReadOnly(this.functions,e.signature,e);break;case"event":var n;n=(n="("+d(t.inputs).types.join(",")+")").replace(/tuple/g,""),n=t.name+n;e=new b({name:t.name,signature:n,inputs:t.inputs,topic:a.keccak256(u.toUtf8Bytes(n)),anonymous:!!t.anonymous,type:"event"});t.name&&null==this.events[t.name]&&h.defineReadOnly(this.events,t.name,e),null==this.events[e.signature]&&h.defineReadOnly(this.events,e.signature,e);break;case"fallback":break;default:console.log("WARNING: unsupported ABI type - "+t.type)}}var A=function(){function t(e){if(l.checkNew(this,t),"string"==typeof e){try{e=JSON.parse(e)}catch(t){l.throwError("could not parse ABI JSON",l.INVALID_ARGUMENT,{arg:"abi",errorMessage:t.message,value:e})}if(!Array.isArray(e))return l.throwError("invalid abi",l.INVALID_ARGUMENT,{arg:"abi",value:e}),null}h.defineReadOnly(this,"functions",{}),h.defineReadOnly(this,"events",{});var r=[];e.forEach(function(t){"string"==typeof t&&(t=f.parseSignature(t)),r.push(t)}),h.defineFrozen(this,"abi",r),r.forEach(M,this),this.deployFunction||M.call(this,{type:"constructor",inputs:[]})}return t.prototype.parseTransaction=function(t){var e=t.data.substring(0,10).toLowerCase();for(var r in this.functions)if(-1!==r.indexOf("(")){var n=this.functions[r];if(n.sighash===e){var i=f.defaultAbiCoder.decode(n.inputs,"0x"+t.data.substring(10));return new w({args:i,decode:n.decode,name:r,signature:n.signature,sighash:n.sighash,type:"transaction",value:s.bigNumberify(t.value||0)})}}return null},t.prototype.parseLog=function(t){for(var e in this.events)if(-1!==e.indexOf("(")){var r=this.events[e];if(!r.anonymous&&r.topic===t.topics[0])return new _({name:r.name,signature:r.signature,topic:r.topic,type:"log",values:r.decode(t.data,t.topics)})}return null},t}();r.Interface=A},{"../utils/abi-coder":59,"../utils/bignumber":61,"../utils/bytes":62,"../utils/errors":63,"../utils/keccak256":66,"../utils/properties":67,"../utils/utf8":74}],51:[function(t,e,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var s=t("./provider"),a=t("../utils/bytes"),u=t("../utils/properties"),h=t("../utils/web"),l=o(t("../utils/errors"));function f(t){var e=[];for(var r in t)if(null!=t[r]){var n=a.hexlify(t[r]);({gasLimit:!0,gasPrice:!0,nonce:!0,value:!0})[r]&&(n=a.hexStripZeros(n)),e.push(r+"="+n)}return e.join("&")}function c(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"OK"!=t.message){var e=new Error("invalid response");throw e.result=JSON.stringify(t),e}return t.result}function d(t){if("2.0"!=t.jsonrpc)throw(e=new Error("invalid response")).result=JSON.stringify(t),e;if(t.error){var e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function p(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}var v=function(a){function o(t,e){var r=a.call(this,t)||this;l.checkNew(r,o);var n="invalid";r.network&&(n=r.network.name);var i=null;switch(n){case"homestead":i="https://api.etherscan.io";break;case"ropsten":i="https://api-ropsten.etherscan.io";break;case"rinkeby":i="https://api-rinkeby.etherscan.io";break;case"kovan":i="https://api-kovan.etherscan.io";break;default:throw new Error("unsupported network")}return u.defineReadOnly(r,"baseUrl",i),u.defineReadOnly(r,"apiKey",e),r}return i(o,a),o.prototype.perform=function(t,e){var r=this.baseUrl,n="";switch(this.apiKey&&(n+="&apikey="+this.apiKey),t){case"getBlockNumber":return r+="/api?module=proxy&action=eth_blockNumber"+n,h.fetchJson(r,null,d);case"getGasPrice":return r+="/api?module=proxy&action=eth_gasPrice"+n,h.fetchJson(r,null,d);case"getBalance":return r+="/api?module=account&action=balance&address="+e.address,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,c);case"getTransactionCount":return r+="/api?module=proxy&action=eth_getTransactionCount&address="+e.address,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,d);case"getCode":return r+="/api?module=proxy&action=eth_getCode&address="+e.address,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,d);case"getStorageAt":return r+="/api?module=proxy&action=eth_getStorageAt&address="+e.address,r+="&position="+e.position,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,d);case"sendTransaction":return r+="/api?module=proxy&action=eth_sendRawTransaction&hex="+e.signedTransaction,r+=n,h.fetchJson(r,null,d);case"getBlock":if(e.blockTag)return r+="/api?module=proxy&action=eth_getBlockByNumber&tag="+e.blockTag,r+="&boolean=false",r+=n,h.fetchJson(r,null,d);throw new Error("getBlock by blockHash not implmeneted");case"getTransaction":return r+="/api?module=proxy&action=eth_getTransactionByHash&txhash="+e.transactionHash,r+=n,h.fetchJson(r,null,d);case"getTransactionReceipt":return r+="/api?module=proxy&action=eth_getTransactionReceipt&txhash="+e.transactionHash,r+=n,h.fetchJson(r,null,d);case"call":return(i=f(e.transaction))&&(i="&"+i),r+="/api?module=proxy&action=eth_call"+i,r+=n,h.fetchJson(r,null,d);case"estimateGas":var i;return(i=f(e.transaction))&&(i="&"+i),r+="/api?module=proxy&action=eth_estimateGas&"+i,r+=n,h.fetchJson(r,null,d);case"getLogs":r+="/api?module=logs&action=getLogs";try{if(e.filter.fromBlock&&(r+="&fromBlock="+p(e.filter.fromBlock)),e.filter.toBlock&&(r+="&toBlock="+p(e.filter.toBlock)),e.filter.address&&(r+="&address="+e.filter.address),e.filter.topics&&0r+12&&delete i._emitted[t]})),i.emit("block",r);var n={};Object.keys(i._events).forEach(function(t){var r=function(t){if("tx:"===t.substring(0,3))return{type:"transaction",hash:t.substring(3)};if("block"===t)return{type:"block"};if("pending"===t)return{type:"pending"};if("address:"===t.substring(0,8))return{type:"address",address:t.substring(8)};if("topic:"===t.substring(0,6))try{var e=f.decode(t.substring(6));return{type:"topic",topic:e=U(e,function(t){return"0x"===t&&(t=null),t})}}catch(t){console.log(t)}throw new Error("invalid event string")}(t);"transaction"===r.type?i.getTransaction(r.hash).then(function(t){t&&null!=t.blockNumber&&(i._emitted["t:"+t.hash.toLowerCase()]=t.blockNumber,i.emit(r.hash,t))}):"address"===r.type?(i._balances[r.address]&&(n[r.address]=i._balances[r.address]),i.getBalance(r.address,"latest").then(function(t){var e=this._balances[r.address];e&&t.eq(e)||(this._balances[r.address]=t,this.emit(r.address,t))})):"topic"===r.type&&i.getLogs({fromBlock:i._lastBlockNumber+1,toBlock:e,topics:r.topic}).then(function(t){0!==t.length&&t.forEach(function(t){i._emitted["b:"+t.blockHash.toLowerCase()]=t.blockNumber,i._emitted["t:"+t.transactionHash.toLowerCase()]=t.blockNumber,i.emit(r.topic,t)})})}),i._lastBlockNumber=e,i._balances=n}}),this.doPoll()},n.prototype.resetEventsBlock=function(t){this._lastBlockNumber=this.blockNumber,this._doPoll()},Object.defineProperty(n.prototype,"network",{get:function(){return this._network},enumerable:!0,configurable:!0}),n.prototype.getNetwork=function(){return this.ready},Object.defineProperty(n.prototype,"blockNumber",{get:function(){return this._lastBlockNumber<0?null:this._lastBlockNumber},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"polling",{get:function(){return null!=this._poller},set:function(t){var e=this;setTimeout(function(){t&&!e._poller?e._poller=setInterval(e._doPoll.bind(e),e.pollingInterval):!t&&e._poller&&(clearInterval(e._poller),e._poller=null)},0)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"pollingInterval",{get:function(){return this._pollingInterval},set:function(t){var e=this;if("number"!=typeof t||t<=0||Math.trunc(t)!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(function(){e._doPoll()},this._pollingInterval))},enumerable:!0,configurable:!0}),n.prototype.waitForTransaction=function(i,o){var s=this;return new Promise(function(e,t){var r=null;function n(t){r&&clearTimeout(r),e(t)}s.once(i,n),"number"==typeof o&&0i._emitted.block},function(){return i.perform("getBlock",{blockTag:n}).then(function(t){return null==t?null:S(t)})})}catch(t){}throw new Error("invalid block hash or block tag")})})},n.prototype.getTransaction=function(t){var n=this;return this.ready.then(function(){return p.resolveProperties({transactionHash:t}).then(function(t){var e=t.transactionHash,r={transactionHash:w(e)};return D(function(){return null==n._emitted["t:"+e.toLowerCase()]},function(){return n.perform("getTransaction",r).then(function(t){return null!=t&&(t=P(t)),t})})})})},n.prototype.getTransactionReceipt=function(t){var n=this;return this.ready.then(function(){return p.resolveProperties({transactionHash:t}).then(function(t){var e=t.transactionHash,r={transactionHash:w(e)};return D(function(){return null==n._emitted["t:"+e.toLowerCase()]},function(){return n.perform("getTransactionReceipt",r).then(function(t){var e,r;return null!=t&&((r=m(T,e=t)).logs.forEach(function(t,e){null==t.transactionLogIndex&&(t.transactionLogIndex=e)}),null!=e.status&&(r.byzantium=!0),t=r),t})})})})},n.prototype.getLogs=function(t){var n=this;return this.ready.then(function(){return p.resolveProperties(t).then(function(t){return n._resolveNames(t,["address"]).then(function(t){var e,r={filter:(e=t,m(R,e))};return n.perform("getLogs",r).then(function(t){return b(L)(t)})})})})},n.prototype.getEtherPrice=function(){var t=this;return this.ready.then(function(){return t.perform("getEtherPrice",{}).then(function(t){return t})})},n.prototype._resolveNames=function(t,e){var r=[],n=function(t){var e={};for(var r in t)e[r]=t[r];return e}(t);return e.forEach(function(e){void 0!==n[e]&&r.push(this.resolveName(n[e]).then(function(t){n[e]=t}))},this),Promise.all(r).then(function(){return n})},n.prototype._getResolver=function(n){var i=this;return this.getNetwork().then(function(t){t.ensAddress||y.throwError("network does support ENS",y.UNSUPPORTED_OPERATION,{operation:"ENS",network:t.name});var e="0x0178b8bf"+c.namehash(n).substring(2),r={to:t.ensAddress,data:e};return i.call(r).then(function(t){return 32!==h.hexDataLength(t)?null:a.getAddress(h.hexDataSlice(t,12))})})},n.prototype.resolveName=function(t){var e=this;if(t instanceof Promise)return t.then(function(t){return e.resolveName(t)});try{return Promise.resolve(a.getAddress(t))}catch(t){}var r=this,n=c.namehash(t);return this._getResolver(t).then(function(t){var e={to:t,data:"0x3b3b57de"+n.substring(2)};return r.call(e)}).then(function(t){if(32!==h.hexDataLength(t))return null;var e=a.getAddress(h.hexDataSlice(t,12));return"0x0000000000000000000000000000000000000000"===e?null:e})},n.prototype.lookupAddress=function(n){var e=this;if(n instanceof Promise)return n.then(function(t){return e.lookupAddress(t)});var t=(n=a.getAddress(n)).substring(2)+".addr.reverse",r=c.namehash(t),i=this;return this._getResolver(t).then(function(t){if(!t)return null;var e={to:t,data:"0x691f3431"+r.substring(2)};return i.call(e)}).then(function(t){if((t=t.substring(2)).length<64)return null;if((t=t.substring(64)).length<64)return null;var e=u.bigNumberify("0x"+t.substring(0,64)).toNumber();if(2*e>(t=t.substring(64)).length)return null;var r=l.toUtf8String("0x"+t.substring(0,2*e));return i.resolveName(r).then(function(t){return t!=n?null:r})})},n.prototype.doPoll=function(){},n.prototype.perform=function(t,e){return y.throwError(t+" not implemented",y.NOT_IMPLEMENTED,{operation:t}),null},n.prototype._startPending=function(){console.log("WARNING: this provider does not support pending events")},n.prototype._stopPending=function(){},n.prototype.on=function(t,e){var r=j(t);return this._events[r]||(this._events[r]=[]),this._events[r].push({eventName:t,listener:e,type:"on"}),"pending"===r&&this._startPending(),this.polling=!0,this},n.prototype.once=function(t,e){var r=j(t);return this._events[r]||(this._events[r]=[]),this._events[r].push({eventName:t,listener:e,type:"once"}),"pending"===r&&this._startPending(),this.polling=!0,this},n.prototype.emit=function(t){for(var e=[],r=1;rt.length)throw new Error("invalid null");return{consumed:0,value:this.coerceFunc("null",void 0)}},t}(b),_=function(s){function t(t,e,r,n){var i=this,o=(r?"int":"uint")+8*e;return(i=s.call(this,t,o,o,n,!1)||this).size=e,i.signed=r,i}return i(t,s),t.prototype.encode=function(e){try{var t=a.bigNumberify(e);return t=t.toTwos(8*this.size).maskn(8*this.size),this.signed&&(t=t.fromTwos(8*this.size).toTwos(256)),u.padZeros(u.arrayify(t),32)}catch(t){f.throwError("invalid number value",f.INVALID_ARGUMENT,{arg:this.localName,type:typeof e,value:e})}return null},t.prototype.decode=function(t,e){t.length>1]>>4&&(e[i]=e[i].toUpperCase()),8<=(15&r[i>>1])&&(e[i+1]=e[i+1].toUpperCase());return"0x"+e.join("")}for(var h={},l=0;l<10;l++)h[String(l)]=String(l);for(l=0;l<26;l++)h[String.fromCharCode(65+l)]=String(10+l);var f,c=Math.floor((f=9007199254740991,Math.log10?Math.log10(f):Math.log(f)/Math.LN10));function d(t){t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00";var e="";for(t.split("").forEach(function(t){e+=h[t]});e.length>=c;){var r=e.substring(0,c);e=parseInt(r,10)%97+e.substring(r.length)}for(var n=String(98-parseInt(e,10)%97);n.length<2;)n="0"+n;return n}function p(t){var e=null;if("string"!=typeof t&&a.throwError("invalid address",a.INVALID_ARGUMENT,{arg:"address",value:t}),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=u(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&a.throwError("bad address checksum",a.INVALID_ARGUMENT,{arg:"address",value:t});else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==d(t)&&a.throwError("bad icap checksum",a.INVALID_ARGUMENT,{arg:"address",value:t}),e=new n(t.substring(4),36).toString(16);e.length<40;)e="0"+e;e=u("0x"+e)}else a.throwError("invalid address",a.INVALID_ARGUMENT,{arg:"address",value:t});return e}r.getAddress=p,r.getIcapAddress=function(t){for(var e=new n(p(t).substring(2),16).toString(36).toUpperCase();e.length<30;)e="0"+e;return"XE"+d("XE00"+e)+e},r.getContractAddress=function(t){if(!t.from)throw new Error("missing from address");var e=t.nonce;return p("0x"+s.keccak256(i.encode([p(t.from),o.stripZeros(o.hexlify(e))])).substring(26))}},{"./bytes":62,"./errors":63,"./keccak256":66,"./rlp":68,"bn.js":2}],61:[function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},i=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(n,"__esModule",{value:!0});var o=r(t("bn.js")),s=t("./bytes"),a=t("./properties"),u=i(t("../utils/errors"));function h(t){return f(t)}var l=function(){function r(t){if(u.checkNew(this,r),"string"==typeof t)s.isHexString(t)?("0x"==t&&(t="0x0"),a.defineReadOnly(this,"_bn",new o.default.BN(t.substring(2),16))):"-"===t[0]&&s.isHexString(t.substring(1))?a.defineReadOnly(this,"_bn",new o.default.BN(t.substring(3),16).mul(n.ConstantNegativeOne._bn)):t.match(/^-?[0-9]*$/)&&(""==t&&(t="0"),a.defineReadOnly(this,"_bn",new o.default.BN(t)));else if("number"==typeof t){Math.trunc(t)!==t&&u.throwError("underflow",u.NUMERIC_FAULT,{operation:"setValue",fault:"underflow",value:t,outputValue:Math.trunc(t)});try{a.defineReadOnly(this,"_bn",new o.default.BN(t))}catch(t){u.throwError("overflow",u.NUMERIC_FAULT,{operation:"setValue",fault:"overflow",details:t.message})}}else o.default.BN.isBN(t)?a.defineReadOnly(this,"_bn",t):h(t)?a.defineReadOnly(this,"_bn",t._bn):s.isArrayish(t)?a.defineReadOnly(this,"_bn",new o.default.BN(s.hexlify(t).substring(2),16)):u.throwError("invalid BigNumber value",u.INVALID_ARGUMENT,{arg:"value",value:t})}return r.prototype.fromTwos=function(t){return new r(this._bn.fromTwos(t))},r.prototype.toTwos=function(t){return new r(this._bn.toTwos(t))},r.prototype.add=function(t){return new r(this._bn.add(c(t)._bn))},r.prototype.sub=function(t){return new r(this._bn.sub(c(t)._bn))},r.prototype.div=function(t){var e=c(t)._bn;return e.isZero()&&u.throwError("division by zero",u.NUMERIC_FAULT,{operation:"divide",fault:"division by zero"}),new r(this._bn.div(e))},r.prototype.mul=function(t){return new r(this._bn.mul(c(t)._bn))},r.prototype.mod=function(t){return new r(this._bn.mod(c(t)._bn))},r.prototype.pow=function(t){return new r(this._bn.pow(c(t)._bn))},r.prototype.maskn=function(t){return new r(this._bn.maskn(t))},r.prototype.eq=function(t){return this._bn.eq(c(t)._bn)},r.prototype.lt=function(t){return this._bn.lt(c(t)._bn)},r.prototype.lte=function(t){return this._bn.lte(c(t)._bn)},r.prototype.gt=function(t){return this._bn.gt(c(t)._bn)},r.prototype.gte=function(t){return this._bn.gte(c(t)._bn)},r.prototype.isZero=function(){return this._bn.isZero()},r.prototype.toNumber=function(){try{return this._bn.toNumber()}catch(t){u.throwError("overflow",u.NUMERIC_FAULT,{operation:"setValue",fault:"overflow",details:t.message})}return null},r.prototype.toString=function(){return this._bn.toString(10)},r.prototype.toHexString=function(){var t=this._bn.toString(16);return t.length%2&&(t="0"+t),"0x"+t},r}();function f(t){return t._bn&&t._bn.mod}function c(t){return h(t)?t:new l(t)}n.BigNumber=l,n.isBigNumber=f,n.bigNumberify=c,n.ConstantNegativeOne=c(-1),n.ConstantZero=c(0),n.ConstantOne=c(1),n.ConstantTwo=c(2),n.ConstantWeiPerEther=c(new o.default.BN("1000000000000000000"))},{"../utils/errors":63,"./bytes":62,"./properties":67,"bn.js":2}],62:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s=t("./errors");function a(t){return!!t._bn}function u(e){return e.slice||(e.slice=function(){var t=Array.prototype.slice.call(arguments);return new Uint8Array(Array.prototype.slice.apply(e,t))}),e}function h(t){if(!t||parseInt(t.length)!=t.length||"string"==typeof t)return!1;for(var e=0;e>4]+f[15&o])}return"0x"+n.join("")}return s.throwError("invalid hexlify value",null,{arg:"value",value:t}),"never"}function c(t,e){for(i(t)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:t});t.length<2*e+2;)t="0x0"+t.substring(2);return t}r.hexlify=o,r.hexDataLength=function(t){return i(t)&&t.length%2==0?(t.length-2)/2:null},r.hexDataSlice=function(t,e,r){return i(t)||s.throwError("invalid hex data",s.INVALID_ARGUMENT,{arg:"value",value:t}),t.length%2!=0&&s.throwError("hex data length must be even",s.INVALID_ARGUMENT,{arg:"value",value:t}),e=2+2*e,null!=r?"0x"+t.substring(e,e+2*r):"0x"+t.substring(e)},r.hexStripZeros=function(t){for(i(t)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:t});3>=8;return e}function i(t,e,r){for(var n=0,i=0;it.length)throw new Error("too short");if(e+1+r+(n=i(t,e+1,r))>t.length)throw new Error("to short");return a(t,e,e+1+r,r+n)}if(192<=t[e]){if(e+1+(n=t[e]-192)>t.length)throw new Error("invalid rlp data");return a(t,e,e+1,n)}if(184<=t[e]){var r;if(e+1+(r=t[e]-183)>t.length)throw new Error("invalid rlp data");if(e+1+r+(n=i(t,e+1,r))>t.length)throw new Error("invalid rlp data");return{consumed:1+r+n,result:o.hexlify(t.slice(e+1+r,e+1+r+n))}}if(128<=t[e]){var n;if(e+1+(n=t[e]-128)>t.length)throw new Error("invlaid rlp data");return{consumed:1+n,result:o.hexlify(t.slice(e+1,e+1+n))}}return{consumed:1,result:o.hexlify(t[e])}}r.encode=function(t){return o.hexlify(function e(t){if(Array.isArray(t)){var r=[];return t.forEach(function(t){r=r.concat(e(t))}),r.length<=55?(r.unshift(192+r.length),r):((n=s(r.length)).unshift(247+n.length),n.concat(r))}var n,i=Array.prototype.slice.call(o.arrayify(t));return 1===i.length&&i[0]<=127?i:i.length<=55?(i.unshift(128+i.length),i):((n=s(i.length)).unshift(183+n.length),n.concat(i))}(t))},r.decode=function(t){var e=o.arrayify(t),r=u(e,0);if(r.consumed!==e.length)throw new Error("invalid rlp data");return r.result}},{"./bytes":62}],69:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var i=t("./address"),o=t("./bytes"),s=t("./keccak256"),a=t("./properties"),u=n(t("./errors")),h=new(n(t("elliptic")).ec)("secp256k1");r.N="0x"+h.n.toString(16);var l=function(){function t(t){var e=h.keyFromPrivate(o.arrayify(t));a.defineReadOnly(this,"privateKey",o.hexlify(e.priv.toArray("be",32))),a.defineReadOnly(this,"publicKey","0x"+e.getPublic(!1,"hex")),a.defineReadOnly(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),a.defineReadOnly(this,"publicKeyBytes",e.getPublic().encode(null,!0))}return t.prototype.sign=function(t){var e=h.keyFromPrivate(o.arrayify(this.privateKey)).sign(o.arrayify(t),{canonical:!0});return{recoveryParam:e.recoveryParam,r:o.hexZeroPad("0x"+e.r.toString(16),32),s:o.hexZeroPad("0x"+e.s.toString(16),32),v:27+e.recoveryParam}},t}();function f(t,e){var r={r:o.arrayify(e.r),s:o.arrayify(e.s)};return"0x"+h.recoverPubKey(o.arrayify(t),r,e.recoveryParam).encode("hex",!1)}function c(t,e){var r=o.arrayify(t);if(32===r.length){var n=new l(r);return e?n.compressedPublicKey:n.publicKey}return 33===r.length?e?o.hexlify(r):"0x"+h.keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+h.keyFromPublic(r).getPublic(!0,"hex"):o.hexlify(r):(u.throwError("invalid public or private key",u.INVALID_ARGUMENT,{arg:"key",value:"[REDACTED]"}),null)}function d(t){var e="0x"+c(t).slice(4);return i.getAddress("0x"+s.keccak256(e).substring(26))}r.KeyPair=l,r.recoverPublicKey=f,r.computePublicKey=c,r.recoverAddress=function(t,e){return d(f(t,e))},r.computeAddress=d},{"./address":60,"./bytes":62,"./errors":63,"./keccak256":66,"./properties":67,elliptic:5}],70:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var i=n(t("hash.js")),o=t("./bytes"),s=i.sha256,a=i.sha512;r.sha256=function(t){return"0x"+s().update(o.arrayify(t)).digest("hex")},r.sha512=function(t){return"0x"+a().update(o.arrayify(t)).digest("hex")}},{"./bytes":62,"hash.js":20}],71:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var u=t("./bignumber"),h=t("./bytes"),l=t("./utf8"),n=t("./keccak256"),i=t("./sha2"),f=new RegExp("^bytes([0-9]+)$"),c=new RegExp("^(u?int)([0-9]*)$"),d=new RegExp("^(.*)\\[([0-9]*)\\]$"),p="0000000000000000000000000000000000000000000000000000000000000000";function o(t,r){if(t.length!=r.length)throw new Error("type/value count mismatch");var n=[];return t.forEach(function(t,e){n.push(function e(t,r,n){switch(t){case"address":return n?h.padZeros(r,32):h.arrayify(r);case"string":return l.toUtf8Bytes(r);case"bytes":return h.arrayify(r);case"bool":return r=r?"0x01":"0x00",n?h.padZeros(r,32):h.arrayify(r)}var i=t.match(c);if(i){if((o=parseInt(i[2]||"256"))%8!=0||0===o||256t.maxLength)throw(e=new Error("invalid "+t.name)).reason="too long",e.value=r,e;i.push(d.hexlify(r))}),n.chainId&&(i.push(d.hexlify(n.chainId)),i.push("0x"),i.push("0x"));var e=t(p.keccak256(y.encode(i))),r=27+e.recoveryParam;return n.chainId&&(i.pop(),i.pop(),i.pop(),r+=2*n.chainId+8),i.push(d.hexlify(r)),i.push(d.stripZeros(d.arrayify(e.r))),i.push(d.stripZeros(d.arrayify(e.s))),y.encode(i)},r.parse=function(t){var e=y.decode(t);if(9!==e.length)throw new Error("invalid transaction");var r,n={nonce:m(e[0]).toNumber(),gasPrice:m(e[1]),gasLimit:m(e[2]),to:(r=e[3],"0x"===r?null:f.getAddress(r)),value:m(e[4]),data:e[5],chainId:0},i=d.arrayify(e[6]),o=d.arrayify(e[7]),s=d.arrayify(e[8]);if(1<=i.length&&1<=o.length&&o.length<=32&&1<=s.length&&s.length<=32){n.v=c.bigNumberify(i).toNumber(),n.r=d.hexZeroPad(e[7],32),n.s=d.hexZeroPad(e[8],32);var a=(n.v-35)/2;a<0&&(a=0),a=Math.trunc(a),n.chainId=a;var u=n.v-27,h=e.slice(0,6);a&&(h.push(d.hexlify(a)),h.push("0x"),h.push("0x"),u-=2*a+8);var l=p.keccak256(y.encode(h));try{n.from=v.recoverAddress(l,{r:d.hexlify(o),s:d.hexlify(s),recoveryParam:u})}catch(t){console.log(t)}n.hash=p.keccak256(t)}return n}},{"./address":60,"./bignumber":61,"./bytes":62,"./keccak256":66,"./rlp":68,"./secp256k1":69}],73:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var l=t("./bignumber"),f=n(t("./errors")),s=["wei","kwei","Mwei","Gwei","szabo","finny","ether"],c=function(){var i={};function o(t){return{decimals:t.length-1,tenPower:l.bigNumberify(t)}}var r="1";return s.forEach(function(t){var e=o(r);i[t.toLowerCase()]=e,i[String(e.decimals)]=e,r+="000"}),function(t){var e=i[String(t).toLowerCase()];if(!e&&"number"==typeof t&&Math.trunc(t)==t&&0<=t&&t<=256){for(var r="1",n=0;nr.decimals&&f.throwError("underflow occurred",f.NUMERIC_FAULT,{operation:"division",fault:"underflow"});s.length>6|192:(55296==(64512&o)&&i+1>18|240,r[n++]=o>>12&63|128):r[n++]=o>>12|224,r[n++]=o>>6&63|128),r[n++]=63&o|128)}return u.arrayify(r)},r.toUtf8String=function(t){t=u.arrayify(t);for(var e="",r=0;r>7!=0){if(n>>6!=2){var i=null;if(n>>5==6)i=1;else if(n>>4==14)i=2;else if(n>>3==30)i=3;else if(n>>2==62)i=4;else{if(n>>1!=126)continue;i=5}if(r+i>t.length){for(;r>6==2;r++);if(r!=t.length)continue;return e}var o,s=n&(1<<8-i-1)-1;for(o=0;o>6!=2)break;s=s<<6|63&a}o==i?s<=65535?e+=String.fromCharCode(s):(s-=65536,e+=String.fromCharCode(55296+(s>>10&1023),56320+(1023&s))):r--}}else e+=String.fromCharCode(n)}return e}},{"./bytes":62}],75:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var h=t("xmlhttprequest"),i=t("./utf8"),o=t("./base64"),l=n(t("./errors"));r.fetchJson=function(s,a,u){var t=[];if("object"==typeof s&&null!=s.url){if(null==s.url&&l.throwError("missing URL",l.MISSING_ARGUMENT,{arg:"url"}),null!=s.user&&null!=s.password){"https:"!==s.url.substring(0,6)&&!0!==s.allowInsecure&&l.throwError("basic authentication requires a secure https url",l.INVALID_ARGUMENT,{arg:"url",url:s.url,user:s.user,password:"[REDACTED]"});var e=s.user+":"+s.password;t.push({key:"Authorization",value:"Basic "+o.encode(i.toUtf8Bytes(e))})}s=s.url}return new Promise(function(n,i){var o=new h.XMLHttpRequest;a?(o.open("POST",s,!0),t.push({key:"Content-Type",value:"application/json"})):o.open("GET",s,!0),t.forEach(function(t){o.setRequestHeader(t.key,t.value)}),o.onreadystatechange=function(){if(4===o.readyState){try{var t=JSON.parse(o.responseText)}catch(r){var e=new Error("invalid json response");return e.orginialError=r,e.responseText=o.responseText,e.url=s,void i(e)}if(u)try{t=u(t)}catch(r){return r.url=s,r.body=a,r.responseText=o.responseText,void i(r)}if(200!=o.status){var r=new Error("invalid response - "+o.status);return r.statusCode=o.statusCode,void i(r)}n(t)}},o.onerror=function(t){i(t)};try{a?o.send(a):o.send()}catch(t){var e=new Error("connection error");e.error=t,i(e)}})}},{"./base64":41,"./errors":63,"./utf8":74,xmlhttprequest:47}],76:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var f=t("../wordlists/lang-en"),c=t("../utils/bytes"),l=t("../utils/bignumber"),i=t("../utils/utf8"),o=t("../utils/pbkdf2"),d=t("../utils/hmac"),s=t("../utils/properties"),p=t("../utils/secp256k1"),v=t("../utils/sha2"),a=n(t("../utils/errors")),u=i.toUtf8Bytes("Bitcoin seed"),y=2147483648;function m(t){return(1<>3)]=t>>24-i&255;var o=d.computeHmac("sha512",this.chainCode,e),s=l.bigNumberify(o.slice(0,32)),a=o.slice(32),u=s.add(this.keyPair.privateKey).mod(p.N);return new h(c.arrayify(u),a,t,this.depth+1,r,n)},h.prototype.derivePath=function(t){var e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path");"m"===e[0]&&e.shift();for(var r=this,n=0;n>3]|=1<<7-i%8),i++}var u=32*r.length/3,h=m(r.length/3),l=c.arrayify(v.sha256(n.slice(0,u/8)))[0];if((l&=h)!==(n[n.length-1]&h))throw new Error("invalid checksum");return c.hexlify(n.slice(0,u/8))}r.HDNode=h,r.fromMnemonic=function(t,e){return w(t,e),g(b(t),t)},r.fromSeed=function(t){return g(t,null)},r.mnemonicToSeed=b,r.mnemonicToEntropy=w,r.entropyToMnemonic=function(t,e){if((t=c.arrayify(t)).length%4!=0||t.length<16||32>8-n,r.push(t[i]&(1<<8-n)-1),n+=3);var o=c.arrayify(v.sha256(t))[0],s=t.length/4;return o&=m(s),r[r.length-1]<<=s,r[r.length-1]|=o>>8-s,e||(e=f.langEn),e.join(r.map(function(t){return e.getWord(t)}))},r.isValidMnemonic=function(t,e){try{return w(t,e),!0}catch(t){}return!1}},{"../utils/bignumber":61,"../utils/bytes":62,"../utils/errors":63,"../utils/hmac":43,"../utils/pbkdf2":44,"../utils/properties":67,"../utils/secp256k1":69,"../utils/sha2":70,"../utils/utf8":74,"../wordlists/lang-en":81}],77:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var i=t("./wallet");r.Wallet=i.Wallet;var o=n(t("./hdnode"));r.HDNode=o;var s=t("./signing-key");r.SigningKey=s.SigningKey},{"./hdnode":76,"./signing-key":79,"./wallet":80}],78:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var I=t("aes-js"),m=t("scrypt-js"),T=t("uuid"),g=t("../utils/address"),R=t("../utils/bytes"),b=t("../utils/pbkdf2"),O=t("../utils/keccak256"),p=t("../utils/utf8"),C=t("../utils/random-bytes"),B=t("./signing-key"),L=n(t("./hdnode")),D="m/44'/60'/0'/0/0";function w(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),R.arrayify(t)}function U(t,e){for(t=String(t);t.length=h.length||Math.trunc(t)!=t)&&a.throwError("invalid wordlist index",a.INVALID_ARGUMENT,{arg:"index",value:t}),h[t]},e.prototype.getWordIndex=function(t){return l(),h.indexOf(t)},e}(s.Wordlist));r.langEn=f,s.register(f)},{"../utils/errors":63,"./wordlist":82}],82:[function(i,t,o){(function(e){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var r=!1,n=i("../utils/properties"),t=function(){function t(t){n.defineReadOnly(this,"locale",t)}return t.prototype.split=function(t){return t.toLowerCase().split(/ +/g)},t.prototype.join=function(t){return t.join(" ")},t}();o.Wordlist=t,o.register=function(t){r&&(e.wordlists||n.defineReadOnly(e,"wordlists",{}),n.defineReadOnly(e.wordlists,t.locale,t))},r=!0}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../utils/properties":67}],83:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0}),t("./utils/shims");var i=t("./contracts");r.Contract=i.Contract,r.Interface=i.Interface;var o=n(t("./providers"));r.providers=o;var s=n(t("./utils/errors"));r.errors=s;var a=t("./providers/networks");r.getNetwork=a.getNetwork;var u=n(t("./utils"));r.utils=u;var h=t("./wallet");r.HDNode=h.HDNode,r.SigningKey=h.SigningKey,r.Wallet=h.Wallet,console.log("@TODO: Get version");r.version="4.0.0"},{"./contracts":49,"./providers":53,"./providers/networks":56,"./utils":65,"./utils/errors":63,"./utils/shims":46,"./wallet":77}]},{},[83])(83)}); +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ethers=t()}}(function(){return function o(s,a,u){function h(e,t){if(!a[e]){if(!s[e]){var r="function"==typeof require&&require;if(!t&&r)return r(e,!0);if(l)return l(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var i=a[e]={exports:{}};s[e][0].call(i.exports,function(t){return h(s[e][1][t]||t)},i,i.exports,o,s,a,u)}return a[e].exports}for(var l="function"==typeof require&&require,t=0;t>4]+i[15&n])}return e.join("")}}),f={16:10,24:12,32:14},c=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],d=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],h=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],l=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],p=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],v=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],y=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],m=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],g=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],b=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],w=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],_=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],M=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],A=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],k=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function S(t){for(var e=[],r=0;r>2,this._Ke[r][e%4]=o[e],this._Kd[t-r][e%4]=o[e];for(var s,a=0,u=i;u>16&255]<<24^d[s>>8&255]<<16^d[255&s]<<8^d[s>>24&255]^c[a]<<24,a+=1,8!=i)for(e=1;e>8&255]<<8^d[s>>16&255]<<16^d[s>>24&255]<<24;for(e=i/2+1;e>2,l=u%4,this._Ke[h][l]=o[e],this._Kd[t-h][l]=o[e++],u++}for(var h=1;h>24&255]^M[s>>16&255]^A[s>>8&255]^k[255&s]},E.prototype.encrypt=function(t){if(16!=t.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var e=this._Ke.length-1,r=[0,0,0,0],n=S(t),i=0;i<4;i++)n[i]^=this._Ke[0][i];for(var o=1;o>24&255]^p[n[(i+1)%4]>>16&255]^v[n[(i+2)%4]>>8&255]^y[255&n[(i+3)%4]]^this._Ke[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Ke[e][i],a[4*i]=255&(d[n[i]>>24&255]^s>>24),a[4*i+1]=255&(d[n[(i+1)%4]>>16&255]^s>>16),a[4*i+2]=255&(d[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(d[255&n[(i+3)%4]]^s);return a},E.prototype.decrypt=function(t){if(16!=t.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var e=this._Kd.length-1,r=[0,0,0,0],n=S(t),i=0;i<4;i++)n[i]^=this._Kd[0][i];for(var o=1;o>24&255]^g[n[(i+3)%4]>>16&255]^b[n[(i+2)%4]>>8&255]^w[255&n[(i+1)%4]]^this._Kd[o][i];n=r.slice()}var s,a=u(16);for(i=0;i<4;i++)s=this._Kd[e][i],a[4*i]=255&(h[n[i]>>24&255]^s>>24),a[4*i+1]=255&(h[n[(i+3)%4]>>16&255]^s>>16),a[4*i+2]=255&(h[n[(i+2)%4]>>8&255]^s>>8),a[4*i+3]=255&(h[255&n[(i+1)%4]]^s);return a};var P=function(t){if(!(this instanceof P))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new E(t)};P.prototype.encrypt=function(t){if((t=o(t)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var e=u(t.length),r=u(16),n=0;n>=8},T.prototype.setBytes=function(t){if(16!=(t=o(t,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=t},T.prototype.increment=function(){for(var t=15;0<=t;t--){if(255!==this._counter[t]){this._counter[t]++;break}this._counter[t]=0}};var R=function(t,e){if(!(this instanceof R))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",e instanceof T||(e=new T(e)),this._counter=e,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new E(t)};R.prototype.encrypt=function(t){for(var e=o(t,!0),r=0;r>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);else if("le"===r)for(i=n=0;n>>26-s&67108863,26<=(s+=24)&&(s-=26,i++);return this.strip()},m.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r>>26-o&4194303,26<=(o+=24)&&(o-=26,n++);r+6!==e&&(i=s(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},m.prototype._parseBase=function(t,e,r){this.words=[0];for(var n=0,i=this.length=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,s=o%n,a=Math.min(o,o-s)+r,u=0,h=r;h"};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function i(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;n=(r.length=n)-1|0;var i=0|t.words[0],o=0|e.words[0],s=i*o,a=67108863&s,u=s/67108864|0;r.words[0]=a;for(var h=1;h>>26,f=67108863&u,c=Math.min(h,e.length-1),d=Math.max(0,h-t.length+1);d<=c;d++){var p=h-d|0;l+=(s=(i=0|t.words[p])*(o=0|e.words[d])+f)/67108864|0,f=67108863&s}r.words[h]=0|f,u=0|l}return 0!==u?r.words[h]=0|u:r.length--,r.strip()}m.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,i=0,o=0;o>>24-n&16777215)||o!==this.length-1?c[6-a.length]+a+r:a+r,26<=(n+=2)&&(n-=26,o--)}for(0!==i&&(r=i.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&2<=t&&t<=36){var u=d[t],h=p[t];r="";var l=this.clone();for(l.negative=0;!l.isZero();){var f=l.modn(h).toString(t);r=(l=l.idivn(h)).isZero()?f+r:c[u-f.length]+f+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}y(!1,"Base should be between 2 and 36")},m.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:2>>=13),64<=e&&(r+=7,e>>>=7),8<=e&&(r+=4,e>>>=4),2<=e&&(r+=2,e>>>=2),r+e},m.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},m.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},m.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},m.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},m.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},m.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},m.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},m.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},m.prototype.inotn=function(t){y("number"==typeof t&&0<=t);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),0>26-r),this.strip()},m.prototype.notn=function(t){return this.clone().inotn(t)},m.prototype.setn=function(t,e){y("number"==typeof t&&0<=t);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},m.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;0>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],p=8191&d,v=d>>>13,y=0|s[2],m=8191&y,g=y>>>13,b=0|s[3],w=8191&b,_=b>>>13,M=0|s[4],A=8191&M,k=M>>>13,S=0|s[5],E=8191&S,P=S>>>13,N=0|s[6],x=8191&N,I=N>>>13,T=0|s[7],R=8191&T,O=T>>>13,C=0|s[8],B=8191&C,L=C>>>13,D=0|s[9],U=8191&D,j=D>>>13,F=0|a[0],G=8191&F,z=F>>>13,H=0|a[1],V=8191&H,q=H>>>13,K=0|a[2],W=8191&K,J=K>>>13,Z=0|a[3],$=8191&Z,X=Z>>>13,Y=0|a[4],Q=8191&Y,tt=Y>>>13,et=0|a[5],rt=8191&et,nt=et>>>13,it=0|a[6],ot=8191&it,st=it>>>13,at=0|a[7],ut=8191&at,ht=at>>>13,lt=0|a[8],ft=8191<,ct=lt>>>13,dt=0|a[9],pt=8191&dt,vt=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var yt=(h+(n=Math.imul(f,G))|0)+((8191&(i=(i=Math.imul(f,z))+Math.imul(c,G)|0))<<13)|0;h=((o=Math.imul(c,z))+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(p,G),i=(i=Math.imul(p,z))+Math.imul(v,G)|0,o=Math.imul(v,z);var mt=(h+(n=n+Math.imul(f,V)|0)|0)+((8191&(i=(i=i+Math.imul(f,q)|0)+Math.imul(c,V)|0))<<13)|0;h=((o=o+Math.imul(c,q)|0)+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(m,G),i=(i=Math.imul(m,z))+Math.imul(g,G)|0,o=Math.imul(g,z),n=n+Math.imul(p,V)|0,i=(i=i+Math.imul(p,q)|0)+Math.imul(v,V)|0,o=o+Math.imul(v,q)|0;var gt=(h+(n=n+Math.imul(f,W)|0)|0)+((8191&(i=(i=i+Math.imul(f,J)|0)+Math.imul(c,W)|0))<<13)|0;h=((o=o+Math.imul(c,J)|0)+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(w,G),i=(i=Math.imul(w,z))+Math.imul(_,G)|0,o=Math.imul(_,z),n=n+Math.imul(m,V)|0,i=(i=i+Math.imul(m,q)|0)+Math.imul(g,V)|0,o=o+Math.imul(g,q)|0,n=n+Math.imul(p,W)|0,i=(i=i+Math.imul(p,J)|0)+Math.imul(v,W)|0,o=o+Math.imul(v,J)|0;var bt=(h+(n=n+Math.imul(f,$)|0)|0)+((8191&(i=(i=i+Math.imul(f,X)|0)+Math.imul(c,$)|0))<<13)|0;h=((o=o+Math.imul(c,X)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(A,G),i=(i=Math.imul(A,z))+Math.imul(k,G)|0,o=Math.imul(k,z),n=n+Math.imul(w,V)|0,i=(i=i+Math.imul(w,q)|0)+Math.imul(_,V)|0,o=o+Math.imul(_,q)|0,n=n+Math.imul(m,W)|0,i=(i=i+Math.imul(m,J)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,J)|0,n=n+Math.imul(p,$)|0,i=(i=i+Math.imul(p,X)|0)+Math.imul(v,$)|0,o=o+Math.imul(v,X)|0;var wt=(h+(n=n+Math.imul(f,Q)|0)|0)+((8191&(i=(i=i+Math.imul(f,tt)|0)+Math.imul(c,Q)|0))<<13)|0;h=((o=o+Math.imul(c,tt)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(E,G),i=(i=Math.imul(E,z))+Math.imul(P,G)|0,o=Math.imul(P,z),n=n+Math.imul(A,V)|0,i=(i=i+Math.imul(A,q)|0)+Math.imul(k,V)|0,o=o+Math.imul(k,q)|0,n=n+Math.imul(w,W)|0,i=(i=i+Math.imul(w,J)|0)+Math.imul(_,W)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(m,$)|0,i=(i=i+Math.imul(m,X)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,X)|0,n=n+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(v,Q)|0,o=o+Math.imul(v,tt)|0;var _t=(h+(n=n+Math.imul(f,rt)|0)|0)+((8191&(i=(i=i+Math.imul(f,nt)|0)+Math.imul(c,rt)|0))<<13)|0;h=((o=o+Math.imul(c,nt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(x,G),i=(i=Math.imul(x,z))+Math.imul(I,G)|0,o=Math.imul(I,z),n=n+Math.imul(E,V)|0,i=(i=i+Math.imul(E,q)|0)+Math.imul(P,V)|0,o=o+Math.imul(P,q)|0,n=n+Math.imul(A,W)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(k,W)|0,o=o+Math.imul(k,J)|0,n=n+Math.imul(w,$)|0,i=(i=i+Math.imul(w,X)|0)+Math.imul(_,$)|0,o=o+Math.imul(_,X)|0,n=n+Math.imul(m,Q)|0,i=(i=i+Math.imul(m,tt)|0)+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0,n=n+Math.imul(p,rt)|0,i=(i=i+Math.imul(p,nt)|0)+Math.imul(v,rt)|0,o=o+Math.imul(v,nt)|0;var Mt=(h+(n=n+Math.imul(f,ot)|0)|0)+((8191&(i=(i=i+Math.imul(f,st)|0)+Math.imul(c,ot)|0))<<13)|0;h=((o=o+Math.imul(c,st)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(R,G),i=(i=Math.imul(R,z))+Math.imul(O,G)|0,o=Math.imul(O,z),n=n+Math.imul(x,V)|0,i=(i=i+Math.imul(x,q)|0)+Math.imul(I,V)|0,o=o+Math.imul(I,q)|0,n=n+Math.imul(E,W)|0,i=(i=i+Math.imul(E,J)|0)+Math.imul(P,W)|0,o=o+Math.imul(P,J)|0,n=n+Math.imul(A,$)|0,i=(i=i+Math.imul(A,X)|0)+Math.imul(k,$)|0,o=o+Math.imul(k,X)|0,n=n+Math.imul(w,Q)|0,i=(i=i+Math.imul(w,tt)|0)+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(m,rt)|0,i=(i=i+Math.imul(m,nt)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,nt)|0,n=n+Math.imul(p,ot)|0,i=(i=i+Math.imul(p,st)|0)+Math.imul(v,ot)|0,o=o+Math.imul(v,st)|0;var At=(h+(n=n+Math.imul(f,ut)|0)|0)+((8191&(i=(i=i+Math.imul(f,ht)|0)+Math.imul(c,ut)|0))<<13)|0;h=((o=o+Math.imul(c,ht)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,G),i=(i=Math.imul(B,z))+Math.imul(L,G)|0,o=Math.imul(L,z),n=n+Math.imul(R,V)|0,i=(i=i+Math.imul(R,q)|0)+Math.imul(O,V)|0,o=o+Math.imul(O,q)|0,n=n+Math.imul(x,W)|0,i=(i=i+Math.imul(x,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,n=n+Math.imul(E,$)|0,i=(i=i+Math.imul(E,X)|0)+Math.imul(P,$)|0,o=o+Math.imul(P,X)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,tt)|0)+Math.imul(k,Q)|0,o=o+Math.imul(k,tt)|0,n=n+Math.imul(w,rt)|0,i=(i=i+Math.imul(w,nt)|0)+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(m,ot)|0,i=(i=i+Math.imul(m,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0,n=n+Math.imul(p,ut)|0,i=(i=i+Math.imul(p,ht)|0)+Math.imul(v,ut)|0,o=o+Math.imul(v,ht)|0;var kt=(h+(n=n+Math.imul(f,ft)|0)|0)+((8191&(i=(i=i+Math.imul(f,ct)|0)+Math.imul(c,ft)|0))<<13)|0;h=((o=o+Math.imul(c,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,G),i=(i=Math.imul(U,z))+Math.imul(j,G)|0,o=Math.imul(j,z),n=n+Math.imul(B,V)|0,i=(i=i+Math.imul(B,q)|0)+Math.imul(L,V)|0,o=o+Math.imul(L,q)|0,n=n+Math.imul(R,W)|0,i=(i=i+Math.imul(R,J)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(x,$)|0,i=(i=i+Math.imul(x,X)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,X)|0,n=n+Math.imul(E,Q)|0,i=(i=i+Math.imul(E,tt)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,tt)|0,n=n+Math.imul(A,rt)|0,i=(i=i+Math.imul(A,nt)|0)+Math.imul(k,rt)|0,o=o+Math.imul(k,nt)|0,n=n+Math.imul(w,ot)|0,i=(i=i+Math.imul(w,st)|0)+Math.imul(_,ot)|0,o=o+Math.imul(_,st)|0,n=n+Math.imul(m,ut)|0,i=(i=i+Math.imul(m,ht)|0)+Math.imul(g,ut)|0,o=o+Math.imul(g,ht)|0,n=n+Math.imul(p,ft)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(v,ft)|0,o=o+Math.imul(v,ct)|0;var St=(h+(n=n+Math.imul(f,pt)|0)|0)+((8191&(i=(i=i+Math.imul(f,vt)|0)+Math.imul(c,pt)|0))<<13)|0;h=((o=o+Math.imul(c,vt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(U,V),i=(i=Math.imul(U,q))+Math.imul(j,V)|0,o=Math.imul(j,q),n=n+Math.imul(B,W)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(L,W)|0,o=o+Math.imul(L,J)|0,n=n+Math.imul(R,$)|0,i=(i=i+Math.imul(R,X)|0)+Math.imul(O,$)|0,o=o+Math.imul(O,X)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,tt)|0)+Math.imul(I,Q)|0,o=o+Math.imul(I,tt)|0,n=n+Math.imul(E,rt)|0,i=(i=i+Math.imul(E,nt)|0)+Math.imul(P,rt)|0,o=o+Math.imul(P,nt)|0,n=n+Math.imul(A,ot)|0,i=(i=i+Math.imul(A,st)|0)+Math.imul(k,ot)|0,o=o+Math.imul(k,st)|0,n=n+Math.imul(w,ut)|0,i=(i=i+Math.imul(w,ht)|0)+Math.imul(_,ut)|0,o=o+Math.imul(_,ht)|0,n=n+Math.imul(m,ft)|0,i=(i=i+Math.imul(m,ct)|0)+Math.imul(g,ft)|0,o=o+Math.imul(g,ct)|0;var Et=(h+(n=n+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,vt)|0)+Math.imul(v,pt)|0))<<13)|0;h=((o=o+Math.imul(v,vt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,W),i=(i=Math.imul(U,J))+Math.imul(j,W)|0,o=Math.imul(j,J),n=n+Math.imul(B,$)|0,i=(i=i+Math.imul(B,X)|0)+Math.imul(L,$)|0,o=o+Math.imul(L,X)|0,n=n+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,tt)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(x,rt)|0,i=(i=i+Math.imul(x,nt)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,nt)|0,n=n+Math.imul(E,ot)|0,i=(i=i+Math.imul(E,st)|0)+Math.imul(P,ot)|0,o=o+Math.imul(P,st)|0,n=n+Math.imul(A,ut)|0,i=(i=i+Math.imul(A,ht)|0)+Math.imul(k,ut)|0,o=o+Math.imul(k,ht)|0,n=n+Math.imul(w,ft)|0,i=(i=i+Math.imul(w,ct)|0)+Math.imul(_,ft)|0,o=o+Math.imul(_,ct)|0;var Pt=(h+(n=n+Math.imul(m,pt)|0)|0)+((8191&(i=(i=i+Math.imul(m,vt)|0)+Math.imul(g,pt)|0))<<13)|0;h=((o=o+Math.imul(g,vt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,$),i=(i=Math.imul(U,X))+Math.imul(j,$)|0,o=Math.imul(j,X),n=n+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,tt)|0)+Math.imul(L,Q)|0,o=o+Math.imul(L,tt)|0,n=n+Math.imul(R,rt)|0,i=(i=i+Math.imul(R,nt)|0)+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(x,ot)|0,i=(i=i+Math.imul(x,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,n=n+Math.imul(E,ut)|0,i=(i=i+Math.imul(E,ht)|0)+Math.imul(P,ut)|0,o=o+Math.imul(P,ht)|0,n=n+Math.imul(A,ft)|0,i=(i=i+Math.imul(A,ct)|0)+Math.imul(k,ft)|0,o=o+Math.imul(k,ct)|0;var Nt=(h+(n=n+Math.imul(w,pt)|0)|0)+((8191&(i=(i=i+Math.imul(w,vt)|0)+Math.imul(_,pt)|0))<<13)|0;h=((o=o+Math.imul(_,vt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,n=Math.imul(U,Q),i=(i=Math.imul(U,tt))+Math.imul(j,Q)|0,o=Math.imul(j,tt),n=n+Math.imul(B,rt)|0,i=(i=i+Math.imul(B,nt)|0)+Math.imul(L,rt)|0,o=o+Math.imul(L,nt)|0,n=n+Math.imul(R,ot)|0,i=(i=i+Math.imul(R,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,n=n+Math.imul(x,ut)|0,i=(i=i+Math.imul(x,ht)|0)+Math.imul(I,ut)|0,o=o+Math.imul(I,ht)|0,n=n+Math.imul(E,ft)|0,i=(i=i+Math.imul(E,ct)|0)+Math.imul(P,ft)|0,o=o+Math.imul(P,ct)|0;var xt=(h+(n=n+Math.imul(A,pt)|0)|0)+((8191&(i=(i=i+Math.imul(A,vt)|0)+Math.imul(k,pt)|0))<<13)|0;h=((o=o+Math.imul(k,vt)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,rt),i=(i=Math.imul(U,nt))+Math.imul(j,rt)|0,o=Math.imul(j,nt),n=n+Math.imul(B,ot)|0,i=(i=i+Math.imul(B,st)|0)+Math.imul(L,ot)|0,o=o+Math.imul(L,st)|0,n=n+Math.imul(R,ut)|0,i=(i=i+Math.imul(R,ht)|0)+Math.imul(O,ut)|0,o=o+Math.imul(O,ht)|0,n=n+Math.imul(x,ft)|0,i=(i=i+Math.imul(x,ct)|0)+Math.imul(I,ft)|0,o=o+Math.imul(I,ct)|0;var It=(h+(n=n+Math.imul(E,pt)|0)|0)+((8191&(i=(i=i+Math.imul(E,vt)|0)+Math.imul(P,pt)|0))<<13)|0;h=((o=o+Math.imul(P,vt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,ot),i=(i=Math.imul(U,st))+Math.imul(j,ot)|0,o=Math.imul(j,st),n=n+Math.imul(B,ut)|0,i=(i=i+Math.imul(B,ht)|0)+Math.imul(L,ut)|0,o=o+Math.imul(L,ht)|0,n=n+Math.imul(R,ft)|0,i=(i=i+Math.imul(R,ct)|0)+Math.imul(O,ft)|0,o=o+Math.imul(O,ct)|0;var Tt=(h+(n=n+Math.imul(x,pt)|0)|0)+((8191&(i=(i=i+Math.imul(x,vt)|0)+Math.imul(I,pt)|0))<<13)|0;h=((o=o+Math.imul(I,vt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,ut),i=(i=Math.imul(U,ht))+Math.imul(j,ut)|0,o=Math.imul(j,ht),n=n+Math.imul(B,ft)|0,i=(i=i+Math.imul(B,ct)|0)+Math.imul(L,ft)|0,o=o+Math.imul(L,ct)|0;var Rt=(h+(n=n+Math.imul(R,pt)|0)|0)+((8191&(i=(i=i+Math.imul(R,vt)|0)+Math.imul(O,pt)|0))<<13)|0;h=((o=o+Math.imul(O,vt)|0)+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,ft),i=(i=Math.imul(U,ct))+Math.imul(j,ft)|0,o=Math.imul(j,ct);var Ot=(h+(n=n+Math.imul(B,pt)|0)|0)+((8191&(i=(i=i+Math.imul(B,vt)|0)+Math.imul(L,pt)|0))<<13)|0;h=((o=o+Math.imul(L,vt)|0)+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863;var Ct=(h+(n=Math.imul(U,pt))|0)+((8191&(i=(i=Math.imul(U,vt))+Math.imul(j,pt)|0))<<13)|0;return h=((o=Math.imul(j,vt))+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,u[0]=yt,u[1]=mt,u[2]=gt,u[3]=bt,u[4]=wt,u[5]=_t,u[6]=Mt,u[7]=At,u[8]=kt,u[9]=St,u[10]=Et,u[11]=Pt,u[12]=Nt,u[13]=xt,u[14]=It,u[15]=Tt,u[16]=Rt,u[17]=Ot,u[18]=Ct,0!==h&&(u[19]=h,r.length++),r};function a(t,e,r){return(new u).mulp(t,e,r)}function u(t,e){this.x=t,this.y=e}Math.imul||(o=i),m.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?o(this,t,e):r<63?i(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}(this,t,e):a(this,t,e)},u.prototype.makeRBT=function(t){for(var e=new Array(t),r=m.prototype._countBits(t)-1,n=0;n>=1;return n},u.prototype.permute=function(t,e,r,n,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,r[2*o+1]=8191&i,i>>>=13;for(o=2*e;o>=26,e+=n/67108864|0,e+=i>>>26,this.words[r]=67108863&i}return 0!==e&&(this.words[r]=e,this.length++),this},m.prototype.muln=function(t){return this.clone().imuln(t)},m.prototype.sqr=function(){return this.mul(this)},m.prototype.isqr=function(){return this.imul(this.clone())},m.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}(t);if(0===e.length)return new m(1);for(var r=this,n=0;n>>26-r<<26-r;if(0!==r){var o=0;for(e=0;e>>26-r}o&&(this.words[e]=o,this.length++)}if(0!==n){for(e=this.length-1;0<=e;e--)this.words[e+n]=this.words[e];for(e=0;e>>i<o)for(this.length-=o,u=0;u>>i,h=l&s}return a&&0!==h&&(a.words[a.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},m.prototype.ishrn=function(t,e,r){return y(0===this.negative),this.iushrn(t,e,r)},m.prototype.shln=function(t){return this.clone().ishln(t)},m.prototype.ushln=function(t){return this.clone().iushln(t)},m.prototype.shrn=function(t){return this.clone().ishrn(t)},m.prototype.ushrn=function(t){return this.clone().iushrn(t)},m.prototype.testn=function(t){y("number"==typeof t&&0<=t);var e=t%26,r=(t-e)/26,n=1<>>e<>26)-(a/67108864|0),this.words[n+r]=67108863&i}for(;n>26,this.words[n+r]=67108863&i;if(0===s)return this.strip();for(y(-1===s),n=s=0;n>26,this.words[n]=67108863&i;return this.negative=1,this.strip()},m.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),i=t,o=0|i.words[i.length-1];0!==(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,a=n.length-i.length;if("mod"!==e){(s=new m(null)).length=a+1,s.words=new Array(s.length);for(var u=0;uthis.length||this.cmp(t)<0?{div:new m(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new m(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new m(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,i,o},m.prototype.div=function(t){return this.divmod(t,"div",!1).div},m.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},m.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},m.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},m.prototype.modn=function(t){y(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;0<=n;n--)r=(e*r+(0|this.words[n]))%t;return r},m.prototype.idivn=function(t){y(t<=67108863);for(var e=0,r=this.length-1;0<=r;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},m.prototype.divn=function(t){return this.clone().idivn(t)},m.prototype.egcd=function(t){y(0===t.negative),y(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new m(1),i=new m(0),o=new m(0),s=new m(1),a=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++a;for(var u=r.clone(),h=e.clone();!e.isZero();){for(var l=0,f=1;0==(e.words[0]&f)&&l<26;++l,f<<=1);if(0>>26,s&=67108863,this.words[o]=s}return 0!==i&&(this.words[o]=i,this.length++),this},m.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},m.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),1t.length)return 1;if(this.lengththis.n;);var n=e>>22,i=o}i>>>=22,0===(t.words[n-10]=i)&&10>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},m._prime=function(t){if(h[t])return h[t];var e;if("k256"===t)e=new v;else if("p224"===t)e=new g;else if("p192"===t)e=new b;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new w}return h[t]=e},_.prototype._verify1=function(t){y(0===t.negative,"red works only with positives"),y(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){y(0==(t.negative|e.negative),"red works only with positives"),y(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return 0<=r.cmp(this.m)&&r.isub(this.m),r._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return 0<=r.cmp(this.m)&&r.isub(this.m),r},_.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(y(e%2==1),3===e){var r=this.m.add(new m(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),i=0;!n.isZero()&&0===n.andln(1);)i++,n.iushrn(1);y(!n.isZero());var o=new m(1).toRed(this),s=o.redNeg(),a=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new m(2*u*u).toRed(this);0!==this.pow(u,a).cmp(s);)u.redIAdd(s);for(var h=this.pow(u,n),l=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),c=i;0!==f.cmp(o);){for(var d=f,p=0;0!==d.cmp(o);p++)d=d.redSqr();y(p>h&1;i!==r[0]&&(i=this.sqr(i)),0!==l||0!==o?(o<<=1,o|=l,(4===++s||0===n&&0===h)&&(i=this.mul(i,r[o]),o=s=0)):s=0}a=26}return i},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},m.mont=function(t){return new M(t)},r(M,_),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new m(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return 0<=i.cmp(this.m)?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},M.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t,this)},{buffer:4}],3:[function(t,e,r){var n=t("../../src.ts/utils").randomBytes;e.exports=function(t){return n(t)}},{"../../src.ts/utils":65}],4:[function(t,e,r){},{}],5:[function(t,e,r){"use strict";var n=r;n.version=t("../package.json").version,n.utils=t("./elliptic/utils"),n.rand=t("brorand"),n.hmacDRBG=t("./elliptic/hmac-drbg"),n.curve=t("./elliptic/curve"),n.curves=t("./elliptic/curves"),n.ec=t("./elliptic/ec"),n.eddsa=t("./elliptic/eddsa")},{"../package.json":19,"./elliptic/curve":8,"./elliptic/curves":11,"./elliptic/ec":12,"./elliptic/eddsa":15,"./elliptic/hmac-drbg":16,"./elliptic/utils":18,brorand:3}],6:[function(t,e,r){"use strict";var n=t("bn.js"),i=t("../../elliptic").utils,S=i.getNAF,E=i.getJSF,f=i.assert;function o(t,e){this.type=t,this.p=new n(e.p,16),this.red=e.prime?n.red(e.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=e.n&&new n(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||0>1]):s.mixedAdd(i[-u-1>>1].neg()):0>1]):s.add(i[-u-1>>1].neg())}return"affine"===t.type?s.toP():s},o.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,s=this._wnafT2,a=this._wnafT3,u=0,h=0;h>1]:k<0&&(A=s[y][-k-1>>1].neg()),b="affine"===A.type?b.mixedAdd(A):b.add(A))}}for(h=0;h=Math.ceil((t.bitLength()+1)/e.step)},s.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},h.prototype.isInfinity=function(){return this.inf},h.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},h.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),s=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},h.prototype.getX=function(){return this.x.fromRed()},h.prototype.getY=function(){return this.y.fromRed()},h.prototype.mul=function(t){return t=new _(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},h.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},h.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},h.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},h.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},h.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(l,s.BasePoint),u.prototype.jpoint=function(t,e,r){return new l(this,t,e,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=n.redSub(i),u=o.redSub(s);if(0===a.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=a.redSqr(),l=h.redMul(a),f=n.redMul(h),c=u.redSqr().redIAdd(l).redISub(f).redISub(f),d=u.redMul(f.redISub(c)).redISub(o.redMul(l)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(c,d,p)},l.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(n),a=i.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=s.redSqr(),h=u.redMul(s),l=r.redMul(u),f=a.redSqr().redIAdd(h).redISub(l).redISub(l),c=a.redMul(l.redISub(f)).redISub(i.redMul(h)),d=this.z.redMul(s);return this.curve.jpoint(f,c,d)},l.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":5,"../curve":8,"bn.js":2,inherits:32}],11:[function(t,e,r){"use strict";var n,i=r,o=t("hash.js"),s=t("../elliptic"),a=s.utils.assert;function u(t){"short"===t.type?this.curve=new s.curve.short(t):"edwards"===t.type?this.curve=new s.curve.edwards(t):this.curve=new s.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function h(e,r){Object.defineProperty(i,e,{configurable:!0,enumerable:!0,get:function(){var t=new u(r);return Object.defineProperty(i,e,{configurable:!0,enumerable:!0,value:t}),t}})}i.PresetCurve=u,h("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),h("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),h("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),h("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),h("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),h("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),h("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{n=t("./precomputed/secp256k1")}catch(t){n=void 0}h("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",n]})},{"../elliptic":5,"./precomputed/secp256k1":17,"hash.js":20}],12:[function(t,e,r){"use strict";var y=t("bn.js"),m=t("../../elliptic"),d=m.utils.assert,n=t("./key"),g=t("./signature");function i(t){if(!(this instanceof i))return new i(t);"string"==typeof t&&(d(m.curves.hasOwnProperty(t),"Unknown curve "+t),t=m.curves[t]),t instanceof m.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}(e.exports=i).prototype.keyPair=function(t){return new n(this,t)},i.prototype.keyFromPrivate=function(t,e){return n.fromPrivate(this,t,e)},i.prototype.keyFromPublic=function(t,e){return n.fromPublic(this,t,e)},i.prototype.genKeyPair=function(t){t||(t={});for(var e=new m.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||m.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new y(2));;){var i=new y(e.generate(r));if(!(0>1;if(0<=s.cmp(this.curve.p.umod(this.curve.n))&&h)throw new Error("Unable to find sencond key candinate");s=h?this.curve.pointFromX(s.add(this.curve.n),u):this.curve.pointFromX(s,u);var l=e.r.invm(i),f=i.sub(o).mul(l).umod(i),c=a.mul(l).umod(i);return this.g.mulAdd(f,s,c)},i.prototype.getKeyRecoveryParam=function(t,e,r,n){if(null!==(e=new g(e,n)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":5,"./key":13,"./signature":14,"bn.js":2}],13:[function(t,e,r){"use strict";var n=t("bn.js"),i=t("../../elliptic").utils.assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}(e.exports=o).fromPublic=function(t,e,r){return e instanceof o?e:new o(t,{pub:e,pubEnc:r})},o.fromPrivate=function(t,e,r){return e instanceof o?e:new o(t,{priv:e,privEnc:r})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new n(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?i(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||i(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.mul(this.priv).getX()},o.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return""}},{"../../elliptic":5,"bn.js":2}],14:[function(t,e,r){"use strict";var a=t("bn.js"),u=t("../../elliptic").utils,n=u.assert;function i(t,e){if(t instanceof i)return t;this._importDER(t,e)||(n(t.r&&t.s,"Signature without r or s"),this.r=new a(t.r,16),this.s=new a(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function h(){this.place=0}function l(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,s=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}(e.exports=i).prototype._importDER=function(t,e){t=u.toArray(t,e);var r=new h;if(48!==t[r.place++])return!1;if(l(t,r)+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var n=l(t,r),i=t.slice(r.place,n+r.place);if(r.place+=n,2!==t[r.place++])return!1;var o=l(t,r);if(t.length!==o+r.place)return!1;var s=t.slice(r.place,o+r.place);return 0===i[0]&&128&i[1]&&(i=i.slice(1)),0===s[0]&&128&s[1]&&(s=s.slice(1)),this.r=new a(i),this.s=new a(s),!(this.recoveryParam=null)},i.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=s(e),r=s(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),(n=n.concat(e)).push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),u.encode(o,t)}},{"../../elliptic":5,"bn.js":2}],15:[function(t,e,r){arguments[4][7][0].apply(r,arguments)},{dup:7}],16:[function(t,e,r){"use strict";var n=t("hash.js"),s=t("../elliptic").utils,i=s.assert;function o(t){if(!(this instanceof o))return new o(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this.reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=s.toArray(t.entropy,t.entropyEnc),r=s.toArray(t.nonce,t.nonceEnc),n=s.toArray(t.pers,t.persEnc);i(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}(e.exports=o).prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this.reseed=1},o.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=s.toArray(r,n),this._update(r));for(var i=[];i.length>8,s=255&i;o?r.push(o,s):r.push(s)}return r},n.zero2=o,n.toHex=s,n.encode=function(t,e){return"hex"===e?s(t):t},n.getNAF=function(t,e){for(var r=[],n=1<>1)-1>1)-s:s,i.isubn(o)}else o=0;r.push(o);for(var a=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,u=1;u=this._delta8){var r=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else for(n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0,o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),i(t.length<=this.blockSize);for(var e=t.length;e>>3},r.g1_256=function(t){return n(t,17)^n(t,19)^t>>>10}},{"../utils":31}],31:[function(t,e,r){"use strict";var h=t("minimalistic-assert"),n=t("inherits");function o(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function i(t){return 1===t.length?"0"+t:t}function s(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}r.inherits=n,r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n>8,s=255&i;o?r.push(o,s):r.push(s)}else for(n=0;n>>0}return o},r.split32=function(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r},r.rotr32=function(t,e){return t>>>e|t<<32-e},r.rotl32=function(t,e){return t<>>32-e},r.sum32=function(t,e){return t+e>>>0},r.sum32_3=function(t,e,r){return t+e+r>>>0},r.sum32_4=function(t,e,r,n){return t+e+r+n>>>0},r.sum32_5=function(t,e,r,n,i){return t+e+r+n+i>>>0},r.sum64=function(t,e,r,n){var i=t[e],o=n+t[e+1]>>>0,s=(o>>0,t[e+1]=o},r.sum64_hi=function(t,e,r,n){return(e+n>>>0>>0},r.sum64_lo=function(t,e,r,n){return e+n>>>0},r.sum64_4_hi=function(t,e,r,n,i,o,s,a){var u=0,h=e;return u+=(h=h+n>>>0)>>0)>>0)>>0},r.sum64_4_lo=function(t,e,r,n,i,o,s,a){return e+n+o+a>>>0},r.sum64_5_hi=function(t,e,r,n,i,o,s,a,u,h){var l=0,f=e;return l+=(f=f+n>>>0)>>0)>>0)>>0)>>0},r.sum64_5_lo=function(t,e,r,n,i,o,s,a,u,h){return e+n+o+a+h>>>0},r.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},r.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},r.shr64_hi=function(t,e,r){return t>>>r},r.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0}},{inherits:32,"minimalistic-assert":34}],32:[function(t,e,r){"function"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],33:[function(t,_,e){(function(b,w){!function(){"use strict";var t="object"==typeof window?window:{};!t.JS_SHA3_NO_NODE_JS&&"object"==typeof b&&b.versions&&b.versions.node&&(t=w);for(var e=!t.JS_SHA3_NO_COMMON_JS&&"object"==typeof _&&_.exports,u="0123456789abcdef".split(""),l=[0,8,16,24],lt=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],r=[224,256,384,512],o=["hex","buffer","arrayBuffer","array"],s=function(e,r,n){return function(t){return new m(e,r,e).update(t)[n]()}},a=function(r,n,i){return function(t,e){return new m(r,n,e).update(t)[i]()}},n=function(t,e){var r=s(t,e,"hex");r.create=function(){return new m(t,e,t)},r.update=function(t){return r.create().update(t)};for(var n=0;n>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}m.prototype.update=function(t){var e="string"!=typeof t;e&&t.constructor===ArrayBuffer&&(t=new Uint8Array(t));for(var r,n,i=t.length,o=this.blocks,s=this.byteCount,a=this.blockCount,u=0,h=this.s;u>2]|=t[u]<>2]|=n<>2]|=(192|n>>6)<>2]|=(224|n>>12)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e>4&15]+u[15&t]+u[t>>12&15]+u[t>>8&15]+u[t>>20&15]+u[t>>16&15]+u[t>>28&15]+u[t>>24&15];s%e==0&&(g(r),o=0)}return i&&(t=r[o],0>4&15]+u[15&t]),1>12&15]+u[t>>8&15]),2>20&15]+u[t>>16&15])),a},m.prototype.buffer=m.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,s=0,a=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(a);for(var u=new Uint32Array(t);s>8&255,u[t+2]=e>>16&255,u[t+3]=e>>24&255;a%r==0&&g(n)}return o&&(t=a<<2,e=n[s],0>8&255),2>16&255)),u};var g=function(t){var e,r,n,i,o,s,a,u,h,l,f,c,d,p,v,y,m,g,b,w,_,M,A,k,S,E,P,N,x,I,T,R,O,C,B,L,D,U,j,F,G,z,H,V,q,K,W,J,Z,$,X,Y,Q,tt,et,rt,nt,it,ot,st,at,ut,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],u=t[4]^t[14]^t[24]^t[34]^t[44],h=t[5]^t[15]^t[25]^t[35]^t[45],l=t[6]^t[16]^t[26]^t[36]^t[46],f=t[7]^t[17]^t[27]^t[37]^t[47],e=(c=t[8]^t[18]^t[28]^t[38]^t[48])^(s<<1|a>>>31),r=(d=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|s>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(u<<1|h>>>31),r=o^(h<<1|u>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=s^(l<<1|f>>>31),r=a^(f<<1|l>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=u^(c<<1|d>>>31),r=h^(d<<1|c>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=l^(i<<1|o>>>31),r=f^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,p=t[0],v=t[1],K=t[11]<<4|t[10]>>>28,W=t[10]<<4|t[11]>>>28,N=t[20]<<3|t[21]>>>29,x=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,at=t[30]<<9|t[31]>>>23,z=t[40]<<18|t[41]>>>14,H=t[41]<<18|t[40]>>>14,C=t[2]<<1|t[3]>>>31,B=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,m=t[12]<<12|t[13]>>>20,J=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,I=t[33]<<13|t[32]>>>19,T=t[32]<<13|t[33]>>>19,ut=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,tt=t[5]<<30|t[4]>>>2,et=t[4]<<30|t[5]>>>2,L=t[14]<<6|t[15]>>>26,D=t[15]<<6|t[14]>>>26,g=t[25]<<11|t[24]>>>21,b=t[24]<<11|t[25]>>>21,$=t[34]<<15|t[35]>>>17,X=t[35]<<15|t[34]>>>17,R=t[45]<<29|t[44]>>>3,O=t[44]<<29|t[45]>>>3,k=t[6]<<28|t[7]>>>4,S=t[7]<<28|t[6]>>>4,rt=t[17]<<23|t[16]>>>9,nt=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,j=t[27]<<25|t[26]>>>7,w=t[36]<<21|t[37]>>>11,_=t[37]<<21|t[36]>>>11,Y=t[47]<<24|t[46]>>>8,Q=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,q=t[9]<<27|t[8]>>>5,E=t[18]<<20|t[19]>>>12,P=t[19]<<20|t[18]>>>12,it=t[29]<<7|t[28]>>>25,ot=t[28]<<7|t[29]>>>25,F=t[38]<<8|t[39]>>>24,G=t[39]<<8|t[38]>>>24,M=t[48]<<14|t[49]>>>18,A=t[49]<<14|t[48]>>>18,t[0]=p^~y&g,t[1]=v^~m&b,t[10]=k^~E&N,t[11]=S^~P&x,t[20]=C^~L&U,t[21]=B^~D&j,t[30]=V^~K&J,t[31]=q^~W&Z,t[40]=tt^~rt&it,t[41]=et^~nt&ot,t[2]=y^~g&w,t[3]=m^~b&_,t[12]=E^~N&I,t[13]=P^~x&T,t[22]=L^~U&F,t[23]=D^~j&G,t[32]=K^~J&$,t[33]=W^~Z&X,t[42]=rt^~it&st,t[43]=nt^~ot&at,t[4]=g^~w&M,t[5]=b^~_&A,t[14]=N^~I&R,t[15]=x^~T&O,t[24]=U^~F&z,t[25]=j^~G&H,t[34]=J^~$&Y,t[35]=Z^~X&Q,t[44]=it^~st&ut,t[45]=ot^~at&ht,t[6]=w^~M&p,t[7]=_^~A&v,t[16]=I^~R&k,t[17]=T^~O&S,t[26]=F^~z&C,t[27]=G^~H&B,t[36]=$^~Y&V,t[37]=X^~Q&q,t[46]=st^~ut&tt,t[47]=at^~ht&et,t[8]=M^~p&y,t[9]=A^~v&m,t[18]=R^~k&E,t[19]=O^~S&P,t[28]=z^~C&L,t[29]=H^~B&D,t[38]=Y^~V&K,t[39]=Q^~q&W,t[48]=ut^~tt&rt,t[49]=ht^~et&nt,t[0]^=lt[n],t[1]^=lt[n+1]};if(e)_.exports=h;else for(c=0;c>>17|n<<15)^(n>>>19|n<<13)^n>>>10,a=((n=S[i-15])>>>7|n<<25)^(n>>>18|n<<14)^n>>>3,S[i]=(s+S[i-7]|0)+(a+S[i-16]|0)|0;for(i=0;i<64;i++)s=(((c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7))+(c&d^~c&p)|0)+(v+(y[i]+S[i]|0)|0)|0,a=((u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10))+(u&h^u&l^h&l)|0,v=p,p=d,d=c,c=f+s|0,f=l,l=h,h=u,u=s+a|0;m=m+u|0,g=g+h|0,b=b+l|0,w=w+f|0,_=_+c|0,M=M+d|0,A=A+p|0,k=k+v|0,e+=64,r-=64}}e(t);var r,n=t.length%64,i=t.length/536870912|0,o=t.length<<3,s=n<56?56:120,a=t.slice(t.length-n,t.length);for(a.push(128),r=n+1;r>>24&255),a.push(i>>>16&255),a.push(i>>>8&255),a.push(i>>>0&255),a.push(o>>>24&255),a.push(o>>>16&255),a.push(o>>>8&255),a.push(o>>>0&255),e(a),[m>>>24&255,m>>>16&255,m>>>8&255,m>>>0&255,g>>>24&255,g>>>16&255,g>>>8&255,g>>>0&255,b>>>24&255,b>>>16&255,b>>>8&255,b>>>0&255,w>>>24&255,w>>>16&255,w>>>8&255,w>>>0&255,_>>>24&255,_>>>16&255,_>>>8&255,_>>>0&255,M>>>24&255,M>>>16&255,M>>>8&255,M>>>0&255,A>>>24&255,A>>>16&255,A>>>8&255,A>>>0&255,k>>>24&255,k>>>16&255,k>>>8&255,k>>>0&255]}function x(t,e,r){var n;t=t.length<=64?t:h(t);var i=64+e.length+4,o=new Array(i),s=new Array(64),a=[];for(n=0;n<64;n++)o[n]=54;for(n=0;n>>32-e}function s(t,e){R(t,0,e,0,16);for(var r=8;0>0&255),f.push(c[t]>>8&255),f.push(c[t]>>16&255),f.push(c[t]>>24&255);var i=x(o,f,h);return l(null,1,i)}P(N)};N()}void 0!==o?r.exports=e:t&&(t.scrypt&&(t._scrypt=t.scrypt),t.scrypt=e)}(this)}).call(this,t("timers").setImmediate)},{timers:38}],37:[function(t,e,r){(function(y,t){!function(r,n){"use strict";if(!r.setImmediate){var t,i,e,o,s,a=1,u={},h=!1,l=r.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(r);f=f&&f.setTimeout?f:r,"[object process]"==={}.toString.call(r.process)?t=function(){var t=c(arguments);return y.nextTick(d(p,t)),t}:!function(){if(r.postMessage&&!r.importScripts){var t=!0,e=r.onmessage;return r.onmessage=function(){t=!1},r.postMessage("","*"),r.onmessage=e,t}}()?r.MessageChannel?((e=new MessageChannel).port1.onmessage=function(t){p(t.data)},t=function(){var t=c(arguments);return e.port2.postMessage(t),t}):l&&"onreadystatechange"in l.createElement("script")?(i=l.documentElement,t=function(){var t=c(arguments),e=l.createElement("script");return e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e),t}):t=function(){var t=c(arguments);return setTimeout(d(p,t),0),t}:(o="setImmediate$"+Math.random()+"$",s=function(t){t.source===r&&"string"==typeof t.data&&0===t.data.indexOf(o)&&p(+t.data.slice(o.length))},r.addEventListener?r.addEventListener("message",s,!1):r.attachEvent("onmessage",s),t=function(){var t=c(arguments);return r.postMessage(o+t,"*"),t}),f.setImmediate=t,f.clearImmediate=v}function c(t){return u[a]=d.apply(n,t),a++}function d(t){var e=[].slice.call(arguments,1);return function(){"function"==typeof t?t.apply(n,e):new Function(""+t)()}}function p(t){if(h)setTimeout(d(p,t),0);else{var e=u[t];if(e){h=!0;try{e()}finally{v(t),h=!1}}}}function v(t){delete u[t]}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,t("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:35}],38:[function(t,e,r){(function(t){e.exports={setImmediate:t.setImmediate}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],39:[function(t,i,e){(function(t){var e;if(t.crypto&&crypto.getRandomValues){var r=new Uint8Array(16);e=function(){return crypto.getRandomValues(r),r}}if(!e){var n=new Array(16);e=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),n[e]=t>>>((3&e)<<3)&255;return n}}i.exports=e}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],40:[function(t,e,r){for(var s=t("./rng"),i=[],o={},n=0;n<256;n++)i[n]=(n+256).toString(16).substr(1),o[i[n]]=n;function d(t,e){var r=e||0,n=i;return n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+"-"+n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]+n[t[r++]]}var a=s(),p=[1|a[0],a[1],a[2],a[3],a[4],a[5]],v=16383&(a[6]<<8|a[7]),y=0,m=0;function u(t,e,r){var n=e&&r||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null);var i=(t=t||{}).random||(t.rng||s)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e)for(var o=0;o<16;o++)e[n+o]=i[o];return e||d(i)}var h=u;h.v1=function(t,e,r){var n=e&&r||0,i=e||[],o=void 0!==(t=t||{}).clockseq?t.clockseq:v,s=void 0!==t.msecs?t.msecs:(new Date).getTime(),a=void 0!==t.nsecs?t.nsecs:m+1,u=s-y+(a-m)/1e4;if(u<0&&void 0===t.clockseq&&(o=o+1&16383),(u<0||y>>24&255,i[n++]=h>>>16&255,i[n++]=h>>>8&255,i[n++]=255&h;var l=s/4294967296*1e4&268435455;i[n++]=l>>>8&255,i[n++]=255&l,i[n++]=l>>>24&15|16,i[n++]=l>>>16&255,i[n++]=o>>>8|128,i[n++]=255&o;for(var f=t.node||p,c=0;c<6;c++)i[n+c]=f[c];return e||d(i)},h.v4=u,h.parse=function(t,e,r){var n=e&&r||0,i=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){i<16&&(e[n+i++]=o[t])});i<16;)e[n+i++]=0;return e},h.unparse=d,e.exports=h},{"./rng":39}],41:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=t("../src.ts/utils/bytes");e.exports={decode:function(t){t=atob(t);for(var e=[],r=0;r>24&255,l[e.length+1]=f>>16&255,l[e.length+2]=f>>8&255,l[e.length+3]=255&f;var c=g.computeHmac(i,t,l);o||(o=c.length,a=new Uint8Array(o),s=n-((u=Math.ceil(n/o))-1)*o),a.set(c);for(var d=1;dthis.inputs.length&&l.throwError("too many constructor arguments",l.UNEXPECTED_ARGUMENT,{count:e.length,expectedCount:this.inputs.length});try{return t+f.defaultAbiCoder.encode(this.inputs,e).substring(2)}catch(t){l.throwError("invalid constructor argument",l.INVALID_ARGUMENT,{arg:t.arg,reason:t.reason,value:t.value})}return null},e}(p);r.DeployDescription=y;var m=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.encode=function(t){t.lengththis.inputs.length&&l.throwError("too many input arguments",l.UNEXPECTED_ARGUMENT,{count:t.length,expectedCount:this.inputs.length});try{return this.sighash+f.defaultAbiCoder.encode(this.inputs,t).substring(2)}catch(t){l.throwError("invalid input argument",l.INVALID_ARGUMENT,{arg:t.arg,reason:t.reason,value:t.value})}return null},e.prototype.decode=function(e){try{return f.defaultAbiCoder.decode(this.outputs,c.arrayify(e))}catch(t){l.throwError("invalid data for function output",l.INVALID_ARGUMENT,{arg:"data",errorArg:t.arg,errorValue:t.value,value:e,reason:t.reason})}},e}(p);r.FunctionDescription=m;var g=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p),b=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.decode=function(t,r){null==r||this.anonymous||(r=r.slice(1));var n=[],i=[],o=[];if(this.inputs.forEach(function(t,e){t.indexed?"string"===t.type||"bytes"===t.type||0<=t.type.indexOf("[")||"tuple"===t.type.substring(0,5)?(n.push({type:"bytes32",name:t.name||""}),o.push(!0)):(n.push(t),o.push(!1)):(i.push(t),o.push(!1))}),null!=r)var s=f.defaultAbiCoder.decode(n,c.concat(r));var a=f.defaultAbiCoder.decode(i,c.arrayify(t)),u=new g({}),h=0,l=0;return this.inputs.forEach(function(t,e){t.indexed?null==r?u[e]=new v({type:"indexed",hash:null}):o[e]?u[e]=new v({type:"indexed",hash:s[l++]}):u[e]=s[l++]:u[e]=a[h++],t.name&&(u[t.name]=u[e])}),u.length=this.inputs.length,u},e}(p);r.EventDescription=b;var w=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p),_=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(p);function M(t){switch(t.type){case"constructor":var e=new y({inputs:t.inputs,payable:null==t.payable||!!t.payable,type:"deploy"});this.deployFunction||(this.deployFunction=e);break;case"function":n=(n="("+d(t.inputs).types.join(",")+")").replace(/tuple/g,""),n=t.name+n;var r=a.keccak256(u.toUtf8Bytes(n)).substring(0,10);e=new m({inputs:t.inputs,outputs:t.outputs,payable:null==t.payable||!!t.payable,type:t.constant?"call":"transaction",signature:n,sighash:r});t.name&&null==this.functions[t.name]&&h.defineReadOnly(this.functions,t.name,e),null==this.functions[e.signature]&&h.defineReadOnly(this.functions,e.signature,e);break;case"event":var n;n=(n="("+d(t.inputs).types.join(",")+")").replace(/tuple/g,""),n=t.name+n;e=new b({name:t.name,signature:n,inputs:t.inputs,topic:a.keccak256(u.toUtf8Bytes(n)),anonymous:!!t.anonymous,type:"event"});t.name&&null==this.events[t.name]&&h.defineReadOnly(this.events,t.name,e),null==this.events[e.signature]&&h.defineReadOnly(this.events,e.signature,e);break;case"fallback":break;default:console.log("WARNING: unsupported ABI type - "+t.type)}}var A=function(){function t(e){if(l.checkNew(this,t),"string"==typeof e){try{e=JSON.parse(e)}catch(t){l.throwError("could not parse ABI JSON",l.INVALID_ARGUMENT,{arg:"abi",errorMessage:t.message,value:e})}if(!Array.isArray(e))return l.throwError("invalid abi",l.INVALID_ARGUMENT,{arg:"abi",value:e}),null}h.defineReadOnly(this,"functions",{}),h.defineReadOnly(this,"events",{});var r=[];e.forEach(function(t){"string"==typeof t&&(t=f.parseSignature(t)),r.push(t)}),h.defineFrozen(this,"abi",r),r.forEach(M,this),this.deployFunction||M.call(this,{type:"constructor",inputs:[]})}return t.prototype.parseTransaction=function(t){var e=t.data.substring(0,10).toLowerCase();for(var r in this.functions)if(-1!==r.indexOf("(")){var n=this.functions[r];if(n.sighash===e){var i=f.defaultAbiCoder.decode(n.inputs,"0x"+t.data.substring(10));return new w({args:i,decode:n.decode,name:r,signature:n.signature,sighash:n.sighash,type:"transaction",value:s.bigNumberify(t.value||0)})}}return null},t.prototype.parseLog=function(t){for(var e in this.events)if(-1!==e.indexOf("(")){var r=this.events[e];if(!r.anonymous&&r.topic===t.topics[0])return new _({name:r.name,signature:r.signature,topic:r.topic,type:"log",values:r.decode(t.data,t.topics)})}return null},t}();r.Interface=A},{"../utils/abi-coder":59,"../utils/bignumber":61,"../utils/bytes":62,"../utils/errors":63,"../utils/keccak256":66,"../utils/properties":67,"../utils/utf8":74}],51:[function(t,e,r){"use strict";var n,i=this&&this.__extends||(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var s=t("./provider"),a=t("../utils/bytes"),u=t("../utils/properties"),h=t("../utils/web"),l=o(t("../utils/errors"));function f(t){var e=[];for(var r in t)if(null!=t[r]){var n=a.hexlify(t[r]);({gasLimit:!0,gasPrice:!0,nonce:!0,value:!0})[r]&&(n=a.hexStripZeros(n)),e.push(r+"="+n)}return e.join("&")}function c(t){if(0==t.status&&("No records found"===t.message||"No transactions found"===t.message))return t.result;if(1!=t.status||"OK"!=t.message){var e=new Error("invalid response");throw e.result=JSON.stringify(t),e}return t.result}function d(t){if("2.0"!=t.jsonrpc)throw(e=new Error("invalid response")).result=JSON.stringify(t),e;if(t.error){var e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function p(t){if("pending"===t)throw new Error("pending not supported");return"latest"===t?t:parseInt(t.substring(2),16)}var v=function(a){function o(t,e){var r=a.call(this,t)||this;l.checkNew(r,o);var n="invalid";r.network&&(n=r.network.name);var i=null;switch(n){case"homestead":i="https://api.etherscan.io";break;case"ropsten":i="https://api-ropsten.etherscan.io";break;case"rinkeby":i="https://api-rinkeby.etherscan.io";break;case"kovan":i="https://api-kovan.etherscan.io";break;default:throw new Error("unsupported network")}return u.defineReadOnly(r,"baseUrl",i),u.defineReadOnly(r,"apiKey",e),r}return i(o,a),o.prototype.perform=function(t,e){var r=this.baseUrl,n="";switch(this.apiKey&&(n+="&apikey="+this.apiKey),t){case"getBlockNumber":return r+="/api?module=proxy&action=eth_blockNumber"+n,h.fetchJson(r,null,d);case"getGasPrice":return r+="/api?module=proxy&action=eth_gasPrice"+n,h.fetchJson(r,null,d);case"getBalance":return r+="/api?module=account&action=balance&address="+e.address,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,c);case"getTransactionCount":return r+="/api?module=proxy&action=eth_getTransactionCount&address="+e.address,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,d);case"getCode":return r+="/api?module=proxy&action=eth_getCode&address="+e.address,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,d);case"getStorageAt":return r+="/api?module=proxy&action=eth_getStorageAt&address="+e.address,r+="&position="+e.position,r+="&tag="+e.blockTag+n,h.fetchJson(r,null,d);case"sendTransaction":return r+="/api?module=proxy&action=eth_sendRawTransaction&hex="+e.signedTransaction,r+=n,h.fetchJson(r,null,d);case"getBlock":if(e.blockTag)return r+="/api?module=proxy&action=eth_getBlockByNumber&tag="+e.blockTag,r+="&boolean=false",r+=n,h.fetchJson(r,null,d);throw new Error("getBlock by blockHash not implmeneted");case"getTransaction":return r+="/api?module=proxy&action=eth_getTransactionByHash&txhash="+e.transactionHash,r+=n,h.fetchJson(r,null,d);case"getTransactionReceipt":return r+="/api?module=proxy&action=eth_getTransactionReceipt&txhash="+e.transactionHash,r+=n,h.fetchJson(r,null,d);case"call":return(i=f(e.transaction))&&(i="&"+i),r+="/api?module=proxy&action=eth_call"+i,r+=n,h.fetchJson(r,null,d);case"estimateGas":var i;return(i=f(e.transaction))&&(i="&"+i),r+="/api?module=proxy&action=eth_estimateGas&"+i,r+=n,h.fetchJson(r,null,d);case"getLogs":r+="/api?module=logs&action=getLogs";try{if(e.filter.fromBlock&&(r+="&fromBlock="+p(e.filter.fromBlock)),e.filter.toBlock&&(r+="&toBlock="+p(e.filter.toBlock)),e.filter.address&&(r+="&address="+e.filter.address),e.filter.topics&&0r+12&&delete i._emitted[t]})),i.emit("block",r);var n={};Object.keys(i._events).forEach(function(t){var r=function(t){if("tx:"===t.substring(0,3))return{type:"transaction",hash:t.substring(3)};if("block"===t)return{type:"block"};if("pending"===t)return{type:"pending"};if("address:"===t.substring(0,8))return{type:"address",address:t.substring(8)};if("topic:"===t.substring(0,6))try{var e=f.decode(t.substring(6));return{type:"topic",topic:e=U(e,function(t){return"0x"===t&&(t=null),t})}}catch(t){console.log(t)}throw new Error("invalid event string")}(t);"transaction"===r.type?i.getTransaction(r.hash).then(function(t){t&&null!=t.blockNumber&&(i._emitted["t:"+t.hash.toLowerCase()]=t.blockNumber,i.emit(r.hash,t))}):"address"===r.type?(i._balances[r.address]&&(n[r.address]=i._balances[r.address]),i.getBalance(r.address,"latest").then(function(t){var e=this._balances[r.address];e&&t.eq(e)||(this._balances[r.address]=t,this.emit(r.address,t))})):"topic"===r.type&&i.getLogs({fromBlock:i._lastBlockNumber+1,toBlock:e,topics:r.topic}).then(function(t){0!==t.length&&t.forEach(function(t){i._emitted["b:"+t.blockHash.toLowerCase()]=t.blockNumber,i._emitted["t:"+t.transactionHash.toLowerCase()]=t.blockNumber,i.emit(r.topic,t)})})}),i._lastBlockNumber=e,i._balances=n}}),this.doPoll()},n.prototype.resetEventsBlock=function(t){this._lastBlockNumber=this.blockNumber,this._doPoll()},Object.defineProperty(n.prototype,"network",{get:function(){return this._network},enumerable:!0,configurable:!0}),n.prototype.getNetwork=function(){return this.ready},Object.defineProperty(n.prototype,"blockNumber",{get:function(){return this._lastBlockNumber<0?null:this._lastBlockNumber},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"polling",{get:function(){return null!=this._poller},set:function(t){var e=this;setTimeout(function(){t&&!e._poller?e._poller=setInterval(e._doPoll.bind(e),e.pollingInterval):!t&&e._poller&&(clearInterval(e._poller),e._poller=null)},0)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"pollingInterval",{get:function(){return this._pollingInterval},set:function(t){var e=this;if("number"!=typeof t||t<=0||Math.trunc(t)!=t)throw new Error("invalid polling interval");this._pollingInterval=t,this._poller&&(clearInterval(this._poller),this._poller=setInterval(function(){e._doPoll()},this._pollingInterval))},enumerable:!0,configurable:!0}),n.prototype.waitForTransaction=function(i,o){var s=this;return new Promise(function(e,t){var r=null;function n(t){r&&clearTimeout(r),e(t)}s.once(i,n),"number"==typeof o&&0i._emitted.block},function(){return i.perform("getBlock",{blockTag:n}).then(function(t){return null==t?null:S(t)})})}catch(t){}throw new Error("invalid block hash or block tag")})})},n.prototype.getTransaction=function(t){var n=this;return this.ready.then(function(){return p.resolveProperties({transactionHash:t}).then(function(t){var e=t.transactionHash,r={transactionHash:w(e)};return D(function(){return null==n._emitted["t:"+e.toLowerCase()]},function(){return n.perform("getTransaction",r).then(function(t){return null!=t&&(t=P(t)),t})})})})},n.prototype.getTransactionReceipt=function(t){var n=this;return this.ready.then(function(){return p.resolveProperties({transactionHash:t}).then(function(t){var e=t.transactionHash,r={transactionHash:w(e)};return D(function(){return null==n._emitted["t:"+e.toLowerCase()]},function(){return n.perform("getTransactionReceipt",r).then(function(t){var e,r;return null!=t&&((r=m(T,e=t)).logs.forEach(function(t,e){null==t.transactionLogIndex&&(t.transactionLogIndex=e)}),null!=e.status&&(r.byzantium=!0),t=r),t})})})})},n.prototype.getLogs=function(t){var n=this;return this.ready.then(function(){return p.resolveProperties(t).then(function(t){return n._resolveNames(t,["address"]).then(function(t){var e,r={filter:(e=t,m(R,e))};return n.perform("getLogs",r).then(function(t){return b(L)(t)})})})})},n.prototype.getEtherPrice=function(){var t=this;return this.ready.then(function(){return t.perform("getEtherPrice",{}).then(function(t){return t})})},n.prototype._resolveNames=function(t,e){var r=[],n=function(t){var e={};for(var r in t)e[r]=t[r];return e}(t);return e.forEach(function(e){void 0!==n[e]&&r.push(this.resolveName(n[e]).then(function(t){n[e]=t}))},this),Promise.all(r).then(function(){return n})},n.prototype._getResolver=function(n){var i=this;return this.getNetwork().then(function(t){t.ensAddress||y.throwError("network does support ENS",y.UNSUPPORTED_OPERATION,{operation:"ENS",network:t.name});var e="0x0178b8bf"+c.namehash(n).substring(2),r={to:t.ensAddress,data:e};return i.call(r).then(function(t){return 32!==h.hexDataLength(t)?null:a.getAddress(h.hexDataSlice(t,12))})})},n.prototype.resolveName=function(t){var e=this;if(t instanceof Promise)return t.then(function(t){return e.resolveName(t)});try{return Promise.resolve(a.getAddress(t))}catch(t){}var r=this,n=c.namehash(t);return this._getResolver(t).then(function(t){var e={to:t,data:"0x3b3b57de"+n.substring(2)};return r.call(e)}).then(function(t){if(32!==h.hexDataLength(t))return null;var e=a.getAddress(h.hexDataSlice(t,12));return"0x0000000000000000000000000000000000000000"===e?null:e})},n.prototype.lookupAddress=function(n){var e=this;if(n instanceof Promise)return n.then(function(t){return e.lookupAddress(t)});var t=(n=a.getAddress(n)).substring(2)+".addr.reverse",r=c.namehash(t),i=this;return this._getResolver(t).then(function(t){if(!t)return null;var e={to:t,data:"0x691f3431"+r.substring(2)};return i.call(e)}).then(function(t){if((t=t.substring(2)).length<64)return null;if((t=t.substring(64)).length<64)return null;var e=u.bigNumberify("0x"+t.substring(0,64)).toNumber();if(2*e>(t=t.substring(64)).length)return null;var r=l.toUtf8String("0x"+t.substring(0,2*e));return i.resolveName(r).then(function(t){return t!=n?null:r})})},n.prototype.doPoll=function(){},n.prototype.perform=function(t,e){return y.throwError(t+" not implemented",y.NOT_IMPLEMENTED,{operation:t}),null},n.prototype._startPending=function(){console.log("WARNING: this provider does not support pending events")},n.prototype._stopPending=function(){},n.prototype.on=function(t,e){var r=j(t);return this._events[r]||(this._events[r]=[]),this._events[r].push({eventName:t,listener:e,type:"on"}),"pending"===r&&this._startPending(),this.polling=!0,this},n.prototype.once=function(t,e){var r=j(t);return this._events[r]||(this._events[r]=[]),this._events[r].push({eventName:t,listener:e,type:"once"}),"pending"===r&&this._startPending(),this.polling=!0,this},n.prototype.emit=function(t){for(var e=[],r=1;rt.length)throw new Error("invalid null");return{consumed:0,value:this.coerceFunc("null",void 0)}},t}(b),_=function(s){function t(t,e,r,n){var i=this,o=(r?"int":"uint")+8*e;return(i=s.call(this,t,o,o,n,!1)||this).size=e,i.signed=r,i}return i(t,s),t.prototype.encode=function(e){try{var t=a.bigNumberify(e);return t=t.toTwos(8*this.size).maskn(8*this.size),this.signed&&(t=t.fromTwos(8*this.size).toTwos(256)),u.padZeros(u.arrayify(t),32)}catch(t){f.throwError("invalid number value",f.INVALID_ARGUMENT,{arg:this.localName,type:typeof e,value:e})}return null},t.prototype.decode=function(t,e){t.length>1]>>4&&(e[i]=e[i].toUpperCase()),8<=(15&r[i>>1])&&(e[i+1]=e[i+1].toUpperCase());return"0x"+e.join("")}for(var h={},l=0;l<10;l++)h[String(l)]=String(l);for(l=0;l<26;l++)h[String.fromCharCode(65+l)]=String(10+l);var f,c=Math.floor((f=9007199254740991,Math.log10?Math.log10(f):Math.log(f)/Math.LN10));function d(t){t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00";var e="";for(t.split("").forEach(function(t){e+=h[t]});e.length>=c;){var r=e.substring(0,c);e=parseInt(r,10)%97+e.substring(r.length)}for(var n=String(98-parseInt(e,10)%97);n.length<2;)n="0"+n;return n}function p(t){var e=null;if("string"!=typeof t&&a.throwError("invalid address",a.INVALID_ARGUMENT,{arg:"address",value:t}),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=u(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&a.throwError("bad address checksum",a.INVALID_ARGUMENT,{arg:"address",value:t});else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==d(t)&&a.throwError("bad icap checksum",a.INVALID_ARGUMENT,{arg:"address",value:t}),e=new n(t.substring(4),36).toString(16);e.length<40;)e="0"+e;e=u("0x"+e)}else a.throwError("invalid address",a.INVALID_ARGUMENT,{arg:"address",value:t});return e}r.getAddress=p,r.getIcapAddress=function(t){for(var e=new n(p(t).substring(2),16).toString(36).toUpperCase();e.length<30;)e="0"+e;return"XE"+d("XE00"+e)+e},r.getContractAddress=function(t){if(!t.from)throw new Error("missing from address");var e=t.nonce;return p("0x"+s.keccak256(i.encode([p(t.from),o.stripZeros(o.hexlify(e))])).substring(26))}},{"./bytes":62,"./errors":63,"./keccak256":66,"./rlp":68,"bn.js":2}],61:[function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},i=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(n,"__esModule",{value:!0});var o=r(t("bn.js")),s=t("./bytes"),a=t("./properties"),u=i(t("../utils/errors"));function h(t){return f(t)}var l=function(){function r(t){if(u.checkNew(this,r),"string"==typeof t)s.isHexString(t)?("0x"==t&&(t="0x0"),a.defineReadOnly(this,"_bn",new o.default.BN(t.substring(2),16))):"-"===t[0]&&s.isHexString(t.substring(1))?a.defineReadOnly(this,"_bn",new o.default.BN(t.substring(3),16).mul(n.ConstantNegativeOne._bn)):t.match(/^-?[0-9]*$/)&&(""==t&&(t="0"),a.defineReadOnly(this,"_bn",new o.default.BN(t)));else if("number"==typeof t){Math.trunc(t)!==t&&u.throwError("underflow",u.NUMERIC_FAULT,{operation:"setValue",fault:"underflow",value:t,outputValue:Math.trunc(t)});try{a.defineReadOnly(this,"_bn",new o.default.BN(t))}catch(t){u.throwError("overflow",u.NUMERIC_FAULT,{operation:"setValue",fault:"overflow",details:t.message})}}else o.default.BN.isBN(t)?a.defineReadOnly(this,"_bn",t):h(t)?a.defineReadOnly(this,"_bn",t._bn):s.isArrayish(t)?a.defineReadOnly(this,"_bn",new o.default.BN(s.hexlify(t).substring(2),16)):u.throwError("invalid BigNumber value",u.INVALID_ARGUMENT,{arg:"value",value:t})}return r.prototype.fromTwos=function(t){return new r(this._bn.fromTwos(t))},r.prototype.toTwos=function(t){return new r(this._bn.toTwos(t))},r.prototype.add=function(t){return new r(this._bn.add(c(t)._bn))},r.prototype.sub=function(t){return new r(this._bn.sub(c(t)._bn))},r.prototype.div=function(t){var e=c(t)._bn;return e.isZero()&&u.throwError("division by zero",u.NUMERIC_FAULT,{operation:"divide",fault:"division by zero"}),new r(this._bn.div(e))},r.prototype.mul=function(t){return new r(this._bn.mul(c(t)._bn))},r.prototype.mod=function(t){return new r(this._bn.mod(c(t)._bn))},r.prototype.pow=function(t){return new r(this._bn.pow(c(t)._bn))},r.prototype.maskn=function(t){return new r(this._bn.maskn(t))},r.prototype.eq=function(t){return this._bn.eq(c(t)._bn)},r.prototype.lt=function(t){return this._bn.lt(c(t)._bn)},r.prototype.lte=function(t){return this._bn.lte(c(t)._bn)},r.prototype.gt=function(t){return this._bn.gt(c(t)._bn)},r.prototype.gte=function(t){return this._bn.gte(c(t)._bn)},r.prototype.isZero=function(){return this._bn.isZero()},r.prototype.toNumber=function(){try{return this._bn.toNumber()}catch(t){u.throwError("overflow",u.NUMERIC_FAULT,{operation:"setValue",fault:"overflow",details:t.message})}return null},r.prototype.toString=function(){return this._bn.toString(10)},r.prototype.toHexString=function(){var t=this._bn.toString(16);return t.length%2&&(t="0"+t),"0x"+t},r}();function f(t){return t._bn&&t._bn.mod}function c(t){return h(t)?t:new l(t)}n.BigNumber=l,n.isBigNumber=f,n.bigNumberify=c,n.ConstantNegativeOne=c(-1),n.ConstantZero=c(0),n.ConstantOne=c(1),n.ConstantTwo=c(2),n.ConstantWeiPerEther=c(new o.default.BN("1000000000000000000"))},{"../utils/errors":63,"./bytes":62,"./properties":67,"bn.js":2}],62:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s=t("./errors");function a(t){return!!t._bn}function u(e){return e.slice||(e.slice=function(){var t=Array.prototype.slice.call(arguments);return new Uint8Array(Array.prototype.slice.apply(e,t))}),e}function h(t){if(!t||parseInt(t.length)!=t.length||"string"==typeof t)return!1;for(var e=0;e>4]+f[15&o])}return"0x"+n.join("")}return s.throwError("invalid hexlify value",null,{arg:"value",value:t}),"never"}function c(t,e){for(i(t)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:t});t.length<2*e+2;)t="0x0"+t.substring(2);return t}r.hexlify=o,r.hexDataLength=function(t){return i(t)&&t.length%2==0?(t.length-2)/2:null},r.hexDataSlice=function(t,e,r){return i(t)||s.throwError("invalid hex data",s.INVALID_ARGUMENT,{arg:"value",value:t}),t.length%2!=0&&s.throwError("hex data length must be even",s.INVALID_ARGUMENT,{arg:"value",value:t}),e=2+2*e,null!=r?"0x"+t.substring(e,e+2*r):"0x"+t.substring(e)},r.hexStripZeros=function(t){for(i(t)||s.throwError("invalid hex string",s.INVALID_ARGUMENT,{arg:"value",value:t});3>=8;return e}function i(t,e,r){for(var n=0,i=0;it.length)throw new Error("too short");if(e+1+r+(n=i(t,e+1,r))>t.length)throw new Error("to short");return a(t,e,e+1+r,r+n)}if(192<=t[e]){if(e+1+(n=t[e]-192)>t.length)throw new Error("invalid rlp data");return a(t,e,e+1,n)}if(184<=t[e]){var r;if(e+1+(r=t[e]-183)>t.length)throw new Error("invalid rlp data");if(e+1+r+(n=i(t,e+1,r))>t.length)throw new Error("invalid rlp data");return{consumed:1+r+n,result:o.hexlify(t.slice(e+1+r,e+1+r+n))}}if(128<=t[e]){var n;if(e+1+(n=t[e]-128)>t.length)throw new Error("invlaid rlp data");return{consumed:1+n,result:o.hexlify(t.slice(e+1,e+1+n))}}return{consumed:1,result:o.hexlify(t[e])}}r.encode=function(t){return o.hexlify(function e(t){if(Array.isArray(t)){var r=[];return t.forEach(function(t){r=r.concat(e(t))}),r.length<=55?(r.unshift(192+r.length),r):((n=s(r.length)).unshift(247+n.length),n.concat(r))}var n,i=Array.prototype.slice.call(o.arrayify(t));return 1===i.length&&i[0]<=127?i:i.length<=55?(i.unshift(128+i.length),i):((n=s(i.length)).unshift(183+n.length),n.concat(i))}(t))},r.decode=function(t){var e=o.arrayify(t),r=u(e,0);if(r.consumed!==e.length)throw new Error("invalid rlp data");return r.result}},{"./bytes":62}],69:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var i=t("./address"),o=t("./bytes"),s=t("./keccak256"),a=t("./properties"),u=n(t("./errors")),h=new(n(t("elliptic")).ec)("secp256k1");r.N="0x"+h.n.toString(16);var l=function(){function t(t){var e=h.keyFromPrivate(o.arrayify(t));a.defineReadOnly(this,"privateKey",o.hexlify(e.priv.toArray("be",32))),a.defineReadOnly(this,"publicKey","0x"+e.getPublic(!1,"hex")),a.defineReadOnly(this,"compressedPublicKey","0x"+e.getPublic(!0,"hex")),a.defineReadOnly(this,"publicKeyBytes",e.getPublic().encode(null,!0))}return t.prototype.sign=function(t){var e=h.keyFromPrivate(o.arrayify(this.privateKey)).sign(o.arrayify(t),{canonical:!0});return{recoveryParam:e.recoveryParam,r:o.hexZeroPad("0x"+e.r.toString(16),32),s:o.hexZeroPad("0x"+e.s.toString(16),32),v:27+e.recoveryParam}},t}();function f(t,e){var r={r:o.arrayify(e.r),s:o.arrayify(e.s)};return"0x"+h.recoverPubKey(o.arrayify(t),r,e.recoveryParam).encode("hex",!1)}function c(t,e){var r=o.arrayify(t);if(32===r.length){var n=new l(r);return e?n.compressedPublicKey:n.publicKey}return 33===r.length?e?o.hexlify(r):"0x"+h.keyFromPublic(r).getPublic(!1,"hex"):65===r.length?e?"0x"+h.keyFromPublic(r).getPublic(!0,"hex"):o.hexlify(r):(u.throwError("invalid public or private key",u.INVALID_ARGUMENT,{arg:"key",value:"[REDACTED]"}),null)}function d(t){var e="0x"+c(t).slice(4);return i.getAddress("0x"+s.keccak256(e).substring(26))}r.KeyPair=l,r.recoverPublicKey=f,r.computePublicKey=c,r.recoverAddress=function(t,e){return d(f(t,e))},r.computeAddress=d},{"./address":60,"./bytes":62,"./errors":63,"./keccak256":66,"./properties":67,elliptic:5}],70:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var i=n(t("hash.js")),o=t("./bytes"),s=i.sha256,a=i.sha512;r.sha256=function(t){return"0x"+s().update(o.arrayify(t)).digest("hex")},r.sha512=function(t){return"0x"+a().update(o.arrayify(t)).digest("hex")}},{"./bytes":62,"hash.js":20}],71:[function(t,e,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var u=t("./bignumber"),h=t("./bytes"),l=t("./utf8"),n=t("./keccak256"),i=t("./sha2"),f=new RegExp("^bytes([0-9]+)$"),c=new RegExp("^(u?int)([0-9]*)$"),d=new RegExp("^(.*)\\[([0-9]*)\\]$"),p="0000000000000000000000000000000000000000000000000000000000000000";function o(t,r){if(t.length!=r.length)throw new Error("type/value count mismatch");var n=[];return t.forEach(function(t,e){n.push(function e(t,r,n){switch(t){case"address":return n?h.padZeros(r,32):h.arrayify(r);case"string":return l.toUtf8Bytes(r);case"bytes":return h.arrayify(r);case"bool":return r=r?"0x01":"0x00",n?h.padZeros(r,32):h.arrayify(r)}var i=t.match(c);if(i){if((o=parseInt(i[2]||"256"))%8!=0||0===o||256t.maxLength)throw(e=new Error("invalid "+t.name)).reason="too long",e.value=r,e;i.push(d.hexlify(r))}),n.chainId&&(i.push(d.hexlify(n.chainId)),i.push("0x"),i.push("0x"));var e=t(p.keccak256(y.encode(i))),r=27+e.recoveryParam;return n.chainId&&(i.pop(),i.pop(),i.pop(),r+=2*n.chainId+8),i.push(d.hexlify(r)),i.push(d.stripZeros(d.arrayify(e.r))),i.push(d.stripZeros(d.arrayify(e.s))),y.encode(i)},r.parse=function(t){var e=y.decode(t);if(9!==e.length)throw new Error("invalid transaction");var r,n={nonce:m(e[0]).toNumber(),gasPrice:m(e[1]),gasLimit:m(e[2]),to:(r=e[3],"0x"===r?null:f.getAddress(r)),value:m(e[4]),data:e[5],chainId:0},i=d.arrayify(e[6]),o=d.arrayify(e[7]),s=d.arrayify(e[8]);if(1<=i.length&&1<=o.length&&o.length<=32&&1<=s.length&&s.length<=32){n.v=c.bigNumberify(i).toNumber(),n.r=d.hexZeroPad(e[7],32),n.s=d.hexZeroPad(e[8],32);var a=(n.v-35)/2;a<0&&(a=0),a=Math.trunc(a),n.chainId=a;var u=n.v-27,h=e.slice(0,6);a&&(h.push(d.hexlify(a)),h.push("0x"),h.push("0x"),u-=2*a+8);var l=p.keccak256(y.encode(h));try{n.from=v.recoverAddress(l,{r:d.hexlify(o),s:d.hexlify(s),recoveryParam:u})}catch(t){console.log(t)}n.hash=p.keccak256(t)}return n}},{"./address":60,"./bignumber":61,"./bytes":62,"./keccak256":66,"./rlp":68,"./secp256k1":69}],73:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var l=t("./bignumber"),f=n(t("./errors")),s=["wei","kwei","Mwei","Gwei","szabo","finny","ether"],c=function(){var i={};function o(t){return{decimals:t.length-1,tenPower:l.bigNumberify(t)}}var r="1";return s.forEach(function(t){var e=o(r);i[t.toLowerCase()]=e,i[String(e.decimals)]=e,r+="000"}),function(t){var e=i[String(t).toLowerCase()];if(!e&&"number"==typeof t&&Math.trunc(t)==t&&0<=t&&t<=256){for(var r="1",n=0;nr.decimals&&f.throwError("underflow occurred",f.NUMERIC_FAULT,{operation:"division",fault:"underflow"});s.length>6|192:(55296==(64512&o)&&i+1>18|240,r[n++]=o>>12&63|128):r[n++]=o>>12|224,r[n++]=o>>6&63|128),r[n++]=63&o|128)}return u.arrayify(r)},r.toUtf8String=function(t){t=u.arrayify(t);for(var e="",r=0;r>7!=0){if(n>>6!=2){var i=null;if(n>>5==6)i=1;else if(n>>4==14)i=2;else if(n>>3==30)i=3;else if(n>>2==62)i=4;else{if(n>>1!=126)continue;i=5}if(r+i>t.length){for(;r>6==2;r++);if(r!=t.length)continue;return e}var o,s=n&(1<<8-i-1)-1;for(o=0;o>6!=2)break;s=s<<6|63&a}o==i?s<=65535?e+=String.fromCharCode(s):(s-=65536,e+=String.fromCharCode(55296+(s>>10&1023),56320+(1023&s))):r--}}else e+=String.fromCharCode(n)}return e}},{"./bytes":62}],75:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var h=t("xmlhttprequest"),i=t("./utf8"),o=t("./base64"),l=n(t("./errors"));r.fetchJson=function(s,a,u){var t=[];if("object"==typeof s&&null!=s.url){if(null==s.url&&l.throwError("missing URL",l.MISSING_ARGUMENT,{arg:"url"}),null!=s.user&&null!=s.password){"https:"!==s.url.substring(0,6)&&!0!==s.allowInsecure&&l.throwError("basic authentication requires a secure https url",l.INVALID_ARGUMENT,{arg:"url",url:s.url,user:s.user,password:"[REDACTED]"});var e=s.user+":"+s.password;t.push({key:"Authorization",value:"Basic "+o.encode(i.toUtf8Bytes(e))})}s=s.url}return new Promise(function(n,i){var o=new h.XMLHttpRequest;a?(o.open("POST",s,!0),t.push({key:"Content-Type",value:"application/json"})):o.open("GET",s,!0),t.forEach(function(t){o.setRequestHeader(t.key,t.value)}),o.onreadystatechange=function(){if(4===o.readyState){try{var t=JSON.parse(o.responseText)}catch(r){var e=new Error("invalid json response");return e.orginialError=r,e.responseText=o.responseText,e.url=s,void i(e)}if(u)try{t=u(t)}catch(r){return r.url=s,r.body=a,r.responseText=o.responseText,void i(r)}if(200!=o.status){var r=new Error("invalid response - "+o.status);return r.statusCode=o.statusCode,void i(r)}n(t)}},o.onerror=function(t){i(t)};try{a?o.send(a):o.send()}catch(t){var e=new Error("connection error");e.error=t,i(e)}})}},{"./base64":41,"./errors":63,"./utf8":74,xmlhttprequest:47}],76:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var f=t("../wordlists/lang-en"),c=t("../utils/bytes"),l=t("../utils/bignumber"),i=t("../utils/utf8"),o=t("../utils/pbkdf2"),d=t("../utils/hmac"),s=t("../utils/properties"),p=t("../utils/secp256k1"),v=t("../utils/sha2"),a=n(t("../utils/errors")),u=i.toUtf8Bytes("Bitcoin seed"),y=2147483648;function m(t){return(1<>3)]=t>>24-i&255;var o=d.computeHmac("sha512",this.chainCode,e),s=l.bigNumberify(o.slice(0,32)),a=o.slice(32),u=s.add(this.keyPair.privateKey).mod(p.N);return new h(c.arrayify(u),a,t,this.depth+1,r,n)},h.prototype.derivePath=function(t){var e=t.split("/");if(0===e.length||"m"===e[0]&&0!==this.depth)throw new Error("invalid path");"m"===e[0]&&e.shift();for(var r=this,n=0;n>3]|=1<<7-i%8),i++}var u=32*r.length/3,h=m(r.length/3),l=c.arrayify(v.sha256(n.slice(0,u/8)))[0];if((l&=h)!==(n[n.length-1]&h))throw new Error("invalid checksum");return c.hexlify(n.slice(0,u/8))}r.HDNode=h,r.fromMnemonic=function(t,e){return w(t,e),g(b(t),t)},r.fromSeed=function(t){return g(t,null)},r.mnemonicToSeed=b,r.mnemonicToEntropy=w,r.entropyToMnemonic=function(t,e){if((t=c.arrayify(t)).length%4!=0||t.length<16||32>8-n,r.push(t[i]&(1<<8-n)-1),n+=3);var o=c.arrayify(v.sha256(t))[0],s=t.length/4;return o&=m(s),r[r.length-1]<<=s,r[r.length-1]|=o>>8-s,e||(e=f.langEn),e.join(r.map(function(t){return e.getWord(t)}))},r.isValidMnemonic=function(t,e){try{return w(t,e),!0}catch(t){}return!1}},{"../utils/bignumber":61,"../utils/bytes":62,"../utils/errors":63,"../utils/hmac":43,"../utils/pbkdf2":44,"../utils/properties":67,"../utils/secp256k1":69,"../utils/sha2":70,"../utils/utf8":74,"../wordlists/lang-en":81}],77:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var i=t("./wallet");r.Wallet=i.Wallet;var o=n(t("./hdnode"));r.HDNode=o;var s=t("./signing-key");r.SigningKey=s.SigningKey},{"./hdnode":76,"./signing-key":79,"./wallet":80}],78:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0});var I=t("aes-js"),m=t("scrypt-js"),T=t("uuid"),g=t("../utils/address"),R=t("../utils/bytes"),b=t("../utils/pbkdf2"),O=t("../utils/keccak256"),p=t("../utils/utf8"),C=t("../utils/random-bytes"),B=t("./signing-key"),L=n(t("./hdnode")),D="m/44'/60'/0'/0/0";function w(t){return"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),R.arrayify(t)}function U(t,e){for(t=String(t);t.length=h.length||Math.trunc(t)!=t)&&a.throwError("invalid wordlist index",a.INVALID_ARGUMENT,{arg:"index",value:t}),h[t]},e.prototype.getWordIndex=function(t){return l(),h.indexOf(t)},e}(s.Wordlist));r.langEn=f,s.register(f)},{"../utils/errors":63,"./wordlist":82}],82:[function(i,t,o){(function(e){"use strict";Object.defineProperty(o,"__esModule",{value:!0});var r=!1,n=i("../utils/properties"),t=function(){function t(t){n.defineReadOnly(this,"locale",t)}return t.prototype.split=function(t){return t.toLowerCase().split(/ +/g)},t.prototype.join=function(t){return t.join(" ")},t}();o.Wordlist=t,o.register=function(t){r&&(e.wordlists||n.defineReadOnly(e,"wordlists",{}),n.defineReadOnly(e.wordlists,t.locale,t))},r=!0}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../utils/properties":67}],83:[function(t,e,r){"use strict";var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(r,"__esModule",{value:!0}),t("./utils/shims");var i=t("./contracts");r.Contract=i.Contract,r.Interface=i.Interface;var o=n(t("./providers"));r.providers=o;var s=n(t("./utils/errors"));r.errors=s;var a=t("./providers/networks");r.getNetwork=a.getNetwork;var u=n(t("./utils"));r.utils=u;var h=t("./wallet");r.HDNode=h.HDNode,r.SigningKey=h.SigningKey,r.Wallet=h.Wallet,console.log("@TODO: Get version");r.version="4.0.0"},{"./contracts":49,"./providers":53,"./providers/networks":56,"./utils":65,"./utils/errors":63,"./utils/shims":46,"./wallet":77}]},{},[83])(83)}); //# sourceMappingURL=ethers.min.js.map diff --git a/dist/ethers.min.js.map b/dist/ethers.min.js.map index a8725cf67..6fbe35433 100644 --- a/dist/ethers.min.js.map +++ b/dist/ethers.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["ethers.min.js"],"names":["f","exports","module","define","amd","window","global","self","this","ethers","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","root","checkInt","value","parseInt","checkInts","arrayish","coerceArray","arg","copy","buffer","ArrayBuffer","isView","name","slice","Array","prototype","isArray","Uint8Array","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","Hex","convertUtf8","toBytes","text","result","encodeURI","charCodeAt","push","substr","fromBytes","bytes","String","fromCharCode","join","convertHex","v","numberOfRounds","16","24","32","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","key","Object","defineProperty","_prepare","rounds","_Ke","_Kd","index","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperationECB","description","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","j","ModeOfOperationCFB","segmentSize","_shiftRegister","xorSegment","encrypted","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","aesjs","ModeOfOperation","ecb","cbc","cfb","ofb","ctr","utils","hex","utf8","padding","pkcs7","pad","data","padder","strip","_arrayTest","_aesjs","2","assert","val","msg","inherits","ctor","superCtor","super_","TempCtor","constructor","BN","number","base","endian","isBN","negative","words","red","_init","Buffer","wordSize","parseHex","str","start","end","len","Math","min","parseBase","mul","num","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","toArray","ceil","w","off","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","b","lo","carry","k","ncarry","rword","maxJ","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","_countBits","clz32","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","3","randomBytes","../../src.ts/utils","4","5","elliptic","version","rand","hmacDRBG","curve","curves","ec","eddsa","../package.json","./elliptic/curve","./elliptic/curves","./elliptic/ec","./elliptic/eddsa","./elliptic/hmac-drbg","./elliptic/utils","brorand","6","getNAF","getJSF","BaseCurve","type","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","naf","I","step","repr","nafW","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","enc","pointFromX","encodeCompressed","encode","_encode","compact","getX","getY","concat","precompute","power","beta","_getBeta","_hasDoubles","dbl","../../elliptic","bn.js","7","8","short","edwards","./base","./edwards","./mont","./short","9","arguments","apply","dup","10","Base","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","lambda","betas","_getEndoRoots","lambdas","basis","map","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","floor","y1","y2","len1","_endoSplit","v1","v2","c1","c2","p1","p2","q1","q2","k1","k2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","obj","fromJSON","pre","endoMul","JSON","parse","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","d","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","../curve","11","hash","PresetCurve","options","defineCurve","configurable","enumerable","get","sha256","sha384","sha512","undefined","../elliptic","./precomputed/secp256k1","hash.js","12","KeyPair","Signature","EC","hasOwnProperty","nh","keyPair","keyFromPrivate","priv","fromPrivate","keyFromPublic","pub","fromPublic","genKeyPair","drbg","pers","entropy","hmacStrength","nonce","ns2","generate","_truncateToN","truncOnly","sign","bkey","getPrivate","persEnc","ns1","iter","kp","kpX","recoveryParam","canonical","verify","signature","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","./key","./signature","13","_importPrivate","privEnc","_importPublic","pubEnc","reason","derive","14","_importDER","Position","place","getLength","buf","initial","octetLen","rmPadding","constructLength","arr","octets","log","LN2","slen","toDER","backHalf","15","HmacDRBG","predResist","outSize","minEntropy","reseed","reseedInterval","K","V","entropyEnc","nonceEnc","seed","_update","_hmac","hmac","kmac","update","digest","addEnc","temp","17","18","zero2","toHex","d1","d2","m8","m14","m24","cachedProperty","computer","parseBytes","intFromLE","19","20","common","sha","ripemd","sha1","sha224","ripemd160","./hash/common","./hash/hmac","./hash/ripemd","./hash/sha","./hash/utils","21","BlockHash","pending","pendingTotal","blockSize","padLength","_delta8","_delta32","join32","_pad","_digest","./utils","minimalistic-assert","22","Hmac","Hash","inner","outer","23","./sha/1","./sha/224","./sha/256","./sha/384","./sha/512","25","26","27","shaCommon","sum32","sum32_4","sum32_5","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","W","toHex32","split32","../common","../utils","./common","28","29","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","SHA512","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","30","rotr32","p32","ft_1","31","htonl","zero8","rotl32","sum32_3","pos","create","writable","33","process","JS_SHA3_NO_NODE_JS","versions","node","COMMON_JS","JS_SHA3_NO_COMMON_JS","HEX_CHARS","SHIFT","RC","BITS","OUTPUT_TYPES","createOutputMethod","outputType","message","Keccak","createShakeOutputMethod","outputBits","createMethod","method","algorithms","methods","methodNames","algorithm","methodName","blocks","reset","blockCount","byteCount","outputBlocks","extraBytes","notString","lastByteIndex","finalize","arrayBuffer","array","Uint32Array","offset","c0","c3","c4","c5","c6","c7","c9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","_process","34","equal","35","36","setImmediate","MAX_VALUE","h0","h1","h4","h5","h6","h7","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","password","salt","dkLen","innerLen","outerKey","dk","incrementCounter","blockmix_salsa8","BY","Yi","_X","arraycopy","blockxor","salsa20_8","R","src","srcPos","destPos","checkBufferish","ensureInteger","intValue","scrypt","callback","i1","Bi","XY","totalOps","currentOp","lastPercent10","stop","state","i0","limit","console","nextTick","setTimeout","incrementalSMix","steps","percent10","derivedKey","_scrypt","timers","37","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","getPrototypeOf","handle","addFromSetImmediateArguments","partiallyApplied","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","event","port2","createElement","documentElement","script","onreadystatechange","removeChild","appendChild","random","source","indexOf","addEventListener","attachEvent","clearImmediate","args","handler","Function","task","38","39","rng","crypto","getRandomValues","_rnds8","_rnds","40","_rng","_byteToHex","_hexToByte","unparse","bth","_seedBytes","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v4","rnds","ii","uuid","clockseq","msecs","Date","getTime","nsecs","dt","tl","tmh","toLowerCase","oct","./rng","41","bytes_1","decode","textData","atob","arrayify","btoa","../src.ts/utils/bytes","42","43","__importStar","__esModule","errors","supportedAlgorithms","computeHmac","throwError","UNSUPPORTED_OPERATION","operation","../src.ts/utils/errors","44","hmac_1","pbkdf2","iterations","keylen","hashAlgorithm","hLen","T","DK","block1","U","../src.ts/utils/hmac","45","properties_1","trunc","_weakCrypto","defineReadOnly","../src.ts/utils/properties","46","setimmediate","47","XMLHttpRequest","error","48","interface_1","provider_1","wallet_1","address_1","bignumber_1","allowedTransactionKeys","from","gasLimit","gasPrice","to","runMethod","contract","functionName","estimateOnly","interface","functions","params","_i","tx","inputs","shallowCopy","pop","forEach","addressPromise","resolveAddresses","provider","paramType","promises","Promise","all","resolveName","components","resolve","then","ConstantZero","signer","getAddress","outputs","CALL_EXCEPTION","address","estimateGas","sendTransaction","Contract","addressOrName","contractInterface","signerOrProvider","_this","checkNew","Interface","Signer","Provider","INVALID_ARGUMENT","keys","run","estimate","events","eventName","eventInfo","eventCallback","handleEvent","topics","removeListener","topic","getBlock","blockHash","getTransaction","transactionHash","getTransactionReceipt","eventSignature","property","on","propertyName","fallback","overrides","callFallback","connect","deploy","bytecode","match","isHexString","deployFunction","getContractAddress","../providers/provider","../utils/address","../utils/bignumber","../utils/bytes","../utils/errors","../utils/properties","../wallet/wallet","./interface","49","contract_1","./contract","50","extendStatics","__extends","setPrototypeOf","__proto__","__","abi_coder_1","keccak256_1","utf8_1","parseParams","names","types","param","substring","suffix","arrayBracket","Description","info","defineFrozen","Indexed","_super","DeployDescription","MISSING_ARGUMENT","count","expectedCount","UNEXPECTED_ARGUMENT","defaultAbiCoder","FunctionDescription","sighash","errorArg","errorValue","Result","EventDescription","anonymous","inputIndexed","inputNonIndexed","inputDynamic","indexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","TransactionDescription","LogDescription","addMethod","payable","keccak256","toUtf8Bytes","abi","errorMessage","_abi","fragment","parseSignature","parseTransaction","func","bigNumberify","parseLog","values","../utils/abi-coder","../utils/keccak256","../utils/utf8","51","web_1","getTransactionString","transaction","hexlify","hexStripZeros","getResult","status","stringify","getJsonResult","jsonrpc","checkLogTag","blockTag","EtherscanProvider","network","apiKey","baseUrl","perform","url","fetchJson","position","signedTransaction","filter","fromBlock","toBlock","topic0","reject","logs","txs","seq","parseFloat","ethusd","getHistory","startBlock","endBlock","creates","contractAddress","item","checkTransactionResponse","timeStamp","timestamp","../utils/web","./provider","52","checkNetworks","networks","check","chainId","ensAddress","FallbackProvider","providers","ready_1","getNetwork","UNKNOWN_ERROR","_providers","firstError","53","ProviderSigner","etherscan_provider_1","fallback_provider_1","ipc_provider_1","IpcProvider","infura_provider_1","InfuraProvider","json_rpc_provider_1","JsonRpcProvider","web3_provider_1","Web3Provider","getDefaultProvider","./etherscan-provider","./fallback-provider","./infura-provider","./ipc-provider","./json-rpc-provider","./web3-provider","54","networks_1","apiAccessToken","host","_startPending","getSigner","listAccounts","./networks","55","payload","hexlifyTransaction","getLowerCase","JsonRpcSigner","_address","send","accounts","getBalance","getTransactionCount","resolveProperties","signMessage","unlock","ready","connection","request","id","NOT_IMPLEMENTED","_pendingFilter","pendingFilter","filterId","poll","hashes","_emitted","emit","timeout","_stopPending","56","homestead","ropsten","unspecified","mainnet","morden","testnet","rinkeby","kovan","classic","n_1","n_2","57","rlp_1","hash_1","transaction_1","format","object","checkKey","checkValue","allowNull","nullValue","arrayOf","checkHash","hexDataLength","checkNumber","checkUint256","uint256","checkBlockTag","formatBlock","parentHash","difficulty","gasUsed","miner","extraData","transactions","checkBlock","author","formatTransaction","blockNumber","transactionIndex","raw","gas","stripZeros","networkId","formatTransactionRequest","checkTransactionRequest","formatTransactionReceiptLog","transactionLogIndex","logIndex","formatTransactionReceipt","logsBloom","cumulativeGasUsed","formatFilter","checkTopics","replaceValue","formatLog","removed","checkLog","stallPromise","allowNullFunc","executeFunc","attempt","recurse","convertFunc","getEventString","stack","signDigest","_addressPromise","joinSignature","hashMessage","getGasPrice","signedTx","expectedAddress","knownNetwork","_network","_lastBlockNumber","_balances","_events","_pollingInterval","_doPoll","getBlockNumber","newBalances","string","parseEventString","balance","lastBalance","getLogs","doPoll","resetEventsBlock","_poller","setInterval","bind","pollingInterval","clearInterval","waitForTransaction","timer","complete","clearTimeout","once","_a","getCode","getStorageAt","expectedHash","returnedHash","wait","_resolveNames","blockHashOrBlockTag","transactionReceipt","entry","byzantium","getEtherPrice","copyObject","_getResolver","namehash","hexDataSlice","nodeHash","resolverAddress","lookupAddress","nodehash","toUtf8String","addr","listener","polling","listeners","splice","listenerCount","removeAllListeners","eventNameString","../utils/hash","../utils/rlp","../utils/transaction","58","web3Provider","sendAsync","path","_web3Provider","isMetaMask","59","paramTypeBytes","RegExp","paramTypeNumber","paramTypeArray","defaultCoerceFunc","regexParen","regexIdentifier","verifyType","parseParam","allowIndexed","parent","allowType","allowParams","child","allowName","allowArray","sibling","readArray","parseParamType","trim","splitNesting","modifier","parseSignatureEvent","constant","stateMutability","comps","parseSignatureFunction","Coder","coerceFunc","localName","dynamic","CoderNull","consumed","CoderNumber","signed","padZeros","coderType","junkLength","uint256Coder","CoderBoolean","CoderFixedBytes","CoderAddress","_encodeDynamicBytes","dataLength","_decodeDynamicBytes","CoderDynamicBytes","CoderString","alignSize","pack","coders","arrayValues","coder","parts","staticSize","dynamicSize","part","dynamicOffset","unpack","baseOffset","CoderArray","decodedLength","CoderTuple","accum","depth","paramTypeSimple","bool","getParamCoder","component","getTupleParamCoder","AbiCoder","typeObject","jsonCopy","./address","./bignumber","./bytes","./errors","./properties","./utf8","60","getChecksumAddress","chars","hashed","i_1","toUpperCase","ibanLookup","safeDigits","log10","LN10","ibanChecksum","expanded","checksum","getIcapAddress","base36","./keccak256","./rlp","61","__importDefault","default","bn_js_1","_isBigNumber","isBigNumber","BigNumber","ConstantNegativeOne","_bn","NUMERIC_FAULT","fault","outputValue","details","isArrayish","other","toHexString","ConstantOne","ConstantTwo","ConstantWeiPerEther","62","addSlice","objects","arrays","HexCharacters","hexZeroPad","splitSignature","63","messageDetails","MISSING_NEW","kind","64","Zeros","Partition","UseSTD3ASCIIRules","partition","label","65","base64","sha2_1","solidity_1","solidityKeccak256","solidityPack","soliditySha256","random_bytes_1","RLP","units_1","formatEther","parseEther","formatUnits","parseUnits","etherSymbol","./abi-coder","./base64","./hash","./random-bytes","./sha2","./solidity","./transaction","./units","./web","66","sha3","keccak_256","js-sha3","67","frozen","68","arrayifyInteger","unshift","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","lengthLength","69","privateKey","recoverPublicKey","sig","computePublicKey","compressed","compressedPublicKey","publicKey","computeAddress","recoverAddress","70","_hash","_sha256","_sha512","71","regexBytes","regexNumber","regexArray","tight","_pack","baseType","72","secp256k1_1","handleNumber","transactionFields","maxLength","fieldInfo","rawTransaction","./secp256k1","73","getUnitInfo","unitInfos","decimals","tenPower","unitType","unitInfo","fraction","whole","commify","wholeValue","fractionValue","wei","ether","74","UnicodeNormalizationForm","form","normalize","extraLength","nextChar","75","xmlhttprequest_1","base64_1","json","processFunc","headers","user","allowInsecure","authorization","open","header","setRequestHeader","readyState","responseText","jsonError","orginialError","body","statusCode","onerror","connectionError","xmlhttprequest","76","lang_en_1","pbkdf2_1","MasterSecret","HardenedBit","getUpperMask","defaultPath","HDNode","chainCode","mnemonic","_derive","publicKeyBytes","IL","IR","ki","derivePath","_fromSeed","seedArray","mnemonicToSeed","NFKD","mnemonicToEntropy","wordlist","langEn","getWordIndex","entropyBits","checksumMask","fromMnemonic","fromSeed","entropyToMnemonic","indices","remainingBits","checksumBits","getWord","isValidMnemonic","../utils/hmac","../utils/pbkdf2","../utils/secp256k1","../utils/sha2","../wordlists/lang-en","77","Wallet","signing_key_1","SigningKey","./hdnode","./signing-key","./wallet","78","aes","looseArrayify","hexString","zpad","getPassword","NFKC","searchPath","currentChild","matchingChild","isCrowdsaleWallet","encseed","ethaddr","isValidWallet","decryptCrowdsale","encryptedSeed","aesCbc","seedHex","seedHexBytes","signingKey","progressCallback","getSigningKey","derivedHalf","aesCtr","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicCounter","mnemonicAesCtr","kdf","progress","prfFunc","prf","privateKeyBytes","client","uuidRandom","macPrefix","mac","Crypto","cipher","cipherparams","kdfparams","dklen","now","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","gethFilename","../utils/random-bytes","aes-js","scrypt-js","79","hdnode_1","80","secretStorage","safeOptions","createRandom","extraEntropy","locale","fromEncryptedJson","wallet","isEncryptedWallet","verifyMessage","./secret-storage","81","wordlist_1","loadWords","LangEn","Wordlist","register","./wordlist","82","exportWordlist","lang","83","contracts_1","./contracts","./providers","./providers/networks","./utils/errors","./utils/shims"],"mappings":"CAAA,SAAUA,GAAG,GAAoB,iBAAVC,SAAoC,oBAATC,OAAsBA,OAAOD,QAAQD,SAAS,GAAmB,mBAATG,QAAqBA,OAAOC,IAAKD,OAAO,GAAGH,OAAO,EAA0B,oBAATK,OAAwBA,OAA+B,oBAATC,OAAwBA,OAA6B,oBAAPC,KAAsBA,KAAYC,MAAOC,OAAST,KAA3T,CAAkU,WAAqC,OAAmB,SAASU,EAAEC,EAAEC,EAAEC,GAAG,SAASC,EAAEC,EAAEf,GAAG,IAAIY,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,IAAIC,EAAE,mBAAmBC,SAASA,QAAQ,IAAIjB,GAAGgB,EAAE,OAAOA,EAAED,GAAE,GAAI,GAAGG,EAAE,OAAOA,EAAEH,GAAE,GAAI,IAAII,EAAE,IAAIC,MAAM,uBAAuBL,EAAE,KAAK,MAAMI,EAAEE,KAAK,mBAAmBF,EAAE,IAAIG,EAAEV,EAAEG,GAAG,CAACd,QAAQ,IAAIU,EAAEI,GAAG,GAAGQ,KAAKD,EAAErB,QAAQ,SAASS,GAAoB,OAAOI,EAAlBH,EAAEI,GAAG,GAAGL,IAAeA,IAAIY,EAAEA,EAAErB,QAAQS,EAAEC,EAAEC,EAAEC,GAAG,OAAOD,EAAEG,GAAGd,QAAQ,IAAI,IAAIiB,EAAE,mBAAmBD,SAASA,QAAQF,EAAE,EAAEA,EAAEF,EAAEW,OAAOT,IAAID,EAAED,EAAEE,IAAI,OAAOD,EAA7b,CAA4c,CAACW,EAAE,CAAC,SAASR,EAAQf,EAAOD,GACt1B,cAEA,SAAUyB,GAEN,SAASC,EAASC,GACd,OAAQC,SAASD,KAAWA,EAGhC,SAASE,EAAUC,GACf,IAAKJ,EAASI,EAASP,QAAW,OAAO,EAEzC,IAAK,IAAIT,EAAI,EAAGA,EAAIgB,EAASP,OAAQT,IACjC,IAAKY,EAASI,EAAShB,KAAOgB,EAAShB,GAAK,GAAmB,IAAdgB,EAAShB,GACtD,OAAO,EAIf,OAAO,EAGX,SAASiB,EAAYC,EAAKC,GAGtB,GAAID,EAAIE,QAAUC,YAAYC,OAAOJ,IAAqB,eAAbA,EAAIK,KAU7C,OARIJ,IAEID,EADAA,EAAIM,MACEN,EAAIM,QAEJC,MAAMC,UAAUF,MAAMhB,KAAKU,IAIlCA,EAIX,GAAIO,MAAME,QAAQT,GAAM,CACpB,IAAKH,EAAUG,GACX,MAAM,IAAIb,MAAM,iCAAmCa,GAGvD,OAAO,IAAIU,WAAWV,GAI1B,GAAIN,EAASM,EAAIT,SAAWM,EAAUG,GAClC,OAAO,IAAIU,WAAWV,GAG1B,MAAM,IAAIb,MAAM,iCAGpB,SAASwB,EAAYpB,GACjB,OAAO,IAAImB,WAAWnB,GAG1B,SAASqB,EAAUC,EAAaC,EAAaC,EAAaC,EAAaC,GAChD,MAAfD,GAAoC,MAAbC,IAEnBJ,EADAA,EAAYP,MACEO,EAAYP,MAAMU,EAAaC,GAE/BV,MAAMC,UAAUF,MAAMhB,KAAKuB,EAAaG,EAAaC,IAG3EH,EAAYI,IAAIL,EAAaE,GAKjC,IA2DQI,EA3DJC,EA0CO,CACHC,QA1CJ,SAAiBC,GACb,IAAIC,EAAS,GAAIzC,EAAI,EAErB,IADAwC,EAAOE,UAAUF,GACVxC,EAAIwC,EAAK/B,QAAQ,CACpB,IAAIR,EAAIuC,EAAKG,WAAW3C,KAGd,KAANC,GACAwC,EAAOG,KAAK9B,SAAS0B,EAAKK,OAAO7C,EAAG,GAAI,KACxCA,GAAK,GAILyC,EAAOG,KAAK3C,GAIpB,OAAOgB,EAAYwB,IA0BnBK,UAvBJ,SAAmBC,GAGf,IAFA,IAAIN,EAAS,GAAIzC,EAAI,EAEdA,EAAI+C,EAAMtC,QAAQ,CACrB,IAAIR,EAAI8C,EAAM/C,GAEVC,EAAI,KACJwC,EAAOG,KAAKI,OAAOC,aAAahD,IAChCD,KACW,IAAJC,GAAWA,EAAI,KACtBwC,EAAOG,KAAKI,OAAOC,cAAmB,GAAJhD,IAAa,EAAqB,GAAf8C,EAAM/C,EAAI,KAC/DA,GAAK,IAELyC,EAAOG,KAAKI,OAAOC,cAAmB,GAAJhD,IAAa,IAAuB,GAAf8C,EAAM/C,EAAI,KAAc,EAAqB,GAAf+C,EAAM/C,EAAI,KAC/FA,GAAK,GAIb,OAAOyC,EAAOS,KAAK,MASvBC,GAWId,EAAM,mBAWH,CACHE,QAtBJ,SAAiBC,GAEb,IADA,IAAIC,EAAS,GACJzC,EAAI,EAAGA,EAAIwC,EAAK/B,OAAQT,GAAK,EAClCyC,EAAOG,KAAK9B,SAAS0B,EAAKK,OAAO7C,EAAG,GAAI,KAG5C,OAAOyC,GAiBPK,UAXJ,SAAmBC,GAEX,IADA,IAAIN,EAAS,GACJzC,EAAI,EAAGA,EAAI+C,EAAMtC,OAAQT,IAAK,CACnC,IAAIoD,EAAIL,EAAM/C,GACdyC,EAAOG,KAAKP,GAAS,IAAJe,IAAa,GAAKf,EAAQ,GAAJe,IAE3C,OAAOX,EAAOS,KAAK,OAW3BG,EAAiB,CAACC,GAAI,GAAIC,GAAI,GAAIC,GAAI,IAGtCC,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAGtLC,EAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,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","file":"ethers.min.js","sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.ethers = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n\n},{}],2:[function(require,module,exports){\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n\n},{\"buffer\":4}],3:[function(require,module,exports){\nvar randomBytes = require('../../src.ts/utils').randomBytes; module.exports = function(length) { return randomBytes(length); };\n},{\"../../src.ts/utils\":65}],4:[function(require,module,exports){\n\n},{}],5:[function(require,module,exports){\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.hmacDRBG = require('./elliptic/hmac-drbg');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n\n},{\"../package.json\":19,\"./elliptic/curve\":8,\"./elliptic/curves\":11,\"./elliptic/ec\":12,\"./elliptic/eddsa\":15,\"./elliptic/hmac-drbg\":16,\"./elliptic/utils\":18,\"brorand\":3}],6:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a]);\n naf[b] = getNAF(coeffs[b], wndWidth[b]);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\n},{\"../../elliptic\":5,\"bn.js\":2}],7:[function(require,module,exports){\nmodule.exports = {};\n},{}],8:[function(require,module,exports){\n'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n\n},{\"./base\":6,\"./edwards\":7,\"./mont\":9,\"./short\":10}],9:[function(require,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],10:[function(require,module,exports){\n'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n return false;\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\n},{\"../../elliptic\":5,\"../curve\":8,\"bn.js\":2,\"inherits\":32}],11:[function(require,module,exports){\n'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\n\nvar assert = elliptic.utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new elliptic.curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new elliptic.curve.edwards(options);\n else\n this.curve = new elliptic.curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n\n},{\"../elliptic\":5,\"./precomputed/secp256k1\":17,\"hash.js\":20}],12:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n options = elliptic.curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof elliptic.curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n pers: options.pers,\n entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n nonce: this.n.toArray()\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\n},{\"../../elliptic\":5,\"./key\":13,\"./signature\":14,\"bn.js\":2}],13:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n},{\"../../elliptic\":5,\"bn.js\":2}],14:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n }\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n\n},{\"../../elliptic\":5,\"bn.js\":2}],15:[function(require,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],16:[function(require,module,exports){\n'use strict';\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this.reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc);\n var nonce = utils.toArray(options.nonce, options.nonceEnc);\n var pers = utils.toArray(options.pers, options.persEnc);\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this.reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toBuffer(entropy, entropyEnc);\n add = utils.toBuffer(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this.reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this.reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc);\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this.reseed++;\n return utils.encode(res, enc);\n};\n\n},{\"../elliptic\":5,\"hash.js\":20}],17:[function(require,module,exports){\nmodule.exports = undefined;\n},{}],18:[function(require,module,exports){\n'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\n\nutils.assert = function assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n};\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w) {\n var naf = [];\n var ws = 1 << (w + 1);\n var k = num.clone();\n while (k.cmpn(1) >= 0) {\n var z;\n if (k.isOdd()) {\n var mod = k.andln(ws - 1);\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf.push(z);\n\n // Optimization, shift by word if possible\n var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n for (var i = 1; i < shift; i++)\n naf.push(0);\n k.iushrn(shift);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n\n},{\"bn.js\":2}],19:[function(require,module,exports){\nmodule.exports={\"version\":\"6.3.3\"}\n},{}],20:[function(require,module,exports){\nvar hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n\n},{\"./hash/common\":21,\"./hash/hmac\":22,\"./hash/ripemd\":23,\"./hash/sha\":24,\"./hash/utils\":31}],21:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n\n},{\"./utils\":31,\"minimalistic-assert\":34}],22:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n\n},{\"./utils\":31,\"minimalistic-assert\":34}],23:[function(require,module,exports){\nmodule.exports = {ripemd160: null}\n},{}],24:[function(require,module,exports){\n'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n\n},{\"./sha/1\":25,\"./sha/224\":26,\"./sha/256\":27,\"./sha/384\":28,\"./sha/512\":29}],25:[function(require,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],26:[function(require,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],27:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\n},{\"../common\":21,\"../utils\":31,\"./common\":30,\"minimalistic-assert\":34}],28:[function(require,module,exports){\narguments[4][7][0].apply(exports,arguments)\n},{\"dup\":7}],29:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\n},{\"../common\":21,\"../utils\":31,\"minimalistic-assert\":34}],30:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n\n},{\"../utils\":31}],31:[function(require,module,exports){\n'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n\n},{\"inherits\":32,\"minimalistic-assert\":34}],32:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n},{}],33:[function(require,module,exports){\n(function (process,global){\n/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"_process\":35}],34:[function(require,module,exports){\nmodule.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\n},{}],35:[function(require,module,exports){\nmodule.exports = { };\n},{}],36:[function(require,module,exports){\n(function (setImmediate){\n\"use strict\";\n\n(function(root) {\n var MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n\n var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n var h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n var w = new Array(64);\n\n function blocks(p) {\n var off = 0, len = p.length;\n while (len >= 64) {\n var a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n var i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi>>>24) & 0xff);\n p.push((bitLenHi>>>16) & 0xff);\n p.push((bitLenHi>>>8) & 0xff);\n p.push((bitLenHi>>>0) & 0xff);\n p.push((bitLenLo>>>24) & 0xff);\n p.push((bitLenLo>>>16) & 0xff);\n p.push((bitLenLo>>>8) & 0xff);\n p.push((bitLenLo>>>0) & 0xff);\n\n blocks(p);\n\n return [\n (h0>>>24) & 0xff, (h0>>>16) & 0xff, (h0>>>8) & 0xff, (h0>>>0) & 0xff,\n (h1>>>24) & 0xff, (h1>>>16) & 0xff, (h1>>>8) & 0xff, (h1>>>0) & 0xff,\n (h2>>>24) & 0xff, (h2>>>16) & 0xff, (h2>>>8) & 0xff, (h2>>>0) & 0xff,\n (h3>>>24) & 0xff, (h3>>>16) & 0xff, (h3>>>8) & 0xff, (h3>>>0) & 0xff,\n (h4>>>24) & 0xff, (h4>>>16) & 0xff, (h4>>>8) & 0xff, (h4>>>0) & 0xff,\n (h5>>>24) & 0xff, (h5>>>16) & 0xff, (h5>>>8) & 0xff, (h5>>>0) & 0xff,\n (h6>>>24) & 0xff, (h6>>>16) & 0xff, (h6>>>8) & 0xff, (h6>>>0) & 0xff,\n (h7>>>24) & 0xff, (h7>>>16) & 0xff, (h7>>>8) & 0xff, (h7>>>0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = password.length <= 64 ? password : SHA256(password);\n\n var i;\n var innerLen = 64 + salt.length + 4;\n var inner = new Array(innerLen);\n var outerKey = new Array(64);\n var dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) inner[i] = 0x36;\n for (i = 0; i < password.length; i++) inner[i] ^= password[i];\n for (i = 0; i < salt.length; i++) inner[64+i] = salt[i];\n for (i = innerLen - 4; i < innerLen; i++) inner[i] = 0;\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (var i = innerLen-1; i >= innerLen-4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n var i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (var i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (var i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') {\n return false;\n }\n for (var i = 0; i < o.length; i++) {\n if (typeof(o[i]) !== 'number') { return false; }\n\n var v = parseInt(o[i]);\n if (v != o[i] || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n }\n\n function ensureInteger(value, name) {\n var intValue = parseInt(value);\n if (value != intValue) { throw new Error('invalid ' + name); }\n return intValue;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function scrypt(password, salt, N, r, p, dkLen, callback) {\n\n if (!callback) { throw new Error('missing callback'); }\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n\n var b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n var B = new Uint32Array(p * 32 * r)\n for (var i = 0; i < B.length; i++) {\n var j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n var XY = new Uint32Array(64 * r);\n var V = new Uint32Array(32 * r * N);\n\n var Yi = 32 * r;\n\n // scratch space\n var x = new Uint32Array(16); // salsa20_8\n var _X = new Uint32Array(16); // blockmix_salsa8\n\n var totalOps = p * N * 2;\n var currentOp = 0;\n var lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n var stop = false;\n\n // State information\n var state = 0;\n var i0 = 0, i1;\n var Bi;\n\n // How many blockmix_salsa8 can we do per step?\n var limit = parseInt(1000 / r);\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n console.log('SS2', typeof(setImmediate), window);\n var nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n var incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 6\n var offset = (2 * r - 1) * 16; // ROMix - 7\n var j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (var i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n var derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Done; don't break (which would reschedule)\n return callback(null, 1.0, derivedKey);\n }\n\n // Schedule the next steps\n nextTick(incrementalSMix);\n }\n\n // Bootstrap the incremental smix\n incrementalSMix();\n }\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = scrypt;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(scrypt);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = scrypt;\n }\n\n})(this);\n\n}).call(this,require(\"timers\").setImmediate)\n},{\"timers\":38}],37:[function(require,module,exports){\n(function (process,global){\n(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var setImmediate;\n\n function addFromSetImmediateArguments(args) {\n tasksByHandle[nextHandle] = partiallyApplied.apply(undefined, args);\n return nextHandle++;\n }\n\n // This function accepts the same arguments as setImmediate, but\n // returns a function that requires no arguments.\n function partiallyApplied(handler) {\n var args = [].slice.call(arguments, 1);\n return function() {\n if (typeof handler === \"function\") {\n handler.apply(undefined, args);\n } else {\n (new Function(\"\" + handler))();\n }\n };\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(partiallyApplied(runIfPresent, handle), 0);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n task();\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function installNextTickImplementation() {\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n process.nextTick(partiallyApplied(runIfPresent, handle));\n return handle;\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n global.postMessage(messagePrefix + handle, \"*\");\n return handle;\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n channel.port2.postMessage(handle);\n return handle;\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n // Create a