@semaphore-protocol/contracts 4.0.0-beta.9 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -95,13 +95,13 @@ yarn test:report-gas
95
95
  Deploy the `Semaphore.sol` contract without any parameter:
96
96
 
97
97
  ```bash
98
- yarn deploy:semaphore
98
+ yarn deploy
99
99
  ```
100
100
 
101
101
  or deploy it by providing the addresses of the contracts/libraries on which it depends:
102
102
 
103
103
  ```bash
104
- yarn deploy:semaphore --semaphoreVerifier <address>
104
+ yarn deploy --semaphoreVerifier <address>
105
105
  ```
106
106
 
107
107
  > **Note**
@@ -110,11 +110,11 @@ yarn deploy:semaphore --semaphoreVerifier <address>
110
110
  If you want to deploy your contract in a specific network you can set up the `DEFAULT_NETWORK` variable in your `.env` file with the name of one of our supported networks (hardhat, localhost, sepolia, arbitrum). Or you can specify it as an option:
111
111
 
112
112
  ```bash
113
- yarn deploy:semaphore --network sepolia
114
- yarn deploy:semaphore --network mumbai
115
- yarn deploy:semaphore --network optimism-sepolia
116
- yarn deploy:semaphore --network arbitrum-sepolia
117
- yarn deploy:semaphore --network arbitrum
113
+ yarn deploy --network sepolia
114
+ yarn deploy --network mumbai
115
+ yarn deploy --network optimism-sepolia
116
+ yarn deploy --network arbitrum-sepolia
117
+ yarn deploy --network arbitrum
118
118
  ```
119
119
 
120
120
  If you want to deploy contracts on Sepolia or Arbitrum, remember to provide a valid private key and an Infura API in your `.env` file.
package/Semaphore.sol CHANGED
@@ -19,6 +19,7 @@ contract Semaphore is ISemaphore, SemaphoreGroups {
19
19
  mapping(uint256 => Group) public groups;
20
20
 
21
21
  /// @dev Counter to assign an incremental id to the groups.
22
+ /// This counter is used to keep track of the number of groups created.
22
23
  uint256 public groupCounter;
23
24
 
24
25
  /// @dev Initializes the Semaphore verifier used to verify the user's ZK proofs.
@@ -5,4 +5,4 @@ pragma solidity 0.8.23;
5
5
  uint8 constant MIN_DEPTH = 1;
6
6
 
7
7
  /// @dev Maximum supported tree depth.
8
- uint8 constant MAX_DEPTH = 12;
8
+ uint8 constant MAX_DEPTH = 32;
@@ -2,7 +2,7 @@
2
2
  pragma solidity 0.8.23;
3
3
 
4
4
  import {ISemaphoreGroups} from "../interfaces/ISemaphoreGroups.sol";
5
- import {InternalLeanIMT, LeanIMTData} from "@zk-kit/imt.sol/internal/InternalLeanIMT.sol";
5
+ import {InternalLeanIMT, LeanIMTData} from "@zk-kit/lean-imt.sol/InternalLeanIMT.sol";
6
6
 
7
7
  /// @title Semaphore groups contract.
8
8
  /// @dev This contract allows you to create groups, add, remove and update members.
@@ -12,215 +12,532 @@ contract SemaphoreVerifier {
12
12
  uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583;
13
13
 
14
14
  // Verification Key data
15
- uint256 constant alphax = 20491192805390485299153009773594534940189261866228447918068658471970481763042;
16
- uint256 constant alphay = 9383485363053290200918347156157836566562967994039712273449902621266178545958;
17
- uint256 constant betax1 = 4252822878758300859123897981450591353533073413197771768651442665752259397132;
18
- uint256 constant betax2 = 6375614351688725206403948262868962793625744043794305715222011528459656738731;
19
- uint256 constant betay1 = 21847035105528745403288232691147584728191162732299865338377159692350059136679;
20
- uint256 constant betay2 = 10505242626370262277552901082094356697409835680220590971873171140371331206856;
15
+ uint256 constant alphax = 16428432848801857252194528405604668803277877773566238944394625302971855135431;
16
+ uint256 constant alphay = 16846502678714586896801519656441059708016666274385668027902869494772365009666;
17
+ uint256 constant betax1 = 3182164110458002340215786955198810119980427837186618912744689678939861918171;
18
+ uint256 constant betax2 = 16348171800823588416173124589066524623406261996681292662100840445103873053252;
19
+ uint256 constant betay1 = 4920802715848186258981584729175884379674325733638798907835771393452862684714;
20
+ uint256 constant betay2 = 19687132236965066906216944365591810874384658708175106803089633851114028275753;
21
21
  uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634;
22
22
  uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781;
23
23
  uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531;
24
24
  uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930;
25
25
 
26
- // TODO: Add more variables when Semaphore supports tree depth > 12.
27
- // Right now Semaphore supports tree depth 1-12. It will support up to 32.
28
-
29
26
  // Verification Key points.
30
27
  // These values are taken from the verification key json file generated with snarkjs.
31
28
  // It allows to use the same verifier to verify proofs for all the tree depths supported by Semaphore.
32
29
  uint256[14][MAX_DEPTH] VK_POINTS = [
33
30
  [
34
- 563562783592406106461234396505774794044312891062077216951605541624542949349,
35
- 16293410697967515504861065986355060225819302510590370360517024529684437085892,
36
- 718666295291146285397081607986058864287612968465033527894198098928522749430,
37
- 10971164449179097832515056670594147898894418081309026322805549037082528587660,
38
- 16397970494781113622140409380710514277504568512202481522431528914560031562762,
39
- 15987991045804318696151558137607070651882190737142560406194591976742796145195,
40
- 19175554796060272870947844726785784415291967441071791144616572094703752022787,
41
- 14708716857471570462880683190724447733812118518043273649838616424043548023127,
42
- 5109703116431086866657790821388182053265093586387384935734011036204399393630,
43
- 1612476077210311180626421664389270104678910550524363357381847966959374674423,
44
- 16028984344157742576452936855797086856968817024956118691418341585143424903639,
45
- 6905323418829609143361434077039383502192920586565275784934386988372483556465,
46
- 5037234187699234788733084505200789125332575456459095878140727750253994537245,
47
- 5152780378461098676484401284161685966625077837157208907964141131514955942959
31
+ 18358547564487905095688479908858987846616998213156437518686067355563592118237,
32
+ 15662648751553932653781975807624464121405704024803073886925976686616010387354,
33
+ 1545474538105908330267074270190095622354834966212647889547653097055078098224,
34
+ 12579159544968648693964563165973893448704730885005100826654630574108054705556,
35
+ 20602000776800724705104231353971008348678632605343811527051139864158800058742,
36
+ 14100125742256756091734688090621667470723401759459592787502475801413744195297,
37
+ 5090583730862410755830979584235210054631184460526892606022709842010236308675,
38
+ 4935746665478263580470501879719907639988899436008466660042851826337922233613,
39
+ 3603230519262933722323237889869128969156000998401789817930265262617368730462,
40
+ 11467103179184542033012124498958167915605281189440445972230559164572312725202,
41
+ 20354120984011889701917116306955017859695028034788955847437411305304360829487,
42
+ 16952752114474306858880411587178692742589121096026762314329638709126787301483,
43
+ 18678961143994743003180318723146092299060216598083112257165966782010215931454,
44
+ 5866474510945308764957529269555101130643879788634167019342763906927794156659
45
+ ],
46
+ [
47
+ 15357842752194390032830879177519514606613356943505010426726499926726016517582,
48
+ 13720528004476084359207196371475762368424714925503835663451917882430924467554,
49
+ 2196656647584375999320189230399052835502476576494068012902156164580595749760,
50
+ 14571933744484927053512012311263939678215066456565339237074260778179419354637,
51
+ 15947740979005208428427315036716544174249364023308166418156254508145278950889,
52
+ 13324328715790405384125386378518079709609297588403011236512446709595322048979,
53
+ 18308129219862888344083447566760955160779532192553849267018614487088634836563,
54
+ 6372459765603725576424215986727450779217530423615747931788702584026023386877,
55
+ 7093003777162632186231777482293120808844116758585672698445917711442486215336,
56
+ 15357576732947512625016950088762579987226580659874157718142226214458009204755,
57
+ 13910597919064508360434043231000553781072135406219661606166769706745413894201,
58
+ 9475901949906914147982792916474633312982452326368523201024844634638043554494,
59
+ 5845138751782936895477553974859998077996624699108246120208069774017428318479,
60
+ 3326095377373657419775174404381825686428913179751401123841216020519623741775
61
+ ],
62
+ [
63
+ 1096090542237876305763822439899873238394525438826581012748557492836778110917,
64
+ 18282758355470198230938465615400409713402004038201360061031317503584711879237,
65
+ 7973969975759518869552865162652900479072033124669141796195141770899882758383,
66
+ 2920496587818605789230962034477809982324000981266163502059117507002917895757,
67
+ 8027751638293718359199675565570157214590620386957299982399037269650333307021,
68
+ 19002113380575481191643777830101182489616906893723699470070419138254788369727,
69
+ 13631613009301650992828160964785768170789209232530437462516754147352285424672,
70
+ 10537705110128905270703523362934130036880036854847578111990360444182641655212,
71
+ 15557574650831364767567015658284909068256128766563081293491003990055297878366,
72
+ 4049724481871929240016595616316679773340938699307608349394228543495262553744,
73
+ 9967066649437927083270210032320564587652082866881800887188539489167094397640,
74
+ 12463426560961961450861478284334163210886016242490079948590082000657390077088,
75
+ 21318595425700216078579789307308348011199610228556265752904860757510620370622,
76
+ 7430155508771673067823897542900534022148544854722115377830369283854627952599
77
+ ],
78
+ [
79
+ 14033304028688398404089545751254979569049699915340551984412184456786819712695,
80
+ 17529478610649635357901422564682249462969460088983393810272144503916885638629,
81
+ 968190632906420692452807865081290940343138767641492735661467959437198373032,
82
+ 7242759178038747404494096998044224993169513816067824413031492987300456908934,
83
+ 12017353327534072098763415761011052990865822334777878720246921848197559257711,
84
+ 4746680322053291743787031203095442352574780441873349801788355375401126089939,
85
+ 6764632552006100580460767171096753901452726344615530017064702126145414585640,
86
+ 11581587935666673652762153205827599529022773836189155792609728856814288572033,
87
+ 3123694825428833189943974730387937552931713004458396242443840668462184834558,
88
+ 3432192610292569155696646287493678963086402014898209278361624573082188247990,
89
+ 12349833666000936285363634772178969342930188247085371717039135170012686159900,
90
+ 5587426338437935681688079936152042996259869611071713486439341129143155921959,
91
+ 12022589354168680516901928073724404259700970836413687340697868887207353139344,
92
+ 2351613311284811919248989036726852289804810348516261915606564943623124473717
93
+ ],
94
+ [
95
+ 15740655435463241944594855735935231648684671883923953096410588018036769516770,
96
+ 12964751171177929169670182425240761498461607040020835118601467328036987558858,
97
+ 21474571159868965455306627669334290549452576803823591301731326342326814568896,
98
+ 6954370193053655486251406740905618458518953022289151868757271522548301919472,
99
+ 3115002343037487520580459802807906562630507097436525958861415456096559884443,
100
+ 11775142132959919266954507317832500578453517368862270948538792702813845219681,
101
+ 5975456097652384580746132945351678665917860606511206167023154005883554813508,
102
+ 10958037207675554032315788914627312943186758288936582678633536154169678007202,
103
+ 16345185674805541466042568997276776714209785989761944600635051035243995431568,
104
+ 3326264593228494909568322793066180033820330146744162800569972963329142251537,
105
+ 20721047231464194965879320004420846916587593568519526251056516572985788552732,
106
+ 2552439778142862614309289213707433798337671284267429041900242151271508522517,
107
+ 2849386127826497959217687777221941766595094589431869464564268817450132435018,
108
+ 12188539304210779665491473755999603070354632830707125660270270405780470402800
109
+ ],
110
+ [
111
+ 16239592155161765109648123193105804251252701943901733499502441663333912783245,
112
+ 18702593988046837524790351483331632258278160532977261915119611324471253407466,
113
+ 13746033878407070858115621843430829498309218839316343379025665907999784574154,
114
+ 19358066347678636498093783612000296194480758342913325289131948678991962529441,
115
+ 6024976123298004874848602709755399197808739071863728225378332097920450236516,
116
+ 11108084608972457539770160222798307153256767409158349747526974841008717682367,
117
+ 3009127146923662343754766534488769100730310563110562565512507605403185571089,
118
+ 10560679284132950437595738585637379866590755950272794729013445350206405316661,
119
+ 16015321530803994569819047219560485624444041236327101681073970215458831987478,
120
+ 18489840631710745699731219026737904723160484479846032199737023956049067434815,
121
+ 609265187318362115240245160721406765003010398230819869810290394123140807290,
122
+ 2656965952206569220410287839949134856874352189248192147930831679380007159249,
123
+ 13957423432693450118120092425077530751840166358932317773385901323790404449641,
124
+ 7610225795517710715985874151201119876406845575780133396869144717381641586640
125
+ ],
126
+ [
127
+ 6482921272760726478838066628157548923897782117283646773208763176771446379138,
128
+ 4562585331778730670899179927104513856322577370213643119870201750008533040214,
129
+ 9299549824594530154451155704400285409056448609359755927574262701418672785771,
130
+ 16654459784024455427280229763380300423080811024668332509526284511491790880990,
131
+ 18178936861568428015361893654874798233785855995042899944660014774323534883903,
132
+ 534506139369949013962728832141783820104682340925384016906020027968881380951,
133
+ 13888044772855561714276444972404100722751042044045312252045340354941233320135,
134
+ 13061437363756343100054622876229104455920015737970195589611281743974716159827,
135
+ 15297052669271818809266618537917704542138894789392864971735934945598379827363,
136
+ 3240592020743113440365790241401792477958041186219702004441781545015089517479,
137
+ 12939402739160799630996576545137073878726141216092557580496570401396343874133,
138
+ 409838859583542828209958035048329036930557790097408442597169497017958367880,
139
+ 4849352055719384218783567790347020036570406423962447054960403165168624679411,
140
+ 10140481868950825952506002812679553069445144019364683137830173127833535162812
141
+ ],
142
+ [
143
+ 4169753203433043290708949478342499350225971996935208104044673971132510531963,
144
+ 16198597482473356107060462797493408464959815651823410647378959304462364790023,
145
+ 17831214733154720272879709021886998538183166751338990495293296921834561417050,
146
+ 15996002991058741836925286413107190453488985346498046642177496721490001022163,
147
+ 12128929995926069335150064696726717100038806543084523729572253928762150006902,
148
+ 1527343541447603983494013575570118174442170324803005341835852970207664984106,
149
+ 3864366504647042739453971869413719136218296278515580744588126485271535533745,
150
+ 16390744785373846505589339019032992526980013169808686005019244934399314954484,
151
+ 1189371614834081242339044631966546656514169937037419744085755746584992776112,
152
+ 2490564128297998291899011962907372091056992851367564813460897014374926950158,
153
+ 2632864541439030478006092584387470079076010621748787710053145987733131826177,
154
+ 10997016251008884590554668186933912000821350188750456144761529496433221911191,
155
+ 3662989402605074726032541754492900291134797145446056852785520146936851543244,
156
+ 8371074929323402425468930212402691638137013802793901226648986870188378349904
157
+ ],
158
+ [
159
+ 17920452210119585965813298538098997746450528307627971419517604274103840658730,
160
+ 8026613233416032931155189579997899527124867847165186585887532521124762242171,
161
+ 12536429843060624487053183271774959575059067729019923970247266906616071589989,
162
+ 18354222295715868456732739635697044486544782691576216892030243636076554800619,
163
+ 11685593308965088606881675161829854229906033467171784802160080423031157953626,
164
+ 18989841286028554273231159314070667749621876499337485447347239057791285949659,
165
+ 13501500842653069022700095920888317808542113497043735775280862312089436522286,
166
+ 16284422417487952110266526583186344607656490299306406671512902584454645262294,
167
+ 14766820041476554952520399418749355774195705334216487399328042021346008099854,
168
+ 11502099463338241997177160748027482497157165595330950109059924501733819344412,
169
+ 21097733162892834226328090737666232905549661288100963226189626007151883115218,
170
+ 3620141777236347892405766912767968106066233413607983266884777435591408542679,
171
+ 4465316625088681267432956930147995293521314127558426510839100849580054135068,
172
+ 15951396696291486543574989938200386934444721629903447106494532971713975302198
173
+ ],
174
+ [
175
+ 21420692366857794685888663542888709905237738746850069466081467001353666342965,
176
+ 18343503004862189418033094393114515169584171574852422315350418500159030922263,
177
+ 16439186901063853414808045554962977634854311593865750348846556486836509716488,
178
+ 15200551988732901161699976788357951085426436066677048420098461828563894176150,
179
+ 15140772590596966074591171894694986645347795546765667852915300358255369432294,
180
+ 7383386342436648909729802223228006548918015494414484659175617833341830753463,
181
+ 11436445698241305906567677067532324081573492145508451249291326304016376374466,
182
+ 17397405229027848655285535331264669055168427730382628461971653096729174692794,
183
+ 8888190346365862431131132945799487885295183925892581338098808269532220115208,
184
+ 17373048493258440814074078107890527278667903472831731635546171123117085702144,
185
+ 5394355195223713516914582580686192473163629785306318732489822694588538915692,
186
+ 20814957740385525027786677509245187599649792998372465800981035312224123940783,
187
+ 11167741662268878371451552983943563550747492198375641214347145843414778750740,
188
+ 1505498991925224080559736158020686494389967648228591899080542175743913505975
189
+ ],
190
+ [
191
+ 8482807834840099486107357849095958421708288941420679407730439668240369271197,
192
+ 1531932691795154082010331247272128035283420450879984505970978649526303671013,
193
+ 10326017741190716069982105202291613302347042236075737537452333444753171570010,
194
+ 2890563104449202149521252385842115871596603958515320789619311677428773944295,
195
+ 5091938011714608365574587822261119297677309310900626302766934784886036216676,
196
+ 18792973255357094538588824962661759194320829424712347846315600994520652609459,
197
+ 5819484726278895533547092474664732368175576227992878488267454637556311136768,
198
+ 14087278759052154922504944654932471722205352537489748711235261956958139094423,
199
+ 6676755499836944199268283133886528716777488598645051771936175647684814488319,
200
+ 7841200200792172536039490995922340397104113825218911994623753022413575084536,
201
+ 9685171750835271647846188024034904289604883281120913275229696726161494108338,
202
+ 13804722593058778047599265964893015518608567919815229008355552695901539135617,
203
+ 133210224564739370698401112580329091433152068231765294734991529050629411851,
204
+ 6253365067148837443745536970484493754157158998156041417978340186561909915882
205
+ ],
206
+ [
207
+ 6379626794062388565530320965673584683811331210463512233691169393056454417810,
208
+ 8031021217500376290269114216814836477415391402921787637085737712949651005952,
209
+ 15261959534341262089656432084966075417921918036565394975811438856221288978192,
210
+ 12412675319987657724460960278402203548317535126494687402198671892291826563464,
211
+ 11594484527416994136900781664743660516883697944736099448760569480817952218099,
212
+ 5525949004768282420418522754788387377346850869414250693501350383184014395566,
213
+ 13423677678153887686951876961584096043047689175638209759158420018856273430250,
214
+ 688554022717474500337948897714325469989973507431329797109415877246281679190,
215
+ 5767985312159947447966233995178318554138266544591427341210101818005833690773,
216
+ 13782057493439290506357575012457041256926849070794382612465582256292384507590,
217
+ 2009465632383454183075946487099156558696455704620200103263777377956167571948,
218
+ 10265570962161934109202420603055144010322859077969741656080416572925588897009,
219
+ 13063467510206676485181697613068184940643350938488359709447602318070297992418,
220
+ 8824580488237789516855671915345935747743201560548603121129517348234754630838
221
+ ],
222
+ [
223
+ 18405974527641184935569939050199806786119735189423462681352004154947586987761,
224
+ 11063658239692825381704700810385108349384459703800229121613802621026834850995,
225
+ 20401912636755055463157317129314482008782101856095804626717136888886428939725,
226
+ 10581036997862130058603889786198200057133900928078268413900852134308841628552,
227
+ 15613862437263830065893280422700893831122147824370200118126675792748158214283,
228
+ 11637898091445829201992956909089879348463617460955895182594618572267100421779,
229
+ 676470684249461112964281503193041675013396554434239929609436328672155420783,
230
+ 14862758280768060051884504554805186980208629806423451755599092137651959992706,
231
+ 5623342967419780942118234966618900971275224510117264341831041912523393680166,
232
+ 12293742687505619727765346377361630310803471543338450439759434637239250426631,
233
+ 17107107724389526013252251054585363312805578717860151655674796329456502453436,
234
+ 695490429984933474058785653390434166254929169748519672533632124843844650437,
235
+ 7941603993861390710630117468483386570984050378175531457457840811645822985465,
236
+ 19423663035279971057851778008344970269742436279020301703706239058210708410668
237
+ ],
238
+ [
239
+ 2844460676842285471844840162496739784337096369846435331204280645139535043731,
240
+ 5914749649291606384462747717764850940787906745751128721215181537027495043325,
241
+ 16403998562201315274383761287898474039980386929670468025842124690312505385798,
242
+ 16679714051449621657256662882211432986285335589270632187081448168743144646010,
243
+ 14178974435133537452754432783693851994073934244854394772136599698341675338748,
244
+ 14490318493007296294817313593753116388501252549516359980240258503496717340194,
245
+ 21219478166573360512901478467779541318881953172337799756939010190701884653821,
246
+ 13653038712207413996195005796658436532811211815454701512198612316602372800026,
247
+ 6606031466185873676955137126631780808678269492505994174970319773811652852017,
248
+ 6998326006251734945119834407770954155028321677085545151592873301468610324946,
249
+ 15717984973502827230694305820570642040862757036680118080574899662027439132392,
250
+ 6129387663611887185666499162725019000386957238200546358846681873950634080364,
251
+ 3229894653990057163047872622628926092609943988699832798310941005306795398260,
252
+ 1577249093608064810495237122250056987651980088410811739655744853476971398741
253
+ ],
254
+ [
255
+ 8019490235657930229602545685025618469913840887375206662306714562639338096359,
256
+ 6360514614281299182411878013125972206098844277909449064382248671632240409416,
257
+ 18532505668867290379738328175003759079607042632729982459107375168365918757976,
258
+ 8421518624327767035539667378193845962377888010421324291966623261409058898245,
259
+ 21508024236353721936402111331734487542417525255582275314005272967405040862839,
260
+ 18027689383014810715963711252886295463940938266456411644747464137365500951807,
261
+ 14484077699638992615220759300878276902226958277985946809174186953862915299590,
262
+ 4817080763362108602919187869554992685382108795016276838137423588157592666796,
263
+ 10791657063117982548380087239678382293931165307389242284595466175088416832331,
264
+ 17574587559710800088797913763598808892829608388483075257576879500511250128297,
265
+ 20931338330271163055101602391315623325223860904427973201832184784566097488773,
266
+ 1954574324880132355431783868495392698894997264747376529310223470792870288803,
267
+ 2551137710278149502571112114560159376697849893483916552857521579500208583200,
268
+ 3997814265160290573081282672183091638735659350920634229735367532175023689675
269
+ ],
270
+ [
271
+ 20759074837657564809501685143530456377562536015816086555379080667602653298306,
272
+ 11573288866341175121647407708978273297857024597782918874282176717371576773130,
273
+ 19475107603336226504587469711392819869087288902355805230614724291289122375846,
274
+ 21884242265301052283286073107133504985083194336113478618838523331660374213570,
275
+ 11844625750737259417493690805104254337758743574820507915512371579679338049474,
276
+ 18479163117067129250021591308069049721232170743585134941796617403156042279597,
277
+ 4434911559893931929914698652677389633068778061297646529129767359157675249407,
278
+ 316682746098441691626372255125560321251096997722401729182940832349927288255,
279
+ 19610390525670030492896894087745165507340241783776573708027658938288182681300,
280
+ 5840208148535790468526125686220196099566194081164771919666034943299219873755,
281
+ 3679027218793663842409677356801552901605408436635647286999251784339864591201,
282
+ 9878321578558671609403512127325051261043472923444011356477587484000484178928,
283
+ 16646455734597629493777237097088292344110223995728568379569260368267096014288,
284
+ 14735311379463771264009437608444808852233202023120148855228542005281236140064
285
+ ],
286
+ [
287
+ 3066170574229466435407264700502616839626082070514501523679452764935485028736,
288
+ 7951387307333182634684754650901435973768779794218900331714625086350726274942,
289
+ 13578824606544430966133042087468301830727811282121948825028360301706303669231,
290
+ 19848381031896652139349791682530465833719275685855743122849792015759588531339,
291
+ 6922136549797750291447751953663854475218048098902194660515442295348938322083,
292
+ 10287261443878564608994021014993200221021609196127927226041534661185500281120,
293
+ 6329063805909277980282354325384845982783657973381777424581891744521604640994,
294
+ 11017548748010510224711773916683171526878158646735796493859902304094594577338,
295
+ 7338335804036221772945379382782674399589206056354184002757176151341198318122,
296
+ 16538115574966264108203522400275571374556020887608210819563613080068710593180,
297
+ 5138245976626127736555381649425906350640183768145541963359703291501245587848,
298
+ 11347291457433539838423910567581114929056891897670787919546976342310334767900,
299
+ 16731418617609356258989018213857655050257827940403117452476763890174877962606,
300
+ 5300557287595854140445529914668848275536281916366261035684431572728600543772
301
+ ],
302
+ [
303
+ 6573154341426354993599623914164155921131813615298607946435982334364383320793,
304
+ 16419308144058642981524756443290703631729426627385646905142158478345164404879,
305
+ 942314767315789144256266064192022265579304275774793342260835421710673918285,
306
+ 17945712678641984649495876620223190782305382105763957622870181201252059717682,
307
+ 6497446328454795535775520142893202697197882656922991300092165933292014766725,
308
+ 4597431274747983679157649737399090093759447324935531801532881928263496852124,
309
+ 20581664438782214735167492264807215952133504025063870863776714994387749970180,
310
+ 5854805250432620287068939301087113989827350315462338534819773170350910225622,
311
+ 13548539273975522227017059057161374261181128673406746320122994151943985128196,
312
+ 7414800418339434590171697383031637744601564309993253226498272110927128779715,
313
+ 1052987139013233499761917411027037646861657729931697227519754049539833189269,
314
+ 657108667626796780066815408290681939596246857020023912757838581820942772606,
315
+ 19088282520683145597098955555305422198780142332183007920340899996970202127885,
316
+ 12616611543293706969401642310383814806112402432261338062963427055972449363741
317
+ ],
318
+ [
319
+ 9271002136483424788269278316391606491360153732024211579417926107994995432826,
320
+ 8228171988949250866347662896961764196608750080646539001443256474901139877051,
321
+ 20240081759615964816136232877050251456333669788276947762731625798225823502998,
322
+ 3685474186777860155223706676482968796090983045736466861690878558020083034916,
323
+ 305741399293956298249448376598537769086716682101868856634885453070917344627,
324
+ 14942830908704142867090451021371809832404069532430585621173997534136021340349,
325
+ 11873341523902185373029537495825388400298468809112431373607438726587086076801,
326
+ 16566421774425889929886838459987430622148040878072136298073788804726016806526,
327
+ 18314173705630320437871113612645566255775444265992974192826331109357704470403,
328
+ 8597072000455186494551694692524831407069966911367008568012412188890924300508,
329
+ 12713907619301764178052509321657058919935892208409394514649600000706175319189,
330
+ 14893305145776480356274920935320977108910444566603040558476174175562031483300,
331
+ 11027938853766719633497710751595847377263279173227878474215846011660771149283,
332
+ 6927793728403485743741891409676155921703126599118383623637742555953569891357
333
+ ],
334
+ [
335
+ 275116175553159498718561489405169511232715998055900506709208190227728439831,
336
+ 7338708370982730261395030177227912514214944721567888714384503728042214055309,
337
+ 2285508597732647746841213906783440647997136124356359059650028586535477309792,
338
+ 15163443940499746648640851269666923560658903809778640616581862089179343108182,
339
+ 37868753390676617287004841173348795594362354905038492583057282228528019603,
340
+ 19475937072595290694509025801956972632863465524774747773770243946674956142538,
341
+ 1818532521520079200500527816308109106767855745862413136331026404438772138114,
342
+ 7893556755641665136576228990240239515272703124353568551151593029797349984766,
343
+ 21843411659343488969197036446870567462789014279182131087406329675847260538394,
344
+ 13883536936296384480685931731174096875043607202415233199362935327975006076376,
345
+ 3061885619227488514362869971925298711535995206671454426027635264218303442708,
346
+ 18477632669759047471715211461337808302603089797347923153039515976242018999984,
347
+ 4953684980989921770137053964305439167945572062294709110871332076115076441738,
348
+ 849590699713478394267684876803414882497887483062076673282369901261463387635
349
+ ],
350
+ [
351
+ 7481617454708320190331411214970150566519243590120906863698168124347483283307,
352
+ 3790897889674729687102011235738708037383393765058266352188381434189575086080,
353
+ 17582850308142585333519054672998882111865339708436809129995518706804527076353,
354
+ 18961585057625546222763334757505522771740769338010572292783220912986926586854,
355
+ 17761332237343741278668998123360108574589045018570742689473320560784505694171,
356
+ 2985768806786881176362869973473950745997650698247163897069614623128281191971,
357
+ 14099532828736062687388547070054719462342298981811592749594569670955512096417,
358
+ 11038429458121896617356666499000022639824993159854464409767840206807807728043,
359
+ 7092464867594165410092487979619486929166817679669939558999555261465867685619,
360
+ 20690943609696626243672018055336898909740557628366317533030490341400911534771,
361
+ 11468803355345327303851639215186997122074583511720489615730106184659306943551,
362
+ 9723340381470060111632263437706139036358918795037011403763820908081655273682,
363
+ 15929497108714526572140462634902391796285476840034863688822264979709196730555,
364
+ 10556139316790113226399166507094772235069235781001645893008903131855134732783
48
365
  ],
49
366
  [
50
- 6925326031648378844726759441690273332175949886518827719224741736678266471462,
51
- 8087990171976409378525016197066789089596692733769545253942804888352233244331,
52
- 10115242383701466910539784663900956956505212347433548599529944880163612117847,
53
- 15618724583521291135890928658458637081479213437530496494788106479523123480134,
54
- 19573269191775350978579562905764743103417752180580176229566975904395505694207,
55
- 2381522187377974692257359562587606852360557473353020907100590706767276986457,
56
- 3570865353993345507636525265023758855364727230473021611280650482974485897542,
57
- 3026650225811133060402545160946181194870257210933662802529138266788423022235,
58
- 10948020004642082805202152014062303498984706484599503419636897666877701726029,
59
- 16425328653566008388486740080892552688012772956429074139489785673820307770702,
60
- 20638502839000044414864636985783149953889799151008745227055624454042471377832,
61
- 977321369609271151576827768083353705509746900519279122286818202637470656742,
62
- 18662986393280647182646025762677321210586855801774577114215804961111542726195,
63
- 9182414327249389553719378979750943052880001176853490206379257023646169811116
367
+ 9679690373149117563754317307037586538394929348733117229177073999196519450461,
368
+ 13953490152873041611053779700802518995304489998104548903919774028525032867964,
369
+ 8584860336778813488021026261425560177968889952950706471574873674510806966419,
370
+ 8400619522468195192079024924375785176686244213372269992523849676384018875300,
371
+ 16018239095599670975582212156736908990475077583136160880304021421989907078233,
372
+ 13442762142079759258078337448325782252795445513077684243558458356586404542166,
373
+ 8012524517439221218249889438165569497775551565363444399021079689755695756644,
374
+ 18993442931337392722189844722480176040693468853419121807183123246184718322422,
375
+ 3920077716342530896195446297162279477088824676672184510151991496745985467962,
376
+ 5663885918690734602622426696143772526257235018784490039324179199552252272203,
377
+ 11007942216549411481832816505096362871539130535791764225892613523847180067807,
378
+ 12333277086717649179464584335417603775633093807601488202185840108448843332123,
379
+ 18845646001611639216437777320622198530894193094859924604338859788769244491906,
380
+ 4365664869724113934112630479809518948808449158812862195377335314227128146059
64
381
  ],
65
382
  [
66
- 7699900854308622607636895140107457213471038801393300399043779958706267744510,
67
- 7699563868952902688273782470023919811229667532027732585467624469008534197561,
68
- 8605006500231713390564760089884965869867818332514275728271802101761117177706,
69
- 15390497513810955087868026868634948499789494261604405008298272598684585331879,
70
- 1172653041469601107707030355715854571110526375194334139771259673595104816259,
71
- 139822645729727942447876327389754883087551266970976361358585992124005959663,
72
- 807568760006422352594797418374693945705914727214443753238278163089338607471,
73
- 19362805143026565781098954744725161233661862485826387437200176803022106919133,
74
- 9457043262004277983171082100772969689099515860060732671699192102623198243288,
75
- 19229090298682361289811638032020124933114889462217199961448135904896325661193,
76
- 18883326163102164343877677909116984239805709949130729675634413304023108763212,
77
- 2795333364660917174391473381893559091159208514832297547909172862364581446206,
78
- 18012979848063967305324818138773222084850070233834350625943804711450349870116,
79
- 11425098272720529401115253745902976848228234025625773037823969253767737500443
383
+ 1895928299034844696630794694609519515092896092191683631304721647222032914779,
384
+ 19026513891744713045426845531420132126578554294461150386909840193098440147673,
385
+ 4073281111734161932072345995811001896063226222777392994725894652964051683943,
386
+ 13362867147840304033834065229457670563442204439046527165143934160967798444725,
387
+ 9724485076061228092177286932258189815958450833155679889060988975712535081230,
388
+ 1627333086421877964064603957348348763696708139082607562629629725119997724989,
389
+ 15641874381988682075545920458678901707167602315586561132909307694310257446023,
390
+ 11034182059786563285109970430313289917032071817373248775707546493147901388113,
391
+ 19299574745226772810381056007321573284793444116746272581694295128392282602507,
392
+ 6482638271546132546782310681506292669989505915370438641175376336582811537739,
393
+ 5515138970831679245126906315331906152285174207704247085730757090763031968272,
394
+ 5476746571008230667726688443817396210804752373221945489797046634505665572661,
395
+ 7666694240010574980777401583687953099995588711474009270339615112182231942529,
396
+ 5345423812126487230177352826531606752132805611025916574123407915411930666385
80
397
  ],
81
398
  [
82
- 9243647856126339588200227750973237380809101852206502177952556679680468734813,
83
- 2561989864654045354260435368824127763249975523256535586391379695256700207392,
84
- 1308059969166897152269078839315249187046718124106168932020710683189419160756,
85
- 18264861452415533737686303596832882667852638121244187636443702248458018416929,
86
- 5735580005765404165535708760854311053102182143614810924129912232734875728422,
87
- 12547270286864340931439010083179993915942911007015778927394042746771813715897,
88
- 17861179987982979247789643870162154315308943006677455616368767345181299723498,
89
- 12520843301982976970226379882714814545061255956743392202788539428471921045815,
90
- 709419095293140562723620898844593712074413125125086760533949250121053456086,
91
- 20254885558410038279405227446341995510955697359900050994091569463713580982280,
92
- 8876829807505794597615690202974184696287415186921508358861381955321520402876,
93
- 9692396410060123455009190221005078571838194435772371581970098240972280778466,
94
- 11541729643712807778212647011796800767186857085220105751644556558522744760878,
95
- 7117533920695574619512162711113223946930183977424569115798612426749467545080
399
+ 7211419275788152379372992549185439317698375419836488104253705518694042119228,
400
+ 9112140750806762434510825375931543886135367141484613422947675423683311130537,
401
+ 12020406779776320543918475257645763209221278449775176154727249143619468329590,
402
+ 6961266423823329910790066424248133365666435921221127260870444632539329606224,
403
+ 3527954161191330198309290076708590175518992377857531220243324230315686986882,
404
+ 4506493800007416260514839382433205292331764028735360433653631210611507932973,
405
+ 5530043493028748853396066194331787195114268917530734310055878976603589658986,
406
+ 6225101949608434111198442012357272827532649788667254718474232856896193900534,
407
+ 18857681750145313162493356993928966938826030906289025101399379263672964054354,
408
+ 869004496821135911657110194622810910776043851317139916414752924319830673140,
409
+ 1563829187789877652048924285544523323087888587074484491222967490033068091506,
410
+ 3746011388196035005128740753677692387874351474501361202463946309770129429478,
411
+ 8923361680602360491637539340186330583808472610027697444204036893010926051377,
412
+ 17386658730777389148551542774423634880430074554050371095211396948875032586750
96
413
  ],
97
414
  [
98
- 12554869896570109663558999106053541183136083706372178136870048170147558661370,
99
- 21307904757295729894500052152251151076177124351059746872940558537429181679313,
100
- 13447792161027167738515744919555311619301071111923271126707713963292614473975,
101
- 11194665041440536766843756304212299788817698936187605770131686430625103172681,
102
- 7022760843802757109079393624924627417630030139055381384837279305453559861026,
103
- 14368180091281110030022253036601349874026580767275461373222397498585380849175,
104
- 20362090815079102760789516334841889611927869342884580401494938701237909313479,
105
- 11683916255585393494577805363227207275174890005674166623110857790951330330248,
106
- 21680925564107543632769644144771629045807478787600735681275069556336841549441,
107
- 1554686039880869088226596836931999292372497423378849142389700108361111176287,
108
- 9553151402225656007352139561853210183786116738154807824913092141416366824324,
109
- 21774504332021003611111291017295441063483107704370481606906960187337904118400,
110
- 3472743162059388238264946309663113383560193397376658519781344886918012396958,
111
- 21850707327192737842691835772722844106916466129654852946865863108319178245521
415
+ 18803497674827878184210135371703804206276128582022416604041787392310845729622,
416
+ 6590008305704976915857671866558706505394630312395969823040635040879201337002,
417
+ 2714759247406808259589803854440914533632699567907406761316959511568030744066,
418
+ 16299600292583383998706243035294548578562168326056377699804434906128380481545,
419
+ 18030052417377603682453955579175094175373404791176719861146533099419481910116,
420
+ 8281176924556272137773300347187527516223668703826908452855802099328657344885,
421
+ 11849913964821118293258226409033507680960291656604016015128854810099746642358,
422
+ 2718653438901851962181612429288634518502998150085578586248082443515454453331,
423
+ 17998120665039026798317726060462551095622279047136565816648549826384179735803,
424
+ 5133986071087432716437635164720916024596119526725252628340805179596147643344,
425
+ 10436725621240227608920674037516192343160590540839553356331196590007025190330,
426
+ 15618861474705274368161439159831328775613537777134266634959100526889759124590,
427
+ 2511040106219966488942941427805413210834998861588095124665874406004322450915,
428
+ 9256734357641210393451356199893573129989430877284906007481196262323584132500
112
429
  ],
113
430
  [
114
- 6841243505372324564043525805425666596605335849634400049689614462868641599622,
115
- 11706947284665470438085734275890584651957983546291282232304205898476084974953,
116
- 8134420958061302592465696766566203845441024351721660066575866529624350946525,
117
- 2674642993002069213220912300725195098434544703961492590713058622848310061455,
118
- 14007544454490183581525584522132854274412440955138184221862170710084681738226,
119
- 9427297140302346741340407818949601657384670126565058224960470754064287232598,
120
- 9424279417196769259939653963004219272435595656090601392111859177294419276463,
121
- 5159704841441138198509282351301933053602549958584575945916187562678590534936,
122
- 5934282708091541939003757621608766449985810436411564642900129758520734711260,
123
- 6572936900512215029112509161886160866328777917297795430264727434969553346474,
124
- 17332317297867087005634642159909283377570778576256008720318658354552654813365,
125
- 20469716791176463599463762213563135543375669917658488173798369718370224346075,
126
- 11895216520141526042182770992519307655836464153974170586288146149131884093776,
127
- 2345310584279491449819095573562431881564998414485162753036518957549727207513
431
+ 9325238625126515763679853550553375879158552597544709459784109512243397955590,
432
+ 8484194759795978556088297437107686617328133596604796277228418191688537911573,
433
+ 7354463117736585470843139230227589188304331389476818932256765377140053168035,
434
+ 13482530129860761195447497269660263095272961608736579417124458190809007451755,
435
+ 14565877561081097978808851096191380459292726072163754601747539666057949167693,
436
+ 2135718143241813932226161801358235289781058013695871838383051572102928884567,
437
+ 20522747851108608773003772892187458826390403588440155512773881116135635256410,
438
+ 11218511591600821722003994140994121719832310771637604152054113941332818455369,
439
+ 16404237709834224719800904205708261378663612035126521203425485585484994986837,
440
+ 3167586669955731698085513002461997957955073343333183557668566807567186590619,
441
+ 12910675356590890481798719900077391291951346627685199305549632303581651173802,
442
+ 20462953503625657093808736208830478011818679863351201550868889073055617578896,
443
+ 18947108562530644410102590841857357185115081182319111952079371871969663671988,
444
+ 6652719222291337824561052377450295064566587460338214284424446330320206208978
128
445
  ],
129
446
  [
130
- 16222168105567777760688113388791710300819703656136395550799888633073848798053,
131
- 14347453588631116202352669855016330076170847581618919999243717038742915487177,
132
- 1551977748690015855031859376084014992267998166583511614295554470740621685494,
133
- 5558376366205739247464101507558623934779699722049069497418188353860561540238,
134
- 15084362489402846752495176069529022447007294106313236924068931072406922960482,
135
- 17446301099629553693162731281967866078816607293341610477850995414321505446665,
136
- 15416633712259927998995598381829216728913683600537032862643171407716059372732,
137
- 6910124994917236999728700744617337824847623550680442113266553962793201270115,
138
- 3240338086312503075747637551773566329150860621223080774242357236897458479365,
139
- 9706162939164863315053907226494918827393300584078535638283184502242772542378,
140
- 3821371825593696440611637099905775310839636477646533943959149234595561019388,
141
- 12220054708690507765048929995921680127285008492320123722886943219569231705313,
142
- 16484014909498227505527128570845947338361237083477117662394990633734193572570,
143
- 15639273550026538537711009501005182488432976272250651065072907504931158455474
447
+ 7333723286812204168407439917521565157977670700382476881790986792115201279410,
448
+ 21462572925415337738214437933606587540653694853107274549824898449394152530908,
449
+ 6820993392268884858152757378169835647522978080101384568523885945756789014349,
450
+ 16253055713127198337468919465234896268161918860396508551871391729457324125212,
451
+ 10110377608880446364161064735161091842938826397512230713135002732708361876777,
452
+ 6013899729219769410326935661934883558337463050053435907100782150692294649745,
453
+ 18208889227209298598015138525374980382541030144328510393048300775270787949840,
454
+ 15191444075449840811990314906356975059662539527217455842253932605838538105879,
455
+ 19203188682890514423320800755662084436821947463936810212920115637567986869322,
456
+ 3424855308164288636262956984024538145687254883958282264766019244372264927134,
457
+ 19586353501601321585672146098476085745700368665390426128801697725086439710122,
458
+ 15010004828387861046033155948517332272437733117418549079342100218646019702080,
459
+ 13686339229559293872534012092085760944059315023471369613822812965287369238447,
460
+ 3695584012986626869153168308549979767804807828687034680677188403817830418810
144
461
  ],
145
462
  [
146
- 8039261311473792027408130340265108867783988336829815266149766357424909552805,
147
- 13742810756711208866393269789950822956196651488331544225304557369739035583007,
148
- 5732605965679620193714116075516176231919315490749768120227762344555213912038,
149
- 1426283383724925735279168010737048062664480092231550167387716017170422478271,
150
- 7289543915982634578897897440956973302403422297539950338836810160596047457980,
151
- 15177295033774438197517772642364420015492974487860823338193520175227862903717,
152
- 5412509155867259433944542755241941469706034032614068890113478300647952353475,
153
- 16755045912589178729548422106539306191579601567866216267685082373250783779841,
154
- 844425885324371282218176954530597075058496766373014736097970493596574863875,
155
- 12323478340077628423886836431146436403221716179764806398442271274194718652143,
156
- 19468406721151512215981453048984639951787280312568894384216547824763527840472,
157
- 6512636337641737270183934024333064400224464644359645491020358650071524340464,
158
- 8198878215192784492258585011520207242810327647198332623948351347768018051267,
159
- 8014960150646978739731831763393714179490854831922196242908407049327430863238
463
+ 11102327427527201346056529148642207216130990405495165914761901542247835149412,
464
+ 17544563341965869668707473190805417639220912289969746146554006791986582724590,
465
+ 4470848226757772603246285686584200798638888970547659211297578619392420918858,
466
+ 4999887962989142396481351641254451370620928952306237803174890583736074770292,
467
+ 18696621645163318552472841991871104820660024833640321869898695219244792544787,
468
+ 16940838088709411711968888146075539661653566927745755478421474505108166140656,
469
+ 11530916114120676768574532193664705720045810431665651204245333670674998923676,
470
+ 7355883923626920336916662475522243088902821161113628716197989160163721774248,
471
+ 11855011297239142909723378707832446926509921514737098047687587969894126468497,
472
+ 14942813403879667533705178220673159254886774089783887482228941707848831481300,
473
+ 12982663140753853847528768000921561826340636419307931766400467366396846035169,
474
+ 7171806600323437636744282845777660095738436086868856062406225133619265520575,
475
+ 15982491779929281894294451486893882850583039973528579274058985191703359466543,
476
+ 19910319651211685401050894240685395121165652955380089146603485967076493605680
160
477
  ],
161
478
  [
162
- 12816421563768297608770270654146762017343826741755988834647936785087288245221,
163
- 4869230832458710492613139050501069397194236257402947715710705773326736170245,
164
- 18301439700961740613282752163964601039402055729651579152511810295028351855917,
165
- 11073344652802336528382437239976464979745376329678013840706100925574578891663,
166
- 9107882721143487446664847981273782313316003453386555221878701631432129058401,
167
- 9441695541513726822451572070540177043748046411169636568582927338148104680158,
168
- 8987068930426301924419900826390508311526176863992306858982473479912439758010,
169
- 1725109031239210601724581840155988791039497876559382612372874257775877974323,
170
- 18516110346729610211387987894593386281257834088357741109524145966500785499183,
171
- 114078214476076549461901405178268623018026929846201249476869510133510589766,
172
- 15915940069177053049090451855582611051242699463952201407239272373068542013292,
173
- 9373936080407194259749015269175580128112032582312467763484971165406599176646,
174
- 4922802633190996456945600288106639549790810185209505074744770090776471062338,
175
- 8883001810279320778962047313612748029483858862205749774979015238684570049088
479
+ 5314337765479745092537090978913989310916802510812096192767666377841447850226,
480
+ 19811002121850954821192061183148615163420706271800817927960207430256612524059,
481
+ 18254735365473444026840717290492248863101576601864757410600437101587001057517,
482
+ 3428844080448214358238191483671878854080864964895729401025193865570307658787,
483
+ 17688699129722255312471132988267997472426043097741089176095207368928695347323,
484
+ 4698778325800416923484519718058460264124242609977080857699400967590134848728,
485
+ 11905991584861721837480962390330989450197421918781662074678555052926188909272,
486
+ 11195321655863853696452219195252788379254952714823481930861848719672010792417,
487
+ 7364573423043519994861038175593500896079924196888521130462378149111415036167,
488
+ 8488161531239994007634631892382512438657593769374020273048837520623507271908,
489
+ 10948897450624334536526533930990935852623955696383743452358741253735922067160,
490
+ 7654175296077985337834288232610181411799310934515705881481549241949669590123,
491
+ 2456818423512317060112219756429819064402183920202453945509918337536940292593,
492
+ 10561627566351771351550703479997725668661012955063201536370060753602302262655
176
493
  ],
177
494
  [
178
- 10621957863293158040009666146187340406300006617270113507997717497098731431645,
179
- 11544253490899949675932185200523769178642714850738952025947643180461452257027,
180
- 19367886286197174023585178612664391272570357530876044259219178006444442279835,
181
- 49583159539136224825737189586941489049516773623689603831917260806184061698,
182
- 14718035764669896417897962215694711502145567157050183561348015124983050763912,
183
- 16468329864686708461615593125586840110548434159129257976547738477143616225069,
184
- 19316680422470456517825967239402234468963225932355881906076897312088976727808,
185
- 3793008941035953637072065313624049788550692955904011087840457148221740889857,
186
- 8994123619474927749524041243795236789619386871069943230512200348341409025802,
187
- 2898455184193535874162795400065700362364113037155462125222703939894764399559,
188
- 7006987736985681119096469806956612323700302986805047546691419062106874738669,
189
- 6578526693577992862738197741211972861837397562647850241473856881198749597774,
190
- 18253609658317686864081972526657430282945609846265497350129963610508303097865,
191
- 20602454323920106770928127673050173555696255204782817307960073152139829286712
495
+ 4310089243116651250383251477034324245457116277666484671624575402227833925755,
496
+ 11882651094700172542567008359015417490389070633573140242127755563781024148099,
497
+ 9304328383406369649010049197573360507944684656613297568584394172735340111263,
498
+ 18874624159090765871635243875933482675871258293088886749847315202391523956097,
499
+ 21295163659036117126535933666532228255134275601226122998452204301238438701469,
500
+ 12010652807420347304532358791037860496459429689113682253200903987591679627067,
501
+ 16035147304145989851106586435462674695447030608653337914734493255503105122271,
502
+ 9396862051344040260236487045030117425080665841603826234795752404308634565281,
503
+ 9623434193020540057685957851610556657916120473978726845338192370747426064401,
504
+ 20738972702824723087864078264786214906718601061526079118500228332898388551221,
505
+ 457108501000029082366810998923133233303603111079376685755578228260824733356,
506
+ 13918719735797746251051948238671198059940858851588937008268023917020073366433,
507
+ 19519317439483352367895890468095276150233498159453735432212409926941855183358,
508
+ 8400170000010792082337905010575114377571921640630709589910201278654198179035
192
509
  ],
193
510
  [
194
- 6919690594446594824660388293695365136302375315018989420609208580270256193473,
195
- 20152340858374022568747410447956756883573367358669429548835673215400335225747,
196
- 11674218038035204128186342498577020603218612593894174060137243207689886423596,
197
- 16509772385894559653132866836382733797078280267167499296517180188027714772070,
198
- 18387700354891683161007139598833533459740755646851082725263944626765753998128,
199
- 8496770255291121655312305725645117658510206297162207504909146686627154245846,
200
- 3295351580633631545204707236418977224205703294426182202748223245617942752953,
201
- 11318533876720817956139762907441156918032396007060817178042936071438547629319,
202
- 9798692489110933308397734193670030418121117030189402149994776248649813971130,
203
- 7253879530870754821836349446054636336833607432103959373798000294248292966203,
204
- 21808645514001764351825515375665639285586999794992628373968527911077248645185,
205
- 2859748802987042398453158245958377568437550705999358391809538153774651114865,
206
- 4373537692781319117201803895634857716202697229097770645380222493663057011429,
207
- 21723556418902236605356947828522543021755681613733490227407492902239152334538
511
+ 9476241965146735006848999585927664857836027675817848342111996150638876938940,
512
+ 20383112265143113621158547584533108172173014612497300318772355462448750327634,
513
+ 10370498046215116715134085566322498900073301617448752966999679321197451973184,
514
+ 20733082136685384602293372077980283048183069753990343452404863587763569081917,
515
+ 209896847902324756441033880218169809685412620378498856437573937154846479551,
516
+ 19434208870058033389225349051527401299247475125763108527095891214558119617655,
517
+ 4154375339831547300427516624109559852426973786711444825735879648391004291098,
518
+ 2168897082728012692838287354581700563166925732559863316849698306675591131396,
519
+ 3690054103601385333490512469861728231387681704127049683413276534001532261943,
520
+ 3997073653940540957268729302105309759820513901669570962308110503858257659002,
521
+ 1493108383089723041516694658460301260449183718295935886883417227290045091286,
522
+ 1479721274324005701970059663387618978577823761358404739977258141309872068056,
523
+ 20291086357406391640638647514048720424247838755446061571102712546958076851767,
524
+ 6860718845648137601753080432837091439893783461195961430761483584544410630099
208
525
  ],
209
526
  [
210
- 3246325158773052647788911340476235648870186305670446321333841273770228016262,
211
- 21672319732433045166991956534762990382763080837755725716637027617201056105221,
212
- 1097625536358560225015844871776096852794298581720514105921271391131873344240,
213
- 5332470123606111842725808071294486759248878958039162159296029608796276205941,
214
- 4147129560663007063799754603731275683761368247704376766576071776957227165800,
215
- 7032402220603422034618210155106646820962552774510253688945919060625670415308,
216
- 5241022678363371404039324538224070321660623527603509392150146296843642044363,
217
- 5281273397025328620822441453790518717375265972202147684745427714882287252791,
218
- 8109626675067152219533782552336308649905522111608563670382254454484448073029,
219
- 4696661232179595878220108186097206302552300846640109174608389689072223809776,
220
- 13974026846148052806722306435446895222317781098029808723550029071117080027133,
221
- 14451415757463182353662034231421738047130904367363697865823311429455557043904,
222
- 9490728148230530026163178051838213576627639298618884515939110001242292217290,
223
- 227687333556127166330064214209948378192130717415165040791158610964406937909
527
+ 7929983584961755765377471515178883367433439212271736050025708429355823243624,
528
+ 10728358412340769313351519567620170787387770135423141966436844748162218854008,
529
+ 4169855297038740915695363102363044976292665711211255871324667594694964037773,
530
+ 2424224908982307794171893487036131370038399449016750026546326391873466118335,
531
+ 1265438250797513961458031163301351393237543067943565114202366151377865506872,
532
+ 11342865295714982458109220575532930834959120923837779800176462280225501198217,
533
+ 10415384677581396651184780193811022815145977389536746022901590915883889609878,
534
+ 5311187015233522007413118391261106264838418369874755037462489089469638365756,
535
+ 7499079368996193403750547553190134606728655877653629403923945654291953825315,
536
+ 1743769713774086589463238504150542785039161133276706463569974209707667651575,
537
+ 5792276842105452143354445764064878932177699791644537942211472215636738768211,
538
+ 9443070058088199873709166495831389298947366881168483562080569357428781583046,
539
+ 14451507664847323254023899990839043037382802537389529773382951366995420730648,
540
+ 7633550475637360595097128986678209600092185294414596687526062925070686318486
224
541
  ]
225
542
  ];
226
543
 
@@ -55,6 +55,10 @@ interface ISemaphore {
55
55
  uint256[8] points
56
56
  );
57
57
 
58
+ /// @dev Returns the current value of the group counter.
59
+ /// @return The current group counter value.
60
+ function groupCounter() external view returns (uint256);
61
+
58
62
  /// @dev See {SemaphoreGroups-_createGroup}.
59
63
  function createGroup() external returns (uint256);
60
64
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semaphore-protocol/contracts",
3
- "version": "4.0.0-beta.9",
3
+ "version": "4.0.0",
4
4
  "description": "Semaphore contracts to manage groups and broadcast anonymous signals.",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -30,6 +30,6 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@zk-kit/imt.sol": "2.0.0-beta.8"
33
+ "@zk-kit/lean-imt.sol": "2.0.0"
34
34
  }
35
35
  }