@aztec/accounts 0.66.0 → 0.67.1-devnet
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/artifacts/EcdsaKAccount.json +415 -302
- package/artifacts/EcdsaRAccount.json +447 -334
- package/artifacts/SchnorrAccount.json +472 -367
- package/artifacts/SchnorrSingleKeyAccount.json +356 -272
- package/dest/testing/configuration.js +4 -4
- package/package.json +12 -8
- package/src/testing/configuration.ts +3 -3
|
@@ -1,114 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"transpiled": true,
|
|
3
|
-
"noir_version": "1.0.0-beta.0+
|
|
3
|
+
"noir_version": "1.0.0-beta.0+4184522b3ac6c4ce82aadf4911289cdf9fb0dd79-x8664",
|
|
4
4
|
"name": "EcdsaRAccount",
|
|
5
5
|
"functions": [
|
|
6
|
-
{
|
|
7
|
-
"name": "compute_note_hash_and_optionally_a_nullifier",
|
|
8
|
-
"is_unconstrained": true,
|
|
9
|
-
"custom_attributes": [],
|
|
10
|
-
"abi": {
|
|
11
|
-
"error_types": {
|
|
12
|
-
"11091894166229312484": {
|
|
13
|
-
"error_kind": "fmtstring",
|
|
14
|
-
"item_types": [],
|
|
15
|
-
"length": 20
|
|
16
|
-
},
|
|
17
|
-
"16761564377371454734": {
|
|
18
|
-
"error_kind": "string",
|
|
19
|
-
"string": "Array index out of bounds"
|
|
20
|
-
},
|
|
21
|
-
"17843811134343075018": {
|
|
22
|
-
"error_kind": "string",
|
|
23
|
-
"string": "Stack too deep"
|
|
24
|
-
},
|
|
25
|
-
"2920182694213909827": {
|
|
26
|
-
"error_kind": "string",
|
|
27
|
-
"string": "attempt to subtract with overflow"
|
|
28
|
-
},
|
|
29
|
-
"5019202896831570965": {
|
|
30
|
-
"error_kind": "string",
|
|
31
|
-
"string": "attempt to add with overflow"
|
|
32
|
-
},
|
|
33
|
-
"8270195893599566439": {
|
|
34
|
-
"error_kind": "string",
|
|
35
|
-
"string": "Invalid public keys hint for address"
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
"parameters": [
|
|
39
|
-
{
|
|
40
|
-
"name": "contract_address",
|
|
41
|
-
"type": {
|
|
42
|
-
"fields": [
|
|
43
|
-
{
|
|
44
|
-
"name": "inner",
|
|
45
|
-
"type": {
|
|
46
|
-
"kind": "field"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"kind": "struct",
|
|
51
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
52
|
-
},
|
|
53
|
-
"visibility": "private"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"name": "nonce",
|
|
57
|
-
"type": {
|
|
58
|
-
"kind": "field"
|
|
59
|
-
},
|
|
60
|
-
"visibility": "private"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"name": "storage_slot",
|
|
64
|
-
"type": {
|
|
65
|
-
"kind": "field"
|
|
66
|
-
},
|
|
67
|
-
"visibility": "private"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"name": "note_type_id",
|
|
71
|
-
"type": {
|
|
72
|
-
"kind": "field"
|
|
73
|
-
},
|
|
74
|
-
"visibility": "private"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"name": "compute_nullifier",
|
|
78
|
-
"type": {
|
|
79
|
-
"kind": "boolean"
|
|
80
|
-
},
|
|
81
|
-
"visibility": "private"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"name": "serialized_note",
|
|
85
|
-
"type": {
|
|
86
|
-
"kind": "array",
|
|
87
|
-
"length": 5,
|
|
88
|
-
"type": {
|
|
89
|
-
"kind": "field"
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
"visibility": "private"
|
|
93
|
-
}
|
|
94
|
-
],
|
|
95
|
-
"return_type": {
|
|
96
|
-
"abi_type": {
|
|
97
|
-
"kind": "array",
|
|
98
|
-
"length": 4,
|
|
99
|
-
"type": {
|
|
100
|
-
"kind": "field"
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
"visibility": "public"
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
"bytecode": "H4sIAAAAAAAA/+1dXYtk21ne1VXVPd3T3VXzPZnvyZyTC8GwP+vjQuxoTAKRGLwQFInsqtoVDoSomRPIQcEOCfkDuZCIehcwEBBBBBGiFyLohfgfBPVOCOKFV9aes9+up596anXtqb16enLOgpldvdda78ez3vWu77VbwYfhaPGvVf3uVM/dYDVYmpPqGW4XogZphT7lbL0lcu68JXK23xI5Ow3KWcrWDc6HpuXtesC1aRl33wIZ994CGa+9BTLuB83WH5PR2qiDxb/ri3+HwYdt2EokKlY6x3YVX1aU0hDLgi6B3Ie0a4kTSP9UtZCWdwfiG3Rw0T7xbZL+KMwi1N2D/Ml+RXPPD/3c6F/zQz80uX/5dEkfdTG+7er5+dMllp+HPGWwjlZrmeSMrsXtQNxnKa4Ncb9CcR2I+xzFYcNjMhluu6BLc3aVjjyXS2a67YFuhqvx3vfDe9AifkGwLBuMM/4Hgdc6ELWIn8nD+JhtmT9rny7l2aW4zumqHhbXhTgr3/L5AtKxbe1Buk/De7b5drBaRyzeyhWxbtBmZ0a/44H+IqQKdy6Tzul53hiHuHcAzxeEj4+2CPHxgX+Jz6018tvvMuydBmehTXgiRobZNUxPcfsQ1zk9z+eg+rsDfJCWydGl9D9f/d2rnruQx/L3Bf9d4n9ObvEOMWJabfHO0pd18lPV77J/U9rPy8qY2GeX4aR6hq8b0mmURnlospov6Qardc34qnrYiCxV8KIn0T4A2Zvsj3QJx+9DuQ4IP2yLmpvEGIbKzzRIP1V+pjn6g7nR73qhn2Wqb9Uc/XSs+jcN4nMm/3U/5Ts0+od+5C+M/pEf/M/s89gPPmfl2/NCPz6rv30/+E+s/3cjWAbum9+E9835xyjbtG9u/A9IVl9985skD+OD/cAy7paQtS/i2IfdEnxuCT6K1mGDtPpXVK52g7SuX1Ede1dUriax32mQ1n6DtJrEvkkdjxuk1WqQ1lXFfrdBWmfjzWAVvzKcVM9wu3DW1pgsOH7qkD5l6FL675Kcfsb50UDNS3L/wMe8ZMmbsQ8C3T/A+TCW52zML+K2WTQcj4sii+d5FGbJICnSFtE3Wfkd+wk1D6j6Gqqf3yDWcr6L5xI7EMdzkF2IMxnVfJefed5oI/yRf1/E4TxAnbK8GZy3NayPah2B64+n9aiN+9fG/yBY9Xk++tebziHzWgrm7Ys4XL/AOOTTFnzeRlq8poIYljb60/b5dNeBPtsf9hvfxNqL8T8IfPq4pf0dkjyMD9vfkZC1L+K4nI8EnyPB56NOqxes2iGP11SZHTr4YH5LdyTytdY8jQ+/Yz5KZr9t9Yf7DBhLH+u12FZb21j6lh/D+/KfjVe6wbJsMO8RxGP63+wsaf5l9a4n8h8Srn7mIsPwiOQzHsi75wXzONrUVxr/A5LVl6/skTyMD/dP+37wCVtEH+XpC3x4XpPLrvxnc3Vot5i+Dzpievxt+fHd31fPvqDJtntD6KP6/2Ud+VvSDctmWz+G2BwTH1d98FTeG9cH439Z9UHZn6s++JmrXtYHl/2gvFaWN0Wc0bJ5EKwPmP4G6Ijp8bflx3f/Vj37gibXBzX3ju+wPvwL6earXef5OGUD+4KWq4wQe2tbe4Kf5fVrT1HM9oFBrXOgjBza9DfKXfb5Pugs6XI65ok4GX+FE9vyMcmzrp72RX5Lp9YOG8R8ruarsJ/176STYYj1c1fI3aX0vwj9rP8IzmOo2k5XXXTZuZp3xbp+nXijLVve/WDV1pqe5ypp3g5Wg8XdAd4oIwdl5yZ3aeffq2HniBPyvwjXMnA53BbpVd1V5XAb5HqV/3QZd7YXqnp2IK7Jtr/E7vsdjU8ZuqeXg0+f0iNWqt90E/DhutVgXyT2VT9N3o9K/fxgy/qpcMJ0GGfy8Dtuh1R/66J24rCledZtJ96FdqLXWq8jj8f97A8JE1d9ddn5HZEe67DJa7qhLd8h3e540W25rnY3WA0Wdw94o4wclJ2b3HXbIcQJ+V+Eaxm4HO6K9Ignt0Oo412Q61X+02Uc9onL0IE43+0Q6svtkC98+pQesVLjFeOp5lV7FId9Wx6L1e1DqzGT4nN7Sz63BR+/ffUwdfnzum3uDQdO2J/g8Y6aE20JGVxyqbLad/C5vSWf228Jn9YWfDyPzTPu92DgdgTLVrUjtynuPsTx3OkngvNYYdwDiOP1soeEA8Y9gjhcb+dw0RzCj2q0aVjGhhOXWRlOqmdYLyT8wmjfJxxekz7bw5jLJxA6PxC4bYqzyV3i/J3uki6nY57Yfj+gOGzXHlIc2u4jikPbfVz97gWr+PKet/vBeR35nWsP2H2SAfO11jyND79jPkpmVz/U1Y649rTdEXyORL5t9VEyK3+1LR/U5y7xudsgH7RFs719+rsMJ9Uz3C6cnblGX9ugr8jZH2BQ/pptH/0129FjiOOyfwJxXF5PBcab+ibD6VUbsIFv+qjji/1RDh/ju4x7XXyxb8GhSXyxPW8Q3wljiEFhyPgihowvYsj4IoboczkoDA2LEsP/qtE/QRs1nTzP89S23xbFIfYoP4eL5oB2d5d0OR3Lg226yWZzhbbH9U+rjCXZP2mdz49zjbbH69V6ViWkYY7l/iYx5/ESYs7jJbR3Hi+hvXM5Kp9scc8IB4x7DnF1x0uGb93xkuqrex7T1C6zyxrTtAUWvN8AbUbNoz6mOLR7sxk1pkHeGGc68jvXvuHLGtO0SR/Mz3NWdfdBHwo+RyLftvoombnMm+Cj5mzVPPO2fNAWef7jqvhgV7+Nyxp9MJcP+mDGdJtxxzlfWqPf9lHFt+6443Xx9XN25urji200B4Wv4VQX36vSL/aJ76YYYn+6zrgDbZT7U37O3jQ77qhbl02nuuMOV1+rJfJ6Pj9XbNLeIv+rdn6uLAez968W73/5m5OvvTf9YvHBy898ffbl/Bvvv5d/7TOz2TeKly9RYuRwJLRlK+A09rsn3gfBsme4I2i6NNwRGvZFfqarTg4ptOy92m2CtfTAocftDWi5eF+0c4V3UKJcdzag5eJ90W4E3h2mepVt+lt5WUWbZ/DXyeOS/55Ij3LcdMh/bwNaLt5qZIY0eZUf5brvmfcR8T4WvF0yc7lhfVeyHgve7LGRT4MecmCYPBByuTB8KNI/EHqqUfrDy9Ft6JLVpdsjkf6hQzfU+9Hl6DZyyerS7bFI/8ihG+r92JEP02GaewIbxOehH3zGLn1d+DwR6R8LPXsCgyeXo1vuktWl21OR/olDN9T76eXoNnHJ6tLtmUj/1KEb6v3MkQ/TYZqHAhvE54kffKYufV34PBfpnwk9ewIDy7vJyOKZH71nLeJneuA75H9ZI4tnwSquqhzU6oTl7Yu4TcrvueCjaB02SOtOg7RuN0jrboO0jhqkdb9BWg8apHWvQVqPGqT1uEFa3M/EGZWT6hnWCzN+sS8waM7PxCGveGJQPkXNLSB+GFDuuqt8aD/PKQ5t/pMUhzb8guKwTX2n+t0TerHtHpGO/I5tRI31jkS+1pqn8eF3zEfJ3BMybDKevefgc1/wORL5ttVHyex7dZR3xT5okA/aIvsKHDOeVM9wq5CkV9VXWNwnIY7t6AXEcdm/A3FcXu8KjF/HN/2ohm/CW+Xw1N8f7izfozx46g/zPoF4TH8Mp/7+qKJpZYvt189q2W5afoZF3dUfrB+m01XDt+5uGsSiTjt7JLBQbTC3s+hDuZ3FcuR2FvHlfrCaS8F3rvaPd/Rgvm39uJL5Z63f8LPWnvMu3TKcVM9wuzD3OwdT31ew7aMvZjtCX8xlj76Yy+tdgfGmvslwuho7rK8+vtg+cVD44u7rj/G9GF+ce+TQJL5++uFRwTtnMKidSYzvM4hjfLFcGF8sF/S5HC7qa9fpq6GN8hqBp53PU+4nBkIu7BPU9Ye48/lLNXbjuPo72NbyOhG2tSfVM9wuRDXa13g6j5KsGGbhIE+z2SCJZ/EwnKXZPIpGUTxOR0kyn6aj2ShO5vEwlvi3SCc//fQPbxVAfkGg1wGM/0Hgs64v1wFc66pl4HWAJ0LWvojjuSG15vdE8FG0HjRIq0P6qP6i33bsw9tukJ/pge+Q/0Hg0y8tbUHtpVCnDly+yjW2cdmcazyGtLjtUOMXz3sYNq7Lxv9A4OCj/NT8q6rLl2Hf68r5vkMeT2vPZ7eoqbV5NW4u50h2g1UbQrzQJlHup0C/DGrenOtD3Xlz19zA/Q113KTOl78PHHo82ICWi7faA4Q0eQ8kyvVoA1ou3hftJ+I9kKrs25SW0ylZMP06GkdEg9/bvK667YXlsLSIHa85m947a2R4APHr/D7Se3ABPcZPtRVI8wn9rW4Kcc3PmX/BscubaA+M/4HQ20d7oPydamdLf7cXrPoytBksP7UfuPx9LHRlP6j6j61gtZw36det88F1dLf0z0R6tJcDhx7PNqDl4v1cpEea7Adde5yamJ9W8yzb0nreAC1XufeDVdyeUtxziFu3zoS8zW+8gPdvwm8Y/wOS1ZffeEHyMD7Kb6zbF4Dt2iZpXgDfMvSC1TJA/dfJ+0LI2xf5XxCtd4LNdLf074r0OF944NDj3Q1ouXh/SqRHmuw3UC7La/0D6wOMK+DL/m9W/T4Cnpbf6p1au35Kcbh+bvWupP8LDvovHPTfcdDvCPrKbxgv5Te6FPcc4viWDLPdXwLcPufge9vB966D73GwSp+/svMFkOFXHTLcc8hw3yFDP1ilb33CjkiH8V2hi/2NdoE2jjT5i8odkR773ryeivn5djns2zwjPrcFH/UFgRb9fW2NHlz+j4WOqlyOKE7ZBvMz++gJHl1K+1vtpdy/DXPHmMZolGE/WMX1TbSN/NXPjh95ztrGLsnD+HC/50jIqsbx7NvrrvEjrcMGafEt2Z6+kOH9Vhisl3X2sWC58ElltH2+FQbLgMeoiC+fX0B82Sbq3p6M+Tf50tMmdU7xUTKrM7Psw3eCVX12HHy6gs+RyLetPkpmLvMm+KA+l3X7DI97kCbuOfxOe/ke43DPIebFL6xh+v+BPsn3qt/mS/z46vq+hOuGuhFBrXmwbeCcAGLOQfknw6LuOjaWAfsnVSf8Yr/5l4iN/0GwWud8tNsdkmedrynLzfrHXy3e/2LxwW/kX3tvlr//3u9+/deL3/9m8fJ9VANJd4SaXPzcbVXpyt/XRDoMvWC1+Lm54CLgdy63t05HpKXgs/SubhK6C6WH5TVTxcvw3qYuh8ndZJcDMeQuhxriWBwOR7jLgfhyOR4E53Xkdy4bOiAZMF9rzdP48Dvmo2RWXY4O6VO3y9ERfHx3OXiLQqdBPmpI7btrY7a3T3+X4aR6hluFJPP7Ieb6voJtf9MuBZc9dim4vJ4KjDf1TYZT3a2HyOejhK+yeQsKX8OpLr5t4nlS/R1uFa4+vsrPWFD42ruP8V3Goc/lcBGGTQ058EJoS4cXQjMN5OH5kreNhybG/6pd8nYUrNowt7sYhxfWYxzyaQs+itYnGqR1q0FaZm+GzR7RDqo0P3UsNVmesk3k6Yv/hemLa1Xl42P5DdvF2fY5m7ZfN+XC24Es/f/BVP7v7J7HQ00Fq+lrlgHT8/a1INBjCcvrF6+rNd2j2ra6l7kbTpu2bWibLeJpPNh2sJ+MPHfXpMfpP0x/2FnKOqFlI5Ufpxb9HmdZXjn0GGQ33dTUfZfS3wTduB41fX2ZyeO6vuzjY/jL3xxUPap7DL9FfIwu2wvXHeOzuyY9bxmw9C8cdUflx6sAXB/rNbnUh8R2HXrcFnpg+lukh6X/OaGH30ul49BkvgsytUlO5N+l9J921G11narrI+MXXafKH3+7/Ev6l3jdE3jtCnl4i3Em8LK6dFU+2Ivl1gW+F5VRGbhML7pi1jBTR9J5i4e6uleNl8xO8EPfqp73SFb1cXhXPUc+Kj0v5Vn6zzrqOdq0D7vFesx1Evl3Kf0XHPVcXdnMW5cw/dX/2LjbL+4Kedgv/tpbUM8v88PcXM9dH+bGeskfdFD169W8SPXb9ZFusxncdtb0vAiWKdoMziH0IR7Tf8VRx9RRl114x+WhPrqNevMHnxHzG4SXn480L/G6eQFeNwgvS19sWMfwg+dl6Jx60Weg6hiWG9cxVxmVgctUtU9YNqZfP1j169zWqS1QiDm3dZZ/d016o8dzKL8n2jrVnpveRw7aZfYfV799luVwFIYtw+Z0qRePjZB/l9J/q9Kb5yzKZ2cLOefDPJon+TzP8tksneY3iX4ZzG7KMixxf0nzbV7mhaMw5HlVlMvvdpk4agkcNtku42cdw71dRs3JlvX4ok9zGK1nlllt+kCFMA4FUMbSX5O/DEcOPh8b2fl3HxtZ4MfIzlqgU+B1ukxbhr3q7w7kxfQmR5fS/zFc6PgDaMFfpRX8ynR/4UjXWvN8RUO865yef7d/upq+fbqa3ngfnK7KaHHXIQ57IGU4rP5GvJCWydGl9D+sdLcyuQZ5LH9f8L9G/M/JLd6hYTKttnhn6cvy+XNqgVH3pivhK55EH9+xbGY77Dy592P01BMxUHWNd/0Fzekc9oPVXhqvxF9vQId+sNob9bEbjj8tV4aT6hluFyK10+5wDd+GG6zQ84rh3O9hluUlVr2mywU6ErgTC0caf0crgXgYrC3yHkI8pv9Kd0nzJ0RT7e5V9mnv90R6XOGwcu4Fqx2hvTV8MN1Fsu1ckmyqQ7IuL89kqBWmfSHjSfUM89F0GBeDcBYu/ptns1GYZul4lo7mSZims3AQpeFkPCpmw2iYjydZEufzQRJOoywJh+PItRsznidJGhfjMCxG03Q0yuPROInyvBiMxsNwmIzms+lglM9nRTyOwlkxnCRxOF0suY4XlXc0nO0Hq+2B0Y6SNJoNhtk8D5OwmBZJFCX5LEumeZLOZ1EyicaTQTEeDuIwHQwX79IoHcXpNJ0N8lmx3Omp2od4FGfT4Xg6HeTZdDIpivlwkWs0jyaDPIonSRTneZKM0jTMi3kxSZPxAqTRdDSO0uE0TMe8ixRpL0CNB8UgzYtiIfd4PJpGyXQ0LYrpLE/y4WLwPZxNioUm8WS6wG8yD4u8GGXRJJ0MowXqTl+dRnGcLISYDEbhKAtn01FcjPIsy8dZPEtn8ziMs8G8CLNxMhun48XrNJrmi2F1mE/mUeb8UMR4mEzCeJpN83yaJOOiSBdCzvJJFiXxeBwvhuaTVwCFwyJavC6y2XwwDBe2k4TheBCzrzxHu5hNooUNJNNkWoyjyXwBYrH4mecLHRYs02iej2fhOCotdZKGSTGfRNN5Hk8nSZIN5+wnW0x/y8Azp+fscDIfZ6OFHSfTSTieZeM4CQdhkofxYLwouMFsMB/H6Tid5XGaLqw8yaL5wlTjsjAWeo54lvE8LuEsn8VxFmajZB7n40U5LbikxayYzaNhGE1G2SRMFrjlxTBL5sUC+nSyqGfzUTSdZGeY31Ryx+PJop7M8mxhWOEgng0mWZouKCSDyXhRNwdJFs4H80keLmxqUXtL7MPxOAvH82zBuTDatxTtKImyhSUMRvMFFGGcxOmiTg8macltmA4GCxNPJqNhFE2zeEF4UTEXVSrKJtMwSYt8oGboz8YG1W9Pnxne+FI9439AsvroXyM/k4fx4R1Hd4WsavWBZzrVSsZdwce1ktEErV6DtA4apHXziup43CCt/Suq440GaR1dUR2vNUirf0V1PGyQ1p4HHbnf2XAbk6mdJhaU/+YToQHpiAHlLm2pqHGBM2J5l+LQLm2XiueTlbVxUm23BYUTnqysgxOWB+OENsM4eTpVVhunuic88JRXHZywPBgntBnGyc98UH2ceP4Vg8LJ5K6LE5YH44Q2wzh5mteqjZOaW7SgcMKd6XVwwvJgnNBmGCdPl83Uxgl373BQOOFlM3VwwvJgnNBmeHf1rqDreY5z4w/bGv+DYBVLH+MttUNE7Tgy7HpCVrWji/sr6mRMT/BRtK41SKvTIK39Bmm1GqR10CCtboO0rjdIa6dBWocN0mo3SItPjKDvYL/lZSNGjYvljP+bPAWq5ok8n2Q+uyxfbc7Ydcjj6SLAs1Ncap2mJeTBy/vZhoJg1Wei3LieUwZ1owj7NVVuar3JtYHFs82HrjJVGLYIG0yvbkTpBasY82lJrj9luA5xvPkJ/YVqM40+7uzENHw61tJPqh9l2m/RKYY9kuGk+jvcKix35eMOaoXnHsls6ecgM++w3rResAyYHvU2edS6ZN+RD21F5eX1Tpzj4r0QN0B25tOntHv0d1fQUfs+LN9llb3aXe8qe0v/smbZu9a61c7tTcv+BuVTPnRdXt5TswfyMS0uX17jV/5a7bfprKGzE6zaX4/oHIh8Lh+q9mJs6qf4sl5L/20odz4dqvLj3g/XxtYynFTPcMvw5ja1bt6Pu6qbWtUckuV1XXjKdoV8uoLPZdFSe1x47KCw6Tj4qD7bUaDrdxk890U3vkHmql9KvStk7Ys4tpNdwUeNCd4mWmw7WI5N9sFVHz8ImvfFrkuSld5qjnZdXUP6rn69ms803rx3uCdk4/GX6qOoG+mCBvE03c5ObAEflMf4dyn9X3XPy+lnrS0M+SQV8vLbt13eVHQNMOL6h/z3A13WDckTdUmef4U9rH9T/VY2Zdj1glWb4vaN15YxTvUb/a6NLcsAx7ttISvv87X0PxHjC3UaFcuwDJ1TL/qk6jQqjh+6wBf1CoKl3pie2wp1AxaWDZ9GxTkInjtW7S5izv7WMFx3GtXodSn9P4uxgJpPuk6yo+7XKE7N1ahbYvHmpv8kn+bJr4x4nINBrddzW6ZuB1brstxeoR3U3bthWJQy/8EGa35N+iH2Nb7amo+yXzBMXX6hyTrJN0+oswNYJ9f1q9T4UrXDZTipnuGWgf3duvl248/+7r/Jz/i5dVj3nfi2ak9jyYFau7eg9nWxj1O+QflG9nHr5rY4KB9nWNT1cdxuYpwa1ynfaPKoOsb1D+sY1yOsY9wvRZplOKme4XYhUnW45eDtY+0Hy9M1Rm6RrJi+LeR33bqvxoiWbt0BfJTz5PUwSPiFZz8yVudfA8KA22T7zUHVO7xNvM6XJFQ/Ts0TXKc4rJN8synWST4b14Y4tvV2cF5HfsdzNGoe0TXfzM8g0DhvMseo5jLZh9Wdy1TtsGsu83X1cc3VdBvko9px13601+XjmkeQ5yK3C+lV9RVq/MJ2hP1VLnvsr3J5HQuMX8c31bmJ/6qMHRlf1T9S2DO+iD3jy2dWgmBzfHFcWQdfT/2JIbcDGFTflPFV41aFPeOL2DO+iH3dvd+Wri6+nvbqXCl8N8XQsNjmSxKmE/cLua/A+XDOWe33CsS7lqDDe7FQ3pPqGdYLEb9AmS/SzeJUv4H1xvzYxgeCBtPhvlTHwb+1hu6OQ4+L8iL2rrWo0i6avpVuGE+zPMnG4bTIhvlgeNGtdE3zL0bl6fh5kUdRFM/C4rL5p1k+nObDKBqnUZFG2evcyudpbTtTfVYLrvXMTX2WyV3q9KXXPMvC7RDaP/dVsY9/Uj0vwCC6CCTjxfVwk/odCH14fMDrES1Bh/ctfZP2VHpa65Nzd1weyr+rcjSMfNSxeDQajONJmA5n0/ksTV6njvnC0HNfPPI8lkrUXIZhVT6/Tfslcb5ZtW+8lm/pf7C7pPnd6rePuU217sNz9n7ONocp9xED0MfvOdjN91UZ/wOStWm7bRE/kwfLtAzcZ/S0xp+aPGqNSn2Ntdyrexyslpn6ELjrTiq0Xz6DVXfPFebnOXksY9dcPq/BqfZWzYPh2MK136hFOKzzE7xuZen/DPzEP5CfUH0VtZbLfkLNBVmcmgvye8Z4aYvHF2DE5y8s/Q8rIDb9OhnOk/EahTrrqdZlDS+0/2PCy9M5WefX3LpCHr6J/McOvDY968oyYPpjB16IJeZl3ut8y2XZ4kXYsi1a+r8W2Ko9DvugTxk6p170ydQeB9zH0AW+6+oLpt+k/F37GFxno9Fnsz9HvocUh76W/Tn6bPNt6EtdbY86F8L+fDeo58//EezD9YUu1ef8f4EymGrIGwEA",
|
|
107
|
-
"debug_symbols": "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",
|
|
108
|
-
"brillig_names": [
|
|
109
|
-
"compute_note_hash_and_optionally_a_nullifier"
|
|
110
|
-
]
|
|
111
|
-
},
|
|
112
6
|
{
|
|
113
7
|
"name": "verify_private_authwit",
|
|
114
8
|
"is_unconstrained": false,
|
|
@@ -270,7 +164,7 @@
|
|
|
270
164
|
}
|
|
271
165
|
},
|
|
272
166
|
{
|
|
273
|
-
"name": "
|
|
167
|
+
"name": "blobs_hash",
|
|
274
168
|
"type": {
|
|
275
169
|
"kind": "field"
|
|
276
170
|
}
|
|
@@ -508,7 +402,7 @@
|
|
|
508
402
|
}
|
|
509
403
|
],
|
|
510
404
|
"kind": "struct",
|
|
511
|
-
"path": "authwit::aztec::protocol_types::
|
|
405
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
512
406
|
}
|
|
513
407
|
},
|
|
514
408
|
{
|
|
@@ -601,6 +495,27 @@
|
|
|
601
495
|
"kind": "struct",
|
|
602
496
|
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
603
497
|
}
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
"name": "max_priority_fees_per_gas",
|
|
501
|
+
"type": {
|
|
502
|
+
"fields": [
|
|
503
|
+
{
|
|
504
|
+
"name": "fee_per_da_gas",
|
|
505
|
+
"type": {
|
|
506
|
+
"kind": "field"
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"name": "fee_per_l2_gas",
|
|
511
|
+
"type": {
|
|
512
|
+
"kind": "field"
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
],
|
|
516
|
+
"kind": "struct",
|
|
517
|
+
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
518
|
+
}
|
|
604
519
|
}
|
|
605
520
|
],
|
|
606
521
|
"kind": "struct",
|
|
@@ -1369,7 +1284,7 @@
|
|
|
1369
1284
|
}
|
|
1370
1285
|
},
|
|
1371
1286
|
{
|
|
1372
|
-
"name": "
|
|
1287
|
+
"name": "blobs_hash",
|
|
1373
1288
|
"type": {
|
|
1374
1289
|
"kind": "field"
|
|
1375
1290
|
}
|
|
@@ -1607,7 +1522,7 @@
|
|
|
1607
1522
|
}
|
|
1608
1523
|
],
|
|
1609
1524
|
"kind": "struct",
|
|
1610
|
-
"path": "authwit::aztec::protocol_types::
|
|
1525
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
1611
1526
|
}
|
|
1612
1527
|
},
|
|
1613
1528
|
{
|
|
@@ -1700,6 +1615,27 @@
|
|
|
1700
1615
|
"kind": "struct",
|
|
1701
1616
|
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
1702
1617
|
}
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"name": "max_priority_fees_per_gas",
|
|
1621
|
+
"type": {
|
|
1622
|
+
"fields": [
|
|
1623
|
+
{
|
|
1624
|
+
"name": "fee_per_da_gas",
|
|
1625
|
+
"type": {
|
|
1626
|
+
"kind": "field"
|
|
1627
|
+
}
|
|
1628
|
+
},
|
|
1629
|
+
{
|
|
1630
|
+
"name": "fee_per_l2_gas",
|
|
1631
|
+
"type": {
|
|
1632
|
+
"kind": "field"
|
|
1633
|
+
}
|
|
1634
|
+
}
|
|
1635
|
+
],
|
|
1636
|
+
"kind": "struct",
|
|
1637
|
+
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
1638
|
+
}
|
|
1703
1639
|
}
|
|
1704
1640
|
],
|
|
1705
1641
|
"kind": "struct",
|
|
@@ -1718,8 +1654,8 @@
|
|
|
1718
1654
|
"visibility": "databus"
|
|
1719
1655
|
}
|
|
1720
1656
|
},
|
|
1721
|
-
"bytecode": "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Vw1Q31lT3zBT3wdT395S37VS34xS32NS3zpS3xFS3+hR379R35ZR321R30RR3xtR3/JQ38lQ36BQ33dQ305Q3yVQ7/xX79NX76pX74FX71hX7y9X7wZX791W77RW74u+BKDec6zeIazez6vefaveK6ve2areh6reNare46nekaneP6ne7ajem6jeSaje96fepafeU6feAafer6beXabeC6beuaXeZ6XeFaXew6TecaTeH6TezaPee6PeKaPe1/IQQL1nRL3DQ70fQ717Qr3XQb0zQb2PQD3rr56jV8+oq+e/1bPV6rll9Uywet5WPcuqnhNVz2Cq5xvVs4PquTz1zJt6nkw9q6Weg1LPGKnnd9SzMeq5E/VMh3peYgVA3eev7qFX615177e6r1rds6zu4VX3x6p7PNU9j+oeQHVPnLpHTN0zpe4hUvfUqHtM1D0X6h4EdU1eXaNW12zVNUx1TU9d41LXfNQ1EHVNQJ0jV+eM1TlUdU5RnWNT55zUORh1TkLF6CpmVTGcimnUGr/Zf0uFgLp3VW2bBWo2expRVa3cr+71VPc+qnsB1b1x6l4xde+UupdI3Vuj7jVR916oexHUtXl1rVpdu1XXMtW1PXWtS137UddC1LUBda5cnTtW51LVuUV1rk2de1LnYroBugN6AFQsp2IbdR91z0DdbSxKt7P/dvp4YJe9nr5qKC7X3v77RHLPw/boXmvXyjW82lZMKbvqln+m7IT3zbL//tq+tO8bOyxdB+/bw+V4m4eK70u77Bvqsm+yy76cy749XPYd4rLvBJd957rsu8pl3+0u+x512feSy773XfZ947LvT5d9ZeHi+9Zx2bepy764y76BLvvGu+yb7bJvN5d9B7jsO9Zl35ku+y532Xerve+ZM1544upFuUq8706X3z3msu8JlzqXufzuaZffPevyuxdc9r3kUucrLr97zeV3b7j8brnLvndc6nzP5XcrXH73ocvvPnHZ95lLnV+4/O4rl9994/K771z2/eBS508uv/vF5Xe/ufzuT5d9f7vU+a/L74KR4r8LRYr/rsRlX6lLnS1cftfK5XdtXH7XzmVfB5c6O7n8bh2X33Vx+d1Al98dau+7c8Cll22+9KQhTn6Z/VetV/H/7f+uXDspaRlg/z/auM0qQ/VS15+JZrJlgdobMf94WaBmPcnVPk6dDPWvfP5FbYOr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",
|
|
1722
|
-
"debug_symbols": "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ZWpCy9SMlqn58ZlabCZUbEmI0AgxGiFBI6RohAyNUEEjVNEINTBCktAIPXzZ53T5Ks70Jy0JPTyoc573skx5SejhQZ1NZ0JNl4QaGCFNaIQyGiFCI8RohASNkD6REN18UWomZGiEChqhx2dqvW4dttzLtIERsoRGKKMRIjRCjEZI0AgpGqGHZ+qpr5gTY0lLQgWNUEUj1MAIlYRGKKMRIjRCjEZI0AgpGqHH56EmM6G2PI6pD19lnOfx/JyXbVB9+CpjbTOhuvzuR2U0QoJGSNEIGRqhgkaoohFqTyQkaXkK2xIaoYxG6AmZ+rp16HIva4xGSNAIKRohQyNU0AhVNEINixCnhEYooxECy9ScwDI1J7BMzQksU3MCy9Sc+mbqVxO1v4nW3URnAcyridzfBPU3cURWmk/qLe1Lu9J8OGM51yUhQSOkaIQMjVBBI1TRCLWuhF5MHCEkyfOviFrm9pWf+QghybGECI0QoxESNEKKRsi6Eno1UfqbqP1NtO4mOPU3kfubOKLG2w7aQ2QQOyakvwntb8L6myj9TdT+Jlp3E4d8iX/HRO5vov/qlv6rW/qvbum/uqX/6pb+q1v6r27pv7q1/+rW/qtb+69u7b+6tf/q1v6rW/uvbu2/urX/6tb+q9v6r27rv7qt/+q2/qvb+q9u67+6rf/qtv6r2/qvbuu/ukv/1V36r+7Sf3WX/qu79F/dpf/qLv1Xd+m/ukv/1V36r+7af3XX/qu79l/dtf/qrv1Xd+2/umv/1V37r+7af3XX/qu79V/drf/qbv1Xd+u/ulv/1d36r+7Wf3W3/qu79V/drfvqlpT6m8j9TVB/E9zfhPQ3of1NWH8Tpb+J2t9E/9Wd+6/u3H915/6rO/df3bn/6s79V3fuv7pz/6X3JV+uq7cmXkBf8nW5JSh7QOQBsQckHpB6QOYBFQ+oekCeiGBPRLAnItgTEeyJCPZEBHsigj0RwZ6IYE9EsCcixBMR4okI8USEeCJCPBEhnogQT0SIJyLEExHiiQj1RIR6IkI9EaGeiFBPRKgnItQTEeqJCPVEhHoiwjwRYZ6IME9EmCcizBMR5okI80SEeSLCPBFhnogonogonogonogonogonogonogonogonogonogonoionoionoionoionoionoionoionoionoionoionohonohonohonohonohonoho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",
|
|
1657
|
+
"bytecode": "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",
|
|
1658
|
+
"debug_symbols": "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",
|
|
1723
1659
|
"brillig_names": [
|
|
1724
1660
|
"get_note_internal",
|
|
1725
1661
|
"decompose_hint",
|
|
@@ -1731,28 +1667,8 @@
|
|
|
1731
1667
|
"directive_integer_quotient",
|
|
1732
1668
|
"directive_to_radix"
|
|
1733
1669
|
],
|
|
1734
|
-
"verification_key": "
|
|
1735
|
-
"artifact_hash": "
|
|
1736
|
-
},
|
|
1737
|
-
{
|
|
1738
|
-
"name": "sync_notes",
|
|
1739
|
-
"is_unconstrained": true,
|
|
1740
|
-
"custom_attributes": [],
|
|
1741
|
-
"abi": {
|
|
1742
|
-
"error_types": {
|
|
1743
|
-
"17843811134343075018": {
|
|
1744
|
-
"error_kind": "string",
|
|
1745
|
-
"string": "Stack too deep"
|
|
1746
|
-
}
|
|
1747
|
-
},
|
|
1748
|
-
"parameters": [],
|
|
1749
|
-
"return_type": null
|
|
1750
|
-
},
|
|
1751
|
-
"bytecode": "H4sIAAAAAAAA/9VUyw6CMBBseURBOaiJ3kz8gyIYOJJ49x8akKMe8OKNT5eabbqpVRKlJkzSbEs3szNlW0oUKESPvAH9tGnIFdhBDCA6aN/tRgFr9hviQKs7JH/O0iQw+BtQ/5OfWtIvIPktnT+bAM+xVfzYi6w77UaIesKWZ/nPbHpe9fhc/MFnh32k1caghm+uIYci3RuYR4Y8iRlRd9prh/eV5YzJei7w++RVO67va/lrWIeafvmOFV/qrDMe1wmv+YFXVVrypcYv4KBzGnMvbGHe1wvY45yo3mjul/J0vZ0b0gNB8gCVxsvQjgYAAA==",
|
|
1752
|
-
"debug_symbols": "ndLBCoQgFAXQf3nrFmmZ2a/EEFYWgmiYDQzRv49FMzRDG908vOJ5bu4KvWiXsZF6MDNU9QrKdNxJo31atwRaK5WSY3O9hnQfCB3v54nrPc6OWwcVIjQBoXt/Koj3g1QCqowV2yMBhMNJFk7ycEKCCb79heUkPQ3LKf0ihPCBSAwqYhCNQWUEym57wEjGPoiQ8hdtPj65lbxV4uzZsOjuUjv3msRfAydrOtEvVuxdvNTQzxrRBGO/1q9+Aw==",
|
|
1753
|
-
"brillig_names": [
|
|
1754
|
-
"sync_notes"
|
|
1755
|
-
]
|
|
1670
|
+
"verification_key": "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",
|
|
1671
|
+
"artifact_hash": "e7552d296af009c9ed2e2ca261de6124cad0b1c1-7815f55815678dd447ba328e49cdb723-client-ivc-true"
|
|
1756
1672
|
},
|
|
1757
1673
|
{
|
|
1758
1674
|
"name": "constructor",
|
|
@@ -1783,10 +1699,6 @@
|
|
|
1783
1699
|
"error_kind": "string",
|
|
1784
1700
|
"string": "Initializer address is not the contract deployer"
|
|
1785
1701
|
},
|
|
1786
|
-
"2429784973622283587": {
|
|
1787
|
-
"error_kind": "string",
|
|
1788
|
-
"string": "Can only emit a note log for an existing note."
|
|
1789
|
-
},
|
|
1790
1702
|
"2709101749560550278": {
|
|
1791
1703
|
"error_kind": "string",
|
|
1792
1704
|
"string": "Cannot serialize point at infinity as bytes."
|
|
@@ -1810,10 +1722,6 @@
|
|
|
1810
1722
|
"error_kind": "string",
|
|
1811
1723
|
"string": "attempt to add with overflow"
|
|
1812
1724
|
},
|
|
1813
|
-
"5727012404371710682": {
|
|
1814
|
-
"error_kind": "string",
|
|
1815
|
-
"string": "push out of bounds"
|
|
1816
|
-
},
|
|
1817
1725
|
"6485997221020871071": {
|
|
1818
1726
|
"error_kind": "string",
|
|
1819
1727
|
"string": "call to assert_max_bit_size"
|
|
@@ -1825,10 +1733,6 @@
|
|
|
1825
1733
|
"8193989641828211937": {
|
|
1826
1734
|
"error_kind": "string",
|
|
1827
1735
|
"string": "ciphertext length mismatch"
|
|
1828
|
-
},
|
|
1829
|
-
"8270195893599566439": {
|
|
1830
|
-
"error_kind": "string",
|
|
1831
|
-
"string": "Invalid public keys hint for address"
|
|
1832
1736
|
}
|
|
1833
1737
|
},
|
|
1834
1738
|
"parameters": [
|
|
@@ -1936,7 +1840,7 @@
|
|
|
1936
1840
|
}
|
|
1937
1841
|
},
|
|
1938
1842
|
{
|
|
1939
|
-
"name": "
|
|
1843
|
+
"name": "blobs_hash",
|
|
1940
1844
|
"type": {
|
|
1941
1845
|
"kind": "field"
|
|
1942
1846
|
}
|
|
@@ -2174,7 +2078,7 @@
|
|
|
2174
2078
|
}
|
|
2175
2079
|
],
|
|
2176
2080
|
"kind": "struct",
|
|
2177
|
-
"path": "authwit::aztec::protocol_types::
|
|
2081
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
2178
2082
|
}
|
|
2179
2083
|
},
|
|
2180
2084
|
{
|
|
@@ -2267,6 +2171,27 @@
|
|
|
2267
2171
|
"kind": "struct",
|
|
2268
2172
|
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
2269
2173
|
}
|
|
2174
|
+
},
|
|
2175
|
+
{
|
|
2176
|
+
"name": "max_priority_fees_per_gas",
|
|
2177
|
+
"type": {
|
|
2178
|
+
"fields": [
|
|
2179
|
+
{
|
|
2180
|
+
"name": "fee_per_da_gas",
|
|
2181
|
+
"type": {
|
|
2182
|
+
"kind": "field"
|
|
2183
|
+
}
|
|
2184
|
+
},
|
|
2185
|
+
{
|
|
2186
|
+
"name": "fee_per_l2_gas",
|
|
2187
|
+
"type": {
|
|
2188
|
+
"kind": "field"
|
|
2189
|
+
}
|
|
2190
|
+
}
|
|
2191
|
+
],
|
|
2192
|
+
"kind": "struct",
|
|
2193
|
+
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
2194
|
+
}
|
|
2270
2195
|
}
|
|
2271
2196
|
],
|
|
2272
2197
|
"kind": "struct",
|
|
@@ -3054,7 +2979,7 @@
|
|
|
3054
2979
|
}
|
|
3055
2980
|
},
|
|
3056
2981
|
{
|
|
3057
|
-
"name": "
|
|
2982
|
+
"name": "blobs_hash",
|
|
3058
2983
|
"type": {
|
|
3059
2984
|
"kind": "field"
|
|
3060
2985
|
}
|
|
@@ -3292,7 +3217,7 @@
|
|
|
3292
3217
|
}
|
|
3293
3218
|
],
|
|
3294
3219
|
"kind": "struct",
|
|
3295
|
-
"path": "authwit::aztec::protocol_types::
|
|
3220
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
3296
3221
|
}
|
|
3297
3222
|
},
|
|
3298
3223
|
{
|
|
@@ -3385,6 +3310,27 @@
|
|
|
3385
3310
|
"kind": "struct",
|
|
3386
3311
|
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
3387
3312
|
}
|
|
3313
|
+
},
|
|
3314
|
+
{
|
|
3315
|
+
"name": "max_priority_fees_per_gas",
|
|
3316
|
+
"type": {
|
|
3317
|
+
"fields": [
|
|
3318
|
+
{
|
|
3319
|
+
"name": "fee_per_da_gas",
|
|
3320
|
+
"type": {
|
|
3321
|
+
"kind": "field"
|
|
3322
|
+
}
|
|
3323
|
+
},
|
|
3324
|
+
{
|
|
3325
|
+
"name": "fee_per_l2_gas",
|
|
3326
|
+
"type": {
|
|
3327
|
+
"kind": "field"
|
|
3328
|
+
}
|
|
3329
|
+
}
|
|
3330
|
+
],
|
|
3331
|
+
"kind": "struct",
|
|
3332
|
+
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
3333
|
+
}
|
|
3388
3334
|
}
|
|
3389
3335
|
],
|
|
3390
3336
|
"kind": "struct",
|
|
@@ -3403,15 +3349,14 @@
|
|
|
3403
3349
|
"visibility": "databus"
|
|
3404
3350
|
}
|
|
3405
3351
|
},
|
|
3406
|
-
"bytecode": "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",
|
|
3407
|
-
"debug_symbols": "7L3bjiPNkpz7LutaF3nwPM2rbAiCzhhgMLMxs/aVoHff9Xc3s9ir3BlV1cG0oMenC+FfEllNfmbMdLMIMv7P3/7H//xv/9///i///K//69/+42//9P/8n7/9y7/99//693/+t399+1//52/b9uP/7T/+3//6r3/9z//4+3/997//7Z/G9Rj+09/+57/+j7f/3Ibh//6nv/2vf/6X//m3f5qP9f/+pw+PnvZ5//XoaV/fHz3a5Dx6Xsbj16Pn5ZgKjz6G5fZKjmGdz0dP0+A8epzPvz3O8/7+aO9lj8O03h48bMv9g//zf/rbtgPGB3MAxgWzD4DxwYyA8cFMgPHBzIDxwRhgfDALYHwwK2B8MEy+ARgm3wAMk68P5mDyDcAw+QZgmHwDMEy+ARgDjA+GyTcAw+QbgGHyDcAw+QZgmHx9MOPA6BuRYfaNyDD8RmSYfiMyBpmADPNvRIYBOCLDBByRYQSOyDADB2RGZuCIDDNwRIYZOCLDDByRMcgEZJiBIzLMwBEZZuCIDDNwRIYZOCAzMQNHZJiBIzLMwBEZZuCIjEEmIMMMHJFhBo7IMANHZJiBIzLMwAGZmRk4IsMMHJFhBo7IMANHZAwyARlm4IgMM3BEhhk4IsMMHJFhBg7IGDNwRIYZOCLDDByRYQaOyBhkAjLMwBEZZuCIDDNwRIYZOCLDDByQWZiBIzLMwBEZZuCIDDNwRMYgE5BhBo7IMANHZJiBIzLMwBEZZuCAzNr8DLxvNzLjMJbIbPt8e937MP0ZmeZnYBmZ5mdgGZkKM/B8bNOvR9swvH+6j/nnP2HP/ydqTGXTcgM1vQn8/k8czoM3uz1229+ZjuPw8+WsV7+c8f3lrL+9HMcQx77c/rAN71fucfdehg3bzcc23r3ocf9Ffuvnre79vNWjm7e6Df281bGftzr181bnft6q9fNWl37eaqJpaR7s9lbnafn4VhNNS6W3mmhaKr3VRNNS4a3uiaal0ltNNC2V3mqiaan0VhNNS6W3av281UTTUumtJpqWlukcDJfl42C4J5qWSm810bRUequJpqXCWz0STUult5poWiq91UTTUumtJpqWSm/V+nmriaal0ltNNC1ty23V17bt42B4JJqWSm810bRUequJpqXHb3UaEk1LpbeaaFoqvdVE01LprSaalkpv1fp5q4mmpdJbvXpaOs5tb28Lg6X3Oq3b+V73pfRex7d//fa3p+N9x9jboO88el3HXw/eh+PusbPz2H0dbjPnvk532++evfV1Gjb0aVqfHX2a1udAn8/oc25u3de7jc5P34w8jQP6NK3PmEif8V2f+Tfmnj7j8g5mPZbCo4UKTSjUuEJz2wqNw6nQagWF3h5yvo59v/uSy1/8Pzx6Hqbbdzjm0fbf0kdLU0KVw5BQ6JkKLSjUuEKNNwkoNDbeJaDQ2HibgEJj430CCk2NNwooNDXeKaDQ1HingEITnULrChkKNa4QnULrCtEptK4QnULrCtEpfFIh1frQRKfQuEJzpk7hGG9c5mGzgkJC5plagldhnij3z+N0Mh/XrcB8MrvdcSfb7x69eRT3/aR4/LYF9yfFRNn8mRSPZTkpbvcXf+fBtt7eoh13wI+fwA3gnwA+DcNty9k0TPYnwBMl52cCH8/L/jTOx4frRKJ0+0yKb49+f4vzY9uO8/t7tGH5gDxRXH0V5InyZzPIl/mc+ZZl/ZMreaLsmU8dS5Q721Hn3JE8LsefjJ2WKKEmVCdVlh2Wd3X2gjpm4/nL+W//57E683ZCnPdxvn/wD4qpsuzzKO7HLVrNh0PRoFiBYqrUKaOYKnXKKKYKkjKKqbKhjGKqDKeiuKTKWjKKqTKRjCLZpQbFrNllK+2rGAc73+OwjY8pLuNxy+fLNNoHigbFChSzZpdrKWbNLtdSzJpdKlOczm04y7SuHyhmzS7XUsyaXS6luGbNLtdSzJpdKlNct9vUvWxjYUTf1vn8act1/zCir1mDTsPISUWfQr6PJ/J9mf4MuYG8PvLj9h63bRw/ICdvXY685YMXpnE6iY/z779D9+PFt3yUQvHFs4zyubrQzj0u+7J98C/LKBUobsooMm6/UfzxemoM9fPJZ3p7+49fz/S+oWba77YluQ/WfdWnynHpGbnUGI/n80Y5mU33b/XHP2EV/onlPDPybbXoeExz2c4Hv8WH47erwY8XtLT2gtbWXlCN8WA5Q8JbBbs9fkFvU9z5S7jDfaK4vaC9tRd0NPaCqpxbXfUFjVVMPb+/oP0fryzBqc623Mw92t0Vz/8nxnl6/+2B7e5tvA0GP/6N+YJ/wy74N5YL/o31gn9jq/Bv2Pj+FZ77cdG8X9LO+TsZwXm8cPwqxwOONTgGJwnD8ascRzhW4TjBsQrHGY5VOBocq3Bc4FiF4wrHKhzJM3U4kmfqcCTP1OA4D8nyjGiBYh6S5RkZx+vzzGv8CuA8XJ5QZL/VNw+W6b3W+kW9eVgSYan2u3fzsGbC8vDX6eZhy/Re6/2g2TzsgPHBHN2CqfWLX/M4wPCPGY79Mqz061nzOMHwjxkK5mjR74TNo2V6rw9/V2Ael47e69rRe906eq97R+/16Oe9TkNH73Xs6L1OHb3XVHNT4b2a9L1e+bsj87R09F7Xjt7r1tF73TO914e/hzFPRz/vdR46eq9jR+91yvRe6/0MyDzPgPHBWCYw9X7FZJ5TjW/1fvhinlPNejXB1BgMH3/9bZ73C/6NXAXSo99vmC1XgfT4vVYZhIYheq8//o1gADlu72J8ixmFf2Naz30903q/Ae+vD7PzCT5f0duH+e5Ly97+u+mN8rm5bzz25f7hP17//OKv3yq8/vdfB5i2xQqvfz+/or1P7y9nc808bLe3auPdrr3Z31k5nffnt8z9vmHn7fX/eKdLnnc6nwu2848X+g/vdG35nY7nLzvZ/f7X72m65XmnBU33pt/pet503vqhP9T0yPNOH2saHKnRyDudhtvPddhkw59pGhx78ZLvtKDp1PQ7PUc3u//hsO9pOud5pwVNreF3Oh9nwWfzepTe6eNtSsv1M9L7nx6s8Fa37faHj/tkM04/X/vlU89bMHt/8XdfWHFf/LKeoW9ZZ/vDsX3Zenqz5dnHSjl03s5vXd1Vd3+FrY+vx/bzpyRtv9v4P7k/a2XnAva43P9Mpft9LhvO8WG+J776F4GbPvuwl76LOJ8Mbbr7NpQv/Pn9pmmzwoNrfnNqOS4W8j1X21YS8tjH26OPveTZcRjeZR/GefhHz65DP2917OetTv281TnPW93X97d6DMeHt2r9vNUlz1s95veB5LDj8cP7vvGua1LZV/vg8C3NWx2n83ft3/7beat7P281z+RYeqtbnsmx+FbzTI7Ft5pnciy+1TyTY/GtWj9vNc/kWHyreaal4lvtZ1ra+pmWtn6mpb2faWnvZ1ra+5mW9n6mpb2faWnvZ1ra+5mW9n6mpb2faWnvZ1o6+pmWjn6mpaOfaenoZ1o6+pmWjn6mpaOfaenoZ1o6+pmWjm6mJRu6mZZs6GZasqGbacmGbqYlG6yft9rNtGRDN9OSDd1MSzZ0My3Z0M+0NPYzLY39TEtjP9PS2M+0NPYzLY39TEtjP9PS2M+0NPYzLY39TEtTP9PS1M+0NPUzLU39TEtTP9PS1M+0NPUzLU39TEtTP9PS1M+0NPczLc39TEtzP9PS3M+0NPczLc39TEtzP9PS3M+0NPczLc39TEvWz7Rk/UxL1s+0ZP1MS5/4/fU0b7Wfacn6mZasn2nJ+pmWrJ9paelnWlr6mZaWfqalpZ9p6RO/xJ7mrfYzLS39TEtLP9PS0s+0lOh3zUtvNdHvmhffaj/TUqLfNS++1X6mpUS/a158q/1MS4l+y7v4Vjs65cbWvac3e3T0Zrehpzc79vRmp57e7NzTm7We3uzF09Py/nLWyUojxQnxmLfCY+d1uB1/M6/j+2FsHpXjxH3cn7n99nd/IFlB8o9INpD8I5K9YSTjaNs5Xa9zCcr4/jqm4gnkNi23v23Tdve3vT+92HB72Yvdv+xfEA8g/jHEq38HPSfEEYh/DnEC4p9DnIH45xANiH8OseVs8DIQW04TLwOx5fzxMhBJLBUgklj+HOJBYqkAkcRSASKJpQJEEksFiAbEP4dIYqkAkcRSASKJpQJEEksFiCSWP4a4DCSWChBJLBUgklgqQCSxVIBoQPxziCSWChBJLBUgklgqQCSxVIBIYvlziCOJpQJEEksFiN0mlvXcmWzrNHzg0m0IKXAxuLhcuo0KBS7dTv/r+f1cW7ePXLod6Atcup3RC1y6Hbsfc5m6naQLXLodjh/fjybmXZ8L867PxeDicul33n183WXe9bkw7/pcmHd9Lsy7LpeZedfn0u+8+5hLv/PuYy79zruPuRhcXC70u24OmPuddx9z6Xfefcyl33n3MRfmXfe6a8y7PhfmXZ8L867PhXnX52JwcbnQ7/pc6Hd9LvS7Phf6XZ9Lv/Puwxyw9DvvPubCfgafC/sZfC7Mu+519+qT+l6GC/Ouz4V51+fCvOtzYd71udDvulxW+l2fC/2uz4V+1+fC/l03B1x91uLLcGE/g8+F/Qw+F+Zd/7rLvOtzYd51uWzMuz4X5l2fC/Ouz4V+1+dicHG50O/6XOh3fS7s33VzQL8naxa4sJ/B5dLv+ZcFLsy77nW331MqC1yYd30uBheXC/Ouz4V51+dCv+tzod/1udDvulz6PT2xwIX9u24O6PeMwwIX9jP4XAwuLhfmXf+6y7zrc2He9bkw7/pcmHc9Lmu/Z+8VuNDv+lzod30u9Ls+F4OLy4X9u14OWPs9ba7Ahf0MPhf2M/hcmHfd626/J7cVuDDv+lyYd30uzLs+F4OLy4V+1+dCv+tzod/1udDv+lzYv+vmgI7PV3vMhf0MPhf2M/hcmHfd627H56s95sK863Nh3vW5MO/6XJh3fS70uy4XzlcLuNDv+lzod30u7N91c0DH56s95sJ+Bp8L+xl8Lsy7/nWXedfnwrzrcuF8tYAL867PhXnX50K/63MxuLhc6Hd9LvS7Phf277o5oOPz1R5zYT+Dy4Xz1QIuzLvudbfj89Uec2He9bkYXFwuzLs+F+Zdnwv9rs+FftfnQr/rcuF8tYAL+3fdHNDx+WqPubCfwedicHG5MO/6113mXZ8L867PhXnX58K863LhfLWAC/2uz4V+1+dCv+tzMbi4XNi/6+aAjs9Xe8yF/Qw+F/Yz+FyYd93rbsfnqz3mwrzrc2He9bkw7/pcDC4uF/pdnwv9rs+FftfnQr/rc2H/rpsDOj5f7TEX9jP4XNjP4HNh3nWvux2fr/aYC/Ouz4V51+fCvOtzYd71udDvelw2zlcLuNDv+lzod30u7N/1csA2GFxcLuxn8Lmwn8HnwrzrX3eZd30uzLsuF85XC7gw7/pcmHd9LvS7PheDi8uFftfnQr/rc2H/rpsDOj5f7TEX9jO4XDhfLeDCvOtedzs+X+0xF+Zdn4vBxeXCvOtzYd71udDv+lzod30u9LsuF85XC7iwf9fNAR2fr/aYC/sZfC4GF5cL865/3WXe9bkw7/pcmHd9Lsy7LhfOVwu40O/6XOh3fS70uz4Xg4vLhf27bg7o+Hy1x1zYz+BzYT+Dz4V5173udny+2mMuzLs+F+Zdnwvzrs/F4OJyod/1udDv+lzod30u9Ls+F/bvujmg4/PVHnNhP4PPhf0MPhfmXfe62/H5ao+5MO/6XJh3fS7Muz4X5l2fC/2uy4Xz1QIu9Ls+F/pdnwv7d90c0PH5ao+5sJ/B58J+Bp8L865/3WXe9bkw77pcOF8t4MK863Nh3vW50O/6XAwuLhf6XZ8L/a7Phf27bg7o+Hy1x1zYz+By4Xy1gAvzrnvd7fh8tcdcmHd9LgYXlwvzrs+FedfnQr/rc6Hf9bnQ73pcds5XC7iwf9fLAXvH56s95sJ+Bp+LwcXlwrzrX3eZd30uzLs+F+ZdnwvzrsuF89UCLvS7Phf6XZ8L/a7PxeDicmH/rpsDOj5f7TEX9jP4XNjP4HNh3nWvux2fr/aYC/Ouz4V51+fCvOtzMbi4XOh3fS70uz4X+l2fC/2uz4X9u24O6Ph8tcdc2M/gc2E/g8+Fede97nZ8vtpjLsy7PhfmXZ8L867PhXnX50K/63LhfLWAC/2uz4V+1+fC/l03B3R8vtpjLuxn8Lmwn8HnwrzrX3eZd30uzLsuF85XC7gw7/pcmHd9LvS7PheDi8uFftfnQr/rc2H/rpsDOj5f7TEX9jO4XDhfLeDCvOtedzs+X+0xF+Zdn4vBxeXCvOtzYd71udDv+lzod30u9LsuF85XC7iwf9fNAR2fr/aYC/sZfC4GF5cL865/3WXe9bkw7/pcmHd9Lsy7LhfOVwu40O/6XOh3fS70uz4Xg4vLhf27bg7o+Hy1x1zYz+BzYT+Dz4V5173udny+2mMuzLs+F+Zdnwvzrs/F4OJyod/1udDv+lzod30u9Ls+F/bvejng6Ph8tcdc2M/gc2E/g8+Fede77h6DwcXlwrzrc2He9bkw7/pcmHd9LvS7LhfOVwu40O/6XOh3fS7s33VzQMfnqz3mwn4Gnwvzrn99YT+D7xf2M/hc6HddLpyv5l9fOj5f7bFf6Hd9Lsy7PheDi8uFfte/7jLv+lzod30u9Ls+F/pdl0vH56s95kK/63Oh3/W5dDvvbvt447LdvewbF+uVy7Tc/rZN229cPj54seH2she7f9m/IHY7HNeE2O0kXRNit2N3TYjdzug1IXY70FeE2O9pczUhdhsVakLsNlfUhNhtCKkJ0YD45xBJLBUgklgqQCSxVIBIYqkAkcTy5xD7PS+wJkQSSwWIJJYKEEksFSAaEP8cIomlAkQSSwWIJJYKEEksFSCSWP4cYr8nPtaESGKpAJHEUgEiiaUCRAPin0MksVSASGKpAJHEUgEi31R2vxnW8cmaD7l0fLLmYy58U9nnwjc33G9udHyy5mMuBheXC99U9rnwTWWfC7/M49+PmHd9Lsy7LpeOT9Z8zIVvKrvXXU7WDLgw7/pcDC4uF+Zdnwvzrs+FX+bxufDLPD4XfpnH5cLJmgEX+l03B3R8suZjLvwSpc/F4OJyYd71r7vMuz4X5l2fC/Ouz4V51+MyDh0frVkAQ8MbgKHiDcDQ8QZgDDA+GM4b8tLAG5h+x94CGPY1BGDY2BCAYfL1L74cshmBYfINwDD5BmCYfAMwBhgfDH1vAIbCNwBD4xuAofINwLCn148EHR+3WQDDLocADNscAjBMvv7Ft+MjNwtgmHwDMEy+ARgm3wAMk28Ahs7XB8PBmxEYOt8ADJ1vAIYdvn4k6PfwzRIYdjsEYNjtEIBh8g0uvky+ARgmXx9Mv4dOlsAw+QZgmHwDMHS+ARgDjA+GzjcAQ+cbgGGfrx8J+j0UsQSG3Q4+mH4PLyyBYfL1L779HjJYAsPkG4AxwPhgmHwDMEy+ARg63wAMnW8Ahs7XB9PvIXglMOzz9SNBv4fVlcCw2yEAY4DxwTD5BhdfJt8ADJNvAIbJNwDD5OuD6fiYtgIYOt8ADJ1vAIbONwBjgPHBsM/XjwQdH9ZWAMNuhwAMux0CMEy+/sW34wPbCmCYfAMwTL4BGCbfAIwBxgdD5xuAofMNwND5BmDofAMw7PP1I0HHR7cVwLDbIQDDbocADJOvf/Ht+Pi2Ahgm3wAMk28Ahsk3AMPkG4Ch83XBjJzhFoGh8w3A0PkGYNjn60aCcTDA+GDY7RCAYbdDAIbJN7j4MvkGYJh8fTCc4RaBYfINwDD5BmDofAMwBhgfDJ1vAIbONwDDPl8/EnR8hlsBDLsdfDCc4RaBYfL1L74dn+FWAMPkG4AxwPhgmHwDMEy+ARg63wAMnW8Ahs7XB8MZbhEY9vn6kaDjM9wKYNjtEIAxwPhgmHyDiy+TbwCGyTcAw+QbgGHy9cFwhlsEhs43AEPnG4Ch8w3AGGB8MOzz9SNBx2e4FcCw2yEAw26HAAyTr3/x7fgMtwIYJt8ADJNvAIbJNwBjgPHB0PkGYOh8AzB0vgEYOt8ADPt8/UjQ8RluBTDsdgjAsNshAMPk6198Oz7DrQCGyTcAw+QbgGHyDcAw+QZg6Hx9MJzhFoGh8w3A0PkGYNjn60eCjs9wK4Bht0MAht0OARgm3+Diy+QbgGHy9cFwhlsEhsk3AMPkG4Ch8w3AGGB8MHS+ARg63wAM+3z9SNDxGW4FMOx28MFwhlsEhsnXv/h2fIZbAQyTbwDGAOODYfINwDD5BmDofAMwdL4BGDpfF8zEGW4RGPb5upFg6vgMtwIYdjsEYAwwPhgm3+Diy+QbgGHyDcAw+QZgmHx9MJzhFoGh8w3A0PkGYOh8AzAGGB8M+3z9SNDxGW4FMOx2CMCw2yEAw+TrX3w7PsOtAIbJNwDD5BuAYfINwBhgfDB0vgEYOt8ADJ1vAIbONwDDPl8/EnR8hlsBDLsdAjDsdgjAMPn6F9+Oz3ArgGHyDcAw+QZgmHwDMEy+ARg6Xx8MZ7hFYOh8AzB0vgEY9vn6kaDjM9wKYNjtEIBht0MAhsk3uPgy+QZgmHx9MJzhFoFh8g3AMPkGYOh8AzAGGB8MnW8Ahs43AMM+Xz8SdHyGWwEMux18MJzhFoFh8vUvvh2f4VYAw+QbgDHA+GCYfAMwTL4BGDrfAAydbwCGztcHwxluERj2+fqRoOMz3Apg2O0QgDHA+GCYfIOLL5NvAIbJNwDD5BuAYfL1wXCGWwSGzjcAQ+cbgKHzDcAYYHww7PP1I0HHZ7gVwLDbIQDDbocADJOvf/Ht+Ay3Ahgm3wAMk28Ahsk3AGOA8cHQ+QZg6HwDMHS+ARg63wAM+3zdSDB3fIZbAQy7HQIw7HYIwDD5uhffeTDA+GCYfAMwTL4BGCbfAAyTbwCGztcHwxluERg63wAMnW8Ahn2+fiTo+Ay3Ahh2OwRg2O0QgGHyDS6+TL4BGCZfHwxnuEVgmHwDMEy+ARg63wCMAcYHQ+cbgKHzDcCwz9ePBB2f4VYAw24HHwxnuEVgmHz9i2/HZ7gVwDD5BmAMMD4YJt8ADJNvAIbONwBD5xuAofP1wXCGWwSGfb5+JOj4DLcCGHY7BGAMMD4YJt/g4svkG4Bh8g3AMPkGYJh8fTCc4RaBofMNwND5BmDofAMwBhgfDPt8/UjQ8RluBTDsdgjAsNshAMPk6198Oz7DrQCGyTcAw+QbgGHyDcAYYHwwdL4BGDrfAAydbwCGzjcAwz5fPxJ0fIZbAQy7HQIwTL7+NYYz3CLHGGB8MHS+ARgm3+AaQ+cbOIbONwDD5OuD6fgMtwIYOl//4ssZbhEYOt8AjAHGB0PnG4Bh8g3A0PkGYOh8AzDdTr7bPt7AbHcv+wam3zPcpuX2t23afgPz8cGLDbeXvdj9y75R7HZMrkqx25m6KsVuB/CqFA2KFSh2O9pXpdhtDqhKsdvQUJVitwmjKsVu40hFitbvKXxVKZJdalAku9SgSHapQdGgWIEi2aUGRbJLDYpklxoUyS41KJJdKlDs9xzFqhTJLjUokl1qUCS71KBoUKxAkexSgyLZpQZFsksNimSXGhTJLhUo9nsSZlWKZJcaFMkuNSiSXWpQNL5F5n2LzDo+vbMAht+zDMDw3eYADN/wcL/hYR2f3vkYTMendxbA8N3mAAzfbQ7A8Ks+/l2p49M7C2CYfAMwTL4BGL7bHFx8mXwDMEy+PhhO74zAMPkGYJh8AzD8qk8AxgDjg+FXfQIw/KpPAIbO148EHZ/eWQDD71n6YDo+vbMAhsnXv/hyemcEhsk3AGOA8cEw+QZgmHwDMHS+ARg63wAMna8PhtM7IzCcYeRHgo5P7yyAYbdDAMYA44Nh8g0uvky+ARgm3wAMk28AhsnXB9Px6Z0FMHS+ARg63wAMnW8AxgDjg2Gfrx8JOj69swCG3Q4BGHY7BGCYfP2Lb8endxbAMPkGYJh8AzBMvgEYA4wPhs43AEPnG4Ch8w3A0PkGYNjn60eCfk/vLIFht0MAht0OARgmX//i2+9JmCUwTL4BGCbfAAyTbwCGyTcAQ+frgln6PfuxBIbONwBD5xuAYZ+vGwmWwQDjg2G3QwCG3Q4BGCbf4OLL5BuAYfL1wfR7cmAJDJNvAIbJNwBD5xuAMcD4YOh8AzB0vgEY9vn6kaDfE+1KYNjt4IPp99y5EhgmX//i2+/pcCUwTL4BGAOMD4bJNwDD5BuAofMNwND5BmDofH0wnOEWgWGfrx8JOj7DrQCG3Q4BGAOMD4bJN7j4MvkGYJh8AzBMvgEYJl8fDGe4RWDofAMwdL4BGDrfAIwBxgfDPl8/EnR8hlsBDLsdAjDsdgjAMPn6F9+Oz3ArgGHyDcAw+QZgmHwDMAYYHwydbwCGzjcAQ+cbgKHzDcCwz9ePBB2f4VYAw26HAAy7HQIwTL7+xbfjM9wKYJh8AzBMvgEYJt8ADJNvAIbO1wfDGW4RGDrfAAydbwCGfb5+JOj4DLcCGHY7BGDY7RCAYfINLr5MvgEYJl8fDGe4RWCYfAMwTL4BGDrfAIwBxgdD5xuAofMNwLDP148EHZ/hVgDDbgcfDGe4RWCYfP2Lb8dnuBXAMPkGYAwwPhgm3wAMk28Ahs43AEPnG4Ch83XBrJzhFoFhn68bCdaOz3ArgGG3QwDGAOODYfINLr5MvgEYJt8ADJNvAIbJ1wfDGW4RGDrfAAydbwCGzjcAY4DxwbDP148EHZ/hVgDDbocADLsdAjBMvv7Ft+Mz3ApgmHwDMEy+ARgm3wCMAcYHQ+cbgKHzDcDQ+QZg6HwDMOzz9SNBx2e4FcCw2yEAw26HAAyTr3/x7fgMtwIYJt8ADJNvAIbJNwDD5BuAofP1wXCGWwSGzjcAQ+cbgGGfrx8JOj7DrQCG3Q4BGHY7BGCYfIOLL5NvAIbJ1wfDGW4RGCbfAAyTbwCGzjcAY4DxwdD5BmDofAMw7PP1I0HHZ7gVwLDbwQfDGW4RGCZf/+Lb8RluBTBMvgEYA4wPhsk3AMPkG4Ch8w3A0PkGYOh8fTCc4RaBYZ+vHwk6PsOtAIbdDgEYA4wPhsk3uPgy+QZgmHwDMEy+ARgmXx8MZ7hFYOh8AzB0vgEYOt8AjAHGB8M+Xz8SdHyGWwEMux0CMOx2CMAw+foX347PcCuAYfINwDD5BmCYfAMwBhgfDJ1vAIbONwBD5xuAofMNwLDP140EW8dnuBXAsNshAMNuhwAMk6978d0GA4wPhsk3AMPkG4Bh8g3AMPkGYOh8fTCc4RaBofMNwND5BmDY5+tHgo7PcCuAYbdDAIbdDgEYJt/g4svkG4Bh8vXBcIZbBIbJNwDD5BuAofMNwBhgfDB0vgEYOt8ADPt8/UjQ8RluBTDsdvDBcIZbBIbJ17/4dnyGWwEMk28AxgDjg2HyDcAw+QZg6HwDMHS+ARg6Xx8MZ7hFYNjn60eCjs9wK4Bht0MAxgDjg2HyDS6+TL4BGCbfAAyTbwCGydcHwxluERg63wAMnW8Ahs43AGOA8cGwz9ePBB2f4VYAw26HAAy7HQIwTL7+xbfjM9wKYJh8AzBMvgEYJt8AjAHGB0PnG4Ch8w3A0PkGYOh8AzDs8/UjQcdnuBXAsNshAMNuhwAMk69/8e34DLcCGCbfAAyTbwCGyTcAw+QbgKHz9cFwhlsEhs43AEPnG4Bhn68fCTo+w60Aht0OARh2OwRgmHyDiy+TbwCGydcHwxluERgm3wAMk28Ahs43AGOA8cHQ+QZg6HwDMOzz9SNBx2e4FcCw28EFs3OGWwSGyde9+O4dn+FWAMPkG4AxwPhgmHwDMEy+ARg63wAMnW8Ahs7XB8MZbhEY9vn6kaDjM9wKYNjtEIAxwPhgmHyDiy+TbwCGyTcAw+QbgGHy9cFwhlsEhs43AEPnG4Ch8w3AGGB8MOzz9SNBx2e4FcCw2yEAw+QbXGPY7eA7hjPcIjB0vgEYJl//GtPxGW4FxxhgfDBMvgEYJt8ADJ1vcPFl8g3A0Pn6YDjDLQJD5xuAYfINwND5BmAMMD6YbiffbR9vYLa7l32C6XbynZbb37Zp+w3MxwcvNtxe9mL3L/tGsdsxuSrFbmfqqhS7HcBrUuz33LmqFLsd7atS7DYHVKXYbWioStGgWIFit3GkKkWySw2KZJcaFMkuNSiSXSpQ7PfkwKoUyS41KJJdalAku9SgaFCsQJHsUoMi2aUGRbJLDYpklxoUyS4VKPZ79mNVimSXGhTJLjUokl1qUDQoVqBIdqlBkexSgyLZpQZFsksNimSXChQ7Pr3z8bfIOj69swCG37MMwPDd5gCM8Q0P9xseHZ/eWQDD71kGYPhucwCG7zYHYPhVH/+u1PHpnQUwTL4BGCbfAAzfbfYvvpzeGYFh8g3AMPkGYJh8AzBMvgEYftXHBXN0fHpnAQy/6hOA4Vd9AjB0vm4kOAYDjA+G37MMwPB7lgEYJt/g4svkG4Bh8vXBcHpnBIbJNwDD5BuAofMNwBhgfDB0vgEYOt8ADGcY+ZGg49M7C2DY7eCD6fj0zgIYJl//4svpnREYJt8AjAHGB8PkG4Bh8g3A0PkGYOh8AzB0vj6Yjk/vLIBhn68fCTo+vbMAht0OARgDjA+GyTe4+DL5BmCYfAMwTL4BGCZfHwynd0Zg6HwDMHS+ARg63wCMAcYHwz5fPxL0e3pnCQy7HQIw7HYIwDD5+hfffk/CLIFh8g3AMPkGYJh8AzAGGB8MnW8Ahs43AEPnG4Ch8w3AsM/XjwT9nqNYAsNuhwAMux0CMEy+/sW33zMJS2CYfAMwTL4BGCbfAAyTbwCGztcH0+8pfCUwdL4BGDrfAAz7fP1I0O+JdiUw7HYIwLDbIQDD5BtcfJl8AzBMvj6Yjs9wK4Bh8g3AMPkGYOh8AzAGGB8MnW8Ahs43AMM+Xz8SdHyGWwEMux18MJzhFoFh8vUvvh2f4VYAw+QbgDHA+GCYfAMwTL4BGDrfAAydbwCGztcDMw2c4RaBYZ+vFwnewLDPNwDDbocAjAHGB8PkG1x8mXwDMEy+ARgm3wAMk68PhjPcIjB0vgEYOt8ADJ1vAMYA44Nhn68fCTo+w60Aht0OARh2OwRgmHz9i2/HZ7gVwDD5BmCYfAMwTL4BGAOMD4bONwBD5xuAofMNwND5BmDY5+tHgo7PcCuAYbdDAIbdDgEYJl//4tvxGW4FMEy+ARgm3wAMk28Ahsk3AEPn64PhDLcIDJ1vAIbONwDDPl8/EnR8hlsBDLsdAjDsdgjAMPkGF18m3wAMk68PhjPcIjBMvgEYJt8ADJ1vAMYA44Oh8w3A0PkGYNjn60eCjs9wK4Bht4MPhjPcIjBMvv7Ft+Mz3ApgmHwDMAYYHwyTbwCGyTcAQ+cbgKHzDcDQ+fpgOMMtAsM+Xz8SdHyGWwEMux0CMAYYHwyTb3DxZfINwDD5BmCYfAMwTL4+GM5wi8DQ+QZg6HwDMHS+ARgDjA+Gfb5+JOj4DLcCGHY7BGDY7RCAYfL1L74dn+FWAMPkG4Bh8g3AMPkGYAwwPhg63wAMnW8Ahs43AEPnG4Bhn68bCcaOz3ArgGG3QwCG3Q4BGCZf9+I7DgYYHwyTbwCGyTcAw+QbgGHyDcDQ+fpgOMMtAkPnG4Ch8w3AsM/XjwQdn+FWAMNuhwAMux0CMEy+wcWXyTcAw+Trg+EMtwgMk28Ahsk3AEPnG4AxwPhg6HwDMHS+ARj2+fqRoOMz3Apg2O3gg+EMtwgMk69/8e34DLcCGCbfAIwBxgfD5BuAYfINwND5BmDofAMwdL4+GM5wi8Cwz9ePBB2f4VYAw26HAIwBxgfD5BtcfJl8AzBMvgEYJt8ADJOvD4Yz3CIwdL4BGDrfAAydbwDGAOODYZ+vHwk6PsOtAIbdDgEYdjsEYJh8/Ytvx2e4FcAw+QZgmHwDMEy+ARgDjA+GzjcAQ+cbgKHzDcDQ+QZg2OfrR4KOz3ArgGG3QwCG3Q4BGCZf/+Lb8RluBTBMvgEYJt8ADJNvAIbJNwBD5+uD4Qy3CAydbwCGzjcAwz5fPxJ0fIZbAQy7HQIw7HYIwDD5BhdfJt8ADJOvD4Yz3CIwTL4BGCbfAAydbwDGAOODofMNwND5BmDY5+tHgo7PcCuAYbeDC2biDLcIDJOve/GdOj7DrQCGyTcAY4DxwTD5BmCYfAMwdL4BGDrfAAydrw+GM9wiMOzz9SNBx2e4FcCw2yEAY4DxwTD5BhdfJt8ADJNvAIbJNwDD5OuD4Qy3CAydbwCGzjcAQ+cbgDHA+GDY5+tHgo7PcCuAYbdDAIbdDgEYJl//4tvxGW4FMEy+ARgm3wAMk28AxgDjg6HzDcDQ+QZg6HwDMHS+ARj2+fqRoOMz3Apg2O0QgGG3QwCGyde/+HZ8hlsBDJNvAIbJNwDD5BuAYfINwND5+mA4wy0CQ+cbgKHzDcCwz9ePBB2f4VYAw26HAAy7HQIwTL7BxZfJNwDD5OuD4Qy3CAyTbwCGyTcAQ+cbgDHA+GDofAMwdL4BGPb5+pGg4zPcCmDY7eCD4Qy3CAyTr3/x7fgMtwIYJt8AjAHGB8PkG4Bh8g3A0PkGYOh8AzB0vj4YznCLwLDP148EHZ/hVgDDbocAjHGN8a8x7HYIHMNuhwAMnW8Ahsk3uMbQ+fqO6fgMtwIYJt8ADJNvAIbO17/4coZbBIbONwBD5xuAofMNwDD5BmDofF0wc8dnuBXAdDv5bvt4A7PdvewTTLeT77Tc/rZN229gPj54seH2she7f9k3it2OyVUpGhQrUOx2AK9KsdtpvSrFbkf7qhS7zQFVKXYbGmpS7PesvKoUu40jVSmSXWpQJLvUoGhQrECR7FKDItmlBkWySw2KZJcaFMkuFSj2e9phVYpklxoUyS41KJJdalA0KFagSHapQZHsUoMi2aUGRbJLDYpklwoU+z2vsipFsksNimSXGhTJLjUoGhQrUCS71KBIdqlBkS9Cu9/Fmzs+6rMAhi9C+2A46jMCw49f+t+T6fiozwIYvggdgDHA+GD4InQAhp8ACu5KTL4BGCbfAAyTrw+Goz6Diy9HfUZgmHwDMEy+ARgDjA+GyTcAw08ABWD4CaAADD8BFIDhJ4B8MB0f9fk4EnR81GcBDD9+GYDhZ98DMMbF17/4MvkGYJh8AzBMvgEYJt8ADJOvD6bjoz4LYOh8AzB0vgEYOt8AjBEJ3EjQ8VGfBTDsdgjAsNshAMPkG1x8mXx9MBz1GYFh8g3AMPkGYJh8AzAGGB8MnW8Ahs43AEPnG4Bhn68fCTjqMwDDUZ8RGHY7BGCYfP2LL0d9RmAMMD4YJt8ADJNvAIbJNwBD5xuAofN1wRhHfUZg6HwDMOzzdSOB9Xt6ZwmMAcYHw26HAAyTb3DxZfINwDD5BmCYfH0w/R5BWQLD5BuAofMNwND5BmAMMD4YOt8ADPt8/UjQ7zmKJTDsdgjAsNvBB9PvAYaFi2+/ZxKWwDD5BmCYfAMwBhgfDJNvAIbONwBD5xuAofMNwND5+mD6Pf6uEAn6PdGuBIbdDgEYdjsEYIyLr3/xZfINwDD5BmCYfAMwTL4BGCZfH0zHZ7gVwND5BmDofAMwdL4BGCMSuJGg4zPcCmDY7RCAYbdDAIbJN7j4Mvn6YDjDLQLD5BuAYfINwDD5BmAMMD4YOt8ADJ1vAIbONwDDPl8/EnR8httjMJzhFoFht0MAhsnXv/h2fIZbAYwBxgfD5BuAYfINwDD5BmDofAMwdL4+GM5wi8DQ+QZg2OfrR4KOz3ArgDHA+GDY7RCAYfINLr5MvgEYJt8ADJOvD4Yz3CIwTL4BGDrfAAydbwDGAOODofMNwLDP148EHZ/hVgDDbocADLsdfDAdn+H2+OLb8RluBTBMvgEYJt8AjAHGB8PkG4Ch8w3A0PkGYOh8AzB0vi6YpeMz3B5GgqXjM9wKYNjtEIBht0MAxrj4+hdfJt8ADJNvAIbJNwDD5BuAYfL1wXCGWwSGzjcAQ+cbgKHzDcAYkcCNBB2f4VYAw26HAAy7HQIwTL7BxZfJ1wfDGW4RGCbfAAyTbwCGyTcAY4DxwdD5BmDofAMwdL4BGPb5+pGg4zPcHoPhDLcIDLsdAjBMvv7Ft+Mz3ApgDDA+GCbfAAyTbwCGyTcAQ+cbgKHz9cFwhlsEhs43AMM+Xz8SdHyGWwGMAcYHw26HAAyTb3DxZfINwDD5BmCYfH0wnOEWgWHyDcDQ+QZg6HwDMAYYHwydbwCGfb5+JOj4DLcCGHY7BGDY7eCD6fgMt8cX347PcCuAYfINwDD5BmAMMD4YJt8ADJ1vAIbONwBD5xuAofP1wXR8htvjSNDxGW4FMOx2CMCw2yEAY1x8/Ysvk28Ahsk3AMPkG4Bh8g3AMPn6YDjDLQJD5xuAofMNwND5BmCMSOBGgo7PcCuAYbdDAIbdDgEYJt/g4svk64PhDLcIDJNvAIbJNwDD5BuAMcD4YOh8AzB0vgEYOt8ADPt8/UjQ8RluD8GsnOEWgWG3QwCGyde9+K4dn+FWAGOA8cEw+QZgmHwDMEy+ARg63wAMna8PhjPcIjB0vgEY9vn6kaDjM9wKYAwwPhh2OwRgmHyDiy+TbwCGyTcAw+Trg+EMtwgMk28Ahs43AEPnG4AxwPhg6HwDMOzz9SNBx2e4FcCw2yEAw24HH0zHZ7g9vvh2fIZbAQyTbwCGyTcAY4DxwTD5BmDofAMwdL4BGDrfAAydrw+m4zPcHkeCjs9wK4Bht0MAht0OARjj4utffJl8AzBMvgEYJt8ADJNvAIbJ1wfDGW4RGDrfAAydbwCGzjcAY0QCNxJ0fIZbAQy7HQIw7HYIwDD5BhdfJl8fDGe4RWCYfAMwTL4BGCbfAIwBxgdD5xuAofMNwND5BmDY5+tHgo7PcHsMhjPcIjDsdgjAMPn6F9+Oz3ArgDHA+GCYfAMwTL4BGCbfAAydbwCGztcHwxluERg63wAM+3z9SNDxGW4FMAYYHwy7HQIwTL7BxZfJNwDD5BuAYfL1wXCGWwSGyTcAQ+cbgKHzDcAYYHwwdL4BGPb5+pGg4zPcCmDY7RCAYbeDC2br+Ay3hxffreMz3ApgmHwDMEy+ARgDjA+GyTcAQ+cbgKHzDcDQ+QZg6Hx9MB2f4fY4EnR8hlsBDLsdAjDsdgjAGBdf/+LL5BuAYfINwDD5BmCYfAMwTL4+GM5wi8DQ+QZg6HwDMHS+ARgjEriRoOMz3Apg2O0QgGG3QwCGyTe4+DL5+mA4wy0Cw+QbgGHyDcAw+QZgDDA+GDrfAAydbwCGzjcAwz5fPxJ0fIbbYzCc4RaBYfL1rzGc4RY5ht0OARgDjA+GyTe4xtD5Bo6h8w3AMPkGYJh8fTCc4RZcfDnDLQJD5xuAofMNwBhgfDBMvgEYOt8ADJ1vAKbbyXfbxxuY7e5ln2DannyP/fYyZis9+q99c7e/vd1jnL1X8raidoP+tlSy/PboH2QaP8RNSabt2VdJpu3hV0mm7elXScYgE5Bpe/5Vkml7AFaSaXsCVpJpewRWkmEGDsg0fpybkgwzcESGGTgiwwwckTHIBGSYgSMyzMARGWbgiAwzcESGGTgg0/jBbkoyzMARGWbgiAwzcETGIBOQYQaOyDADR2SYgSMyzMARGWbggEzjR7wpyTADR2SYgSMyzMARGYNMQIYZOCLDDByRYQaOyDADR2SYgX0ye+OHvSnJMANHZJiBIzLMwBEZg0xAhhk4IsMMHJFhBo7IMANHZJiBAzKNH/umJMMMHJFhBo7IMANHZAwyARlm4IgMM3BEhhk4IsMMHJFhBg7INH4AnJIMM3BEhhk4IsMMHJExyARkmIEjMszAERlm4IgMM3BEhhk4INP4UXBKMszAERlm4IgMM3BExiATkGEGjsgwA0dkmIEjMszAERlm4IBM44fCKckwA0dkmIEjMszAERmDTECGGTgiwwwckWEGjsgwA0dkmIEDMo0fD6ckwwwckWEGjsgwA0dkDDIBGWbgiAwzcESGGTgiwwwckWEGDshwTlxIhhk4IsMMHJFhBo7IGGQCMszAERlm4IgMM3BEhhk4IsMMHJDhnLiQDDNwRIYZOCLDDByRMcgEZJiBIzLMwBEZZuCIDDNwRIYZOCDDOXEhGWbgiAwzcESGGTgiY5AJyDADR2SYgSMyzMARGWbgiAwzcECGc+JCMszAERlm4IgMM3BExiATkGEGjsgwA0dkmIEjMszAERlmYJ/MwTlxIRlm4IgMM3BEhhk4ImOQCcgwA0dkmIEjMszAERlm4IgMM3BAhnPiQjLMwBEZZuCIDDNwRMYgE5BhBo7IMANHZJiBIzLMwBEZZuCADOfEhWSYgSMyzMARGWbgiIxBJiDDDByRYQaOyDADR2SYgSMyzMABGc6JC8kwA0dkmIEjMszAERmDTECGGTgiwwwckWEGjsgwA0dkmIEDMpwTF5JhBo7IMANHZJiBIzIGmYAMM3BEhhk4IsMMHJFhBo7IMAMHZDgnLiTDDByRYQaOyDADR2QMMgEZZuCIDDNwRIYZOCLDDByRYQYOyHBOXEiGGTgiwwwckWEGjsgYZAIyzMARGWbgiAwzcESGGTgiwwwckOGcuJAMM3BEhhk4IsMMHJExyARkmIEjMszAERlm4IgMM3BEhhk4IMM5cSEZZuCIDDNwRIYZOCJjkAnIMANHZJiBIzLMwBEZZuCIDDNwQIZz4kIyzMARGWbgiAwzcETGIBOQYQaOyDADR2SYgSMyzMARGWZgl8w8cE5cSIYZOCLDDByRYQaOyBhkAjLMwBEZZuCIDDNwRIYZOCLDDByQ4Zy4kAwzcESGGTgiwwwckTHIBGSYgSMyzMARGWbgiAwzcESGGTggwzlxIRlm4IgMM3BEhhk4ImOQCcgwA0dkmIEjMszAERlm4IgMM3BAhnPiQjKJZuD9ncyxbAUyi623Ry92lDju23x7j/tmg8Mx0cT8TI77cdw4HtNaePQ8zbd3OU/bcT56Gn9BTzSMtwP97cXeiPxA9o/QDeifgX7YckLfhsKjzcYbEbP717259NbtxDfO9w/+qVCivPGiCu3HeMN3eAolyj1JFUqUv5IqlCgHJlUoUR7NqVCmsyOTKkQ+b10hkn/rClETtK6Q9arQardXsqzbVHj0NE7D7W//+Ndvjz4WT09bzs5yGfd3fCf1bnuCr1GfbL797WnZS9SP4aR+jNNv1D2NzoZzN5scjbptChrSqPQ56rYreKHPUbdtwQtp1G1f8DoaZTppN61G3XYGL6RRt63BC2nUbW/wOrN3phOZ036O6Bna/xzRM7T/OaJnaF8jeob2NaJnaP5+lOk086yfo0znqqfViJ6hfY3oGdrXyNCo+ZmBnqH9zxE9Q/sa0TO0rxE9Q/v3I3qG5j9HGz1D85+jjZ6h/c8RPUP7nyN6hvY/R4ZGzWtEz9C+RvQM7d+P6Bna/xzRM7T/OaJnaP5ztNMzNP852ukZ2v8c0TO0rxE9Q/saGRo1fz+iZ2j/c0TP0L5G9AztX+voGdr/HNEzNP85OugZmv8cHfQM7X+O6Bna/xzRM7SvkaFR8xrRM7SvET1D+xrRM7Q/19EztP85omdoXaNxoGdoXyN6htbvR+NAz9D+54ieof3PkaFR858jeob2NaJnaF8jeob2NaJnaH9moGdo/nM00jM0/zka6Rna/xzRM7SvET1D+9c6Q6PmP0f0DO1rRM/Qvkb0DO1rRM/Qvkb0DM1rNNEztK8RPUP7GtEzNJ9hJ3qG9j9HhkbNa0TP0P61jp6h/c8RPUP7GtEztK8RPUPz96OZnqH5z9FMz9D+54ieof3PET1D+xoZGjV/raNnaP9zRM/Q/ueInqH9zxE9Q/ufI3qG5j9HRs/Qvkb0DO1rRM/Qvkb0DO1rZGjU+lxn9Aztf47oGdrXiJ6h/WsdPUP7nyN6huY1WugZ2teInqF9jegZ2teInqF9jQyNWp+9F3qG9j9H9Azta0TP0L5G9Azta0TP0PzMsNIzNP85WukZ2teInqH9ax09Q/ufI0Oj5j9H9Aztf47oGdrXiJ6h/WsdPUP7nyN6huY/Rxs9Q/Ofo42eoX2N6Bnav9bRM7T/OTI0av5zRM/Q/ueInqF9jegZ2r/W0TO0/zmiZ2heo52eoX2N6Bna14ieoX2N6Bna18jQqHmN6Bmaz0c7PUP7nyN6hvY/R/QM7X+O6Bma1+igZ2hfI3qG9jWiZ2hfI3qG9jUyNGpeI3qG5vPRQc/Q/ueInqF9jegZ2r/W0TO0/jmaBnqG9jWiZ2j9WjcN9Aztf47oGdr/HBkaNf85omdoXyN6hvY1omdoXyN6hvY1omdofq4b6Rma/xyN9Azta0TP0P61jp6h/c+RoVHznyN6hvY/R/QM7X+O6Bna/xzRM7SvET1D89e6iZ6h+c/RRM/Qvkb0DO1rRM/Q/v3I0Kj5zxE9Q/sa0TO0f62jZ2j/c0TP0L5G9AzNazTTM7SvET1D+xrRM7SvET1D87P3bGjU/OeInqH9zxE9Q/ufI3qG9jWiZ2hfI3qG5u9HRs/Q/OfI6Bna/xzRM7T/OaJnaP9zZGjU/OeInqH9zxE9Q/ufI3qG9j9H9Aztf47oGZrXaKFnaP5at9AztP85omdoXyN6hvY1MjRqXiN6hvY1omdof66jZ2j/c0TP0L5G9AzNa7TSMzR/P1rpGdr/HNEztK8RPUP7GhkaNa8RPUP7GtEztD/X0TO0/zmiZ2j/c0TP0PznaKNnaP5ztNEztP85omdo/3NEz9D+58jQqHmN6Bna14ieof37ET1D+58jeob2P0f0DM1/jnZ6hvY1omdo/lq30zO0/zmiZ2j/c2Ro1PzniJ6h/c8RPUP7nyN6hvY1omdoXyN6hubvRwc9Q/Ofo4OeoX2N6Bnav9bRM7T/OTI0av5zRM/Q/ueInqH9zxE9Q/ufI3qG9jWiZ2hdo3mgZ2hfI3qG9jWiZ2h9rpsHeob2P0eGRs1rRM/Qvkb0DO3fj+gZ2v8c0TO0rxE9Q/MajfQM7WtEz9D8zDDSM7T/OaJnaF8jQ6Pmr3X0DO1/jugZ2teInqF9jegZ2teInqF5jSZ6hubnuomeof3PET1D+58jeob2P0eGRs1/jugZ2v8c0TO0/zmiZ2j/c0TP0P7niJ6h+c/RTM/Qvkb0DO1rRM/Qvkb0DO1rZGjU+lw30zO0/zmiZ2j/c0TP0P7niJ6h/c8RPUPznyOjZ2j+c2T0DO1/jugZ2v8c0TO0/zkyNGpeI3qG9q919Aztf47oGdrXiJ6h/WsdPUPzn6OFnqH5z9FCz9D+54ieoX2N6Bna18jQqPn7ET1D+58jeob2NaJnaF8jeob270f0DM1/jlZ6huY/Rys9Q/ufI3qG9j9H9Aztf44MjZr/HNEztP85omdo/3NEz/AMjebh1GheHOo0B8+mfjjU6QLqUz+G9fa6j2Gzj9Q30r2COnldQZ0ErqBOplZQN6gLqJN7FdRJsgrqZFMFdbKpgjrZVEB9J5sqqJNNFdTJpgrqZFMFdYO6gDrZVEGdbKqgTjZVUCebKqiTTQXUD7KpgjrZVEGdbKqgTjZVUDeoC6iTTZ9AfRxuj377T2fH3UE2VVAnmyqok00V1Mmmz7ibHstJfVo/ULeBbKqgTja9fnK0gWyqoE42VVA3qAuok00V1MmmCupkUwV1sqmCOtlUQH0kmyqok00V1MmmCupkUwV1g7qAOtlUQZ1sqqBONlVQJ5sqqJNNBdQnsqmCOtlUQZ1sqqBONlVQN6gLqJNNFdTJptfvc7SJbKqgTjZVUCebCqjPZFPBnt6ZbKqgTjYVTI4z2VRB3aAuoE42VVAnmyqok00V1MmmCupkUwF1I5sqqJNNFdTJpgrqZFMFdYO6gDrZVEGdbKqgTjZVUCebKqiTTQXUF7KpgjrZVEGdbKqgTjZVUDeoC6iTTRXUyaaCHXcL2VRBnWyqoE42FVBfyaaC3aUr2VRBnWwqmBxXsqmCukFdQJ1sqqBONlVQJ5sqqJNNFdTJpgLqG9lUQZ1sqqBONlVQJ5sqqBvUBdTJpgrqZFMFdbKpgjrZVEGdbCqgvpNNFdTJpgrqZFMFdbKpgrpBXUCdbCrY+7WTTRXUyaYK6mRTBXWyqWCf40E2VVAnmwomx4NsqqBONlVQN6gLqJNNFdTJpgrqZFMFdbKpgjrZ9Hrqy0A2VVAnmyqok00V1MmmCuoGdQF1sqmCOtlUQZ1sqqBONlVQJ5sKqI9kUwV1sqmCOtlUQZ1sev0upGU0qAuok00V1MmmCupk0+t33C0j2VRBnWwqmBwnsqmCOtlUQZ1sqqBONlVQN6gLqJNNFdTJpgrqZFMFdbKpgjrZVEB9JpsqqJNNFdTJpgrqZFMFdYO6gDrZVEGdbKqgTjZVUCebKqiTTQXUjWwq2A9jZFMFdbKpgjrZVEHdoH793i8jmyqok00VkyPZVEGdbKqgTjYVUF/IpgrqZFMFdbKpgjrZVEHdoC6gTjZVUCebKqiTTRXUyaYK6mRTAfWVbKqgTjZVUCebKqiTTRXUDeoC6mRTBXWyqWBnxko2VVAnmyqok00F1DeyqWAX0kY2VVAnmwomx41sqqBuUBdQJ5sqqJNNFdTJpgrqZFMFdbKpgPpONlVQJ5sqqJNNFdTJpgrqBnUBdbKpgjrZVEGdbKqgTjZVUCebCqgfZFMFdbKpYI/AQTZVUCebKqgb1AXUyaaC/TAH2VRBnWyqmBzJpgrqZNPrqa8D2VRBnWyqoE42VVAnmyqoG9QF1MmmCupkUwV1sqmCOtlUQZ1sKqA+kk0V1MmmCupkUwV1sqmCukFdQJ1sev1q9TqSTRXUyaYK6mRTBXWy6fU7M9aJbKqgTjYVTI4T2VRBnWyqoG5QF1Anmyqok00V1MmmCupkUwV1sqmA+kw2VVAnmyqok00V1MmmCuoGdQF1sqmCOtlUQZ1sqqBONhWsm85kUwF1I5sqqJNNFdTJpoI9AkY2VVA3qF8/ORrZVEGdbKqgTjZVUCebKqiTTQXUF7KpgjrZVEGdbKqgTjZVUDeoC6iTTRXUyaYK6mRTBXWyqYI62VRAfSWbClbwVrKpgjrZVEGdbKqgblC/frV6JZsqqJNNFZMj2VRBnWyqoE42FVDfyKYK6mRTBXWyqYI62VRB3aAuoE42VVAnmyqok00V1MmmCupkUwH1nWyqoE42Fawl7WRTBXWyqYK6QV1AnWwqWDfdyaYK6mRTxeRINlVQJ5sKqB9kUwV1sqmCOtlUQZ1sqqBuUBdQJ5sqqJNNFdTJpgrqZFMFdbLp9dS3gWyqoE42vX5VYxvIpgrqZFMFdYO6gDrZ9PoVvG0gmyqok00VkyPZVEGdbCqgPpJNFdTJpgrqZFMFdbKpgrpBXUCdbKqgTjZVUCebKqiTTRXUyaYC6hPZVNCvT2RTBXWyqYI62VRB3aB+/VrSRDZVUCebKiZHsqmCOtlUQZ1sKqA+k00V1MmmCupkUwV1sqmCukFdQJ1sqqBONlVQJ5sqqJNNBU3vTDYVUDeyqYI62VRBnWwqWNUwsqmCukH9+snRyKYK6mRTBXWyqYI62VRBnWwqoL6QTRXUyaYK6mRTBXWyqYK6QV1AnWwq6BwXsqmCOtlUQZ1sqqBONhX06yvZVEGdbCqYHFeyqYI62VRB3aAuoE42VVAnmyqok00V1MmmCupkUwH1jWyqoE42FbRfG9lUQZ1sqqBuUBdQJ5sKmt6NbKqgTjZVTI5kUwV1sqmA+k42VVAnmyqok00V1MmmCuoGdQF1sqmCOtlU0MPsZFMFdbKpgjrZVED9IJsKOseDbKqgTjYVTI4H2VRB3aAuoE42VVAnmyqok00V1MmmCupk0+up7wPZ9PpGYB/IpgrqZFMFdbKpgrpB/fL2ax/IpgrqZFPF5Eg2VVAnmyqok00F1EeyqYI62VRBnWyqoE42FWTT0aAuoE42VVAnmyqok00FPcxINlVQJ5sKJseJbKqgTjZVUCebKqiTTRXUDeoC6mRTQUqayKYK6mRTBXWyqYI62VTQCMxkUwV1sqlgcpzJpgrqZFMFdYO6gDrZVEGdbCqY12eyqYI62VRBnWwqoG5kU0E2NbKpgjrZVDA5GtlUQd2gLqBONlVQJ5sqJkeyqYI62VRBnWwqoL6QTQUpaSGbKqiTTQWT40I2VVA3qAuok00VMwzZVEGdbKqgTjZVUCebCub1lWyqoE42FUyOK9lUQZ1sKribrgZ1AXWyqYI62VRBnWyqmBzJpgrqZFPB5LiRTQXX9Y1sqqBONlVQJ5sqqBvUr59hNrKpgjrZVHGFIZsqqJNNFdTJpgLqO9lUcDfdyaYK6mTTT1Ff7PYe3/5zLVBfl+H2utdlHu8e7dF7k/GGb5rf+Y27+x638fY63iah+wf/lJPQm0pOQ85MchLTU8lJ/n8pOY/j9h7nYVw+ykmxkEpOGotXknMe5nc57Sho//4ypmUaHj94fLtQ31gfw/zRKJQsGOUH62NZTqNs++MH27r9eqwd8/3b++GpgwoJT9X2FAUZnqrtKeo/PPXjwcNwZt3hXplveIoOEk/V9pThKTz114PH8Vz+GufjQ5g7qFgxyqeMQnmLUT5lFGphjPIpo1A4Y5QfD57spDfthZcxzvtt8B1t+LiMcdBO46rarjoG+mlc9XVXLfN8+mNZ/yDQHwNlNgaUGpDmGwNKDUhNjgG/YcDtXPtbjv2PDGgYEAMqDUhXn9iA754q3ijrbWg4Bmp9PFXbU6wA4KkfD662oeEYWCzAU7U9xVJBXk+t0/mi12Up3PsK7f9I+49RPmUUWnqM8u91e8+R4h1P1fYUXTqequ0pw1N46oenqjXeI403nqrtKRrvl/LUOA63B4/TUmqSJF8LPUYabzxV21M03njq3+s23iONN56q7KmJcjyxp76yg+Dx70YdE+U4Rqk8JE2U43iqtqcox/FUbU8ZnsJTlQdvynE8VdtTlON46seDH/94xzHReGOUTxmFGhujfMoodNMY5ceDa/5wy0w7javqu4oqG1d93VX1NlvO9N4YUGpASnIMKDWgYUAM+HUDVttHPFO/Y0CpAenq8xqw5reSZ7p6jPIpo9DVY5Taczq1Pp6q7Cmj1MdTtT1FpY+nKic0o6XHU7U9RfH+OU9tw+mpzQqe2tbbC9m299ex/iJuEL+YONXq1cTpEq8mTin35dngWH4j/pMjndWnOK7j++u20eFIT1OF40I3UYdjv3l8nE6Oc/HR79CPO4rz4D12Of/wfvd3bXHRnSlk3se7GLL9kqffaPsS8vSbEpuQZz9u38j768dWP8pjyNOyPP3mz5eQp9+w+hLy9JtsX0KefgPzS8jTbw5/BXnWfuP9S8hDa9C0PLQGteVZz2/VrzYV5Nm3mzr7frfMvky/1KE0UKpzrMevxx778ps6Hx9rb8tPvx5s0/bbLgHvBQ/nK7Z70L+2FKyG7l3qTs3Rp+70J33qTjHTp+40Pn3qTpXUpe4bHVWfulN+9ak7rVqfutPX9am7oXuXutPX9ak7fV2futPX9ak7fV2futPXdan7Tl/Xp+70dX3qTl/Xp+70dX3qbujepe70dX3qTl/Xp+70dX3qTl/Xp+70dV3qftDX9ak7fV2futPX9ak7fV2fuhu6d6k7fV2futPX9ak7fV2futPXvYzu63B7f7ZOw0cpqeBySGnDQKuWRkqKsjRS0n29jpTLckq5OVJSZ6WR0pAyi5SUTmmkpEdKIyXVUJoJlrYnjZS0PVmkHGl70khJ25Nl7Blpe9JISduTRkpDyixS0vakkZK2J42UtD1ppKTtSSMlbU8WKSfanjRS0vZkKe4m2p40UtL2pJHSkDKLlLQ9acYe2p40UtL2pJGStieNlLQ9WaScaXvSSEnbk0ZK2p40UtL2pJHSkDKLlLQ9WYq7mbYnjZS0PWmkpO1JIyVtT5axx2h70khJ25NGStqeNFLS9qSR0pAyi5S0PWmkpO1JIyVtTxopaXvSSEnbk6W4W2h70khJ25NGStqeNFLS9mQZexZDyixS0vakkZK2J42UtD1ppKTtSSMlbU8WKVfanjRS0vakkZK2J42UtD1ZirvVkDKLlLQ9aaSk7UkjJW1PmrGHtieNlLQ9WaTcaHvSSEnbk0ZK2p40UtL2pJHSkDKLlLQ9aaSk7UkjJW1PluJuo+1JIyVtTxYpd9qeNFLS9mQZe3banjRS0vakkdKQMouUtD1ppKTtSSMlbU8aKWl70khJ25NFyoO2J42UtD1ZiruDtieNlLQ9aaQ0pMwiJW1PmrGHtieNlLQ9aaSk7UkjJW1PEinHgbYnjZS0PWmkpO1JIyVtTxopDSmzSEnbk6S4GwfanjRS0vakkZK2J42UtD1Zxp6RtieNlLQ9aaSk7UkjJW1PGikNKbNISduTRkranjRS0vakkZK2J42UtD1ZiruJtieNlLQ9aaSk7UkjJW1PlrFnMqTMIiVtTxopaXvSSEnbk0ZK2p40UtL2ZJFypu1JIyVtTxopaXvSSEnbk6W4mw0ps0hJ25NGStqeNFLS9qQZe2h70khJ25NFSqPtSSMlbU8aKWl70khJ25NGSkPKLFLS9qSRkrYnjZS0PVmKO6PtSSMlbU8WKRfanjRS0vZkGXsW2p40UtL2pJHSkDKLlLQ9aaSk7UkjJW1PGilpe9JISduTRcqVtieNlLQ9WYq7lbYnjZS0PWmkNKTMIiVtT5qxh7YnjZS0PWmkpO1JIyVtTxYpN9qeNFLS9qSRkrYnjZS0PWmkNKTMIiVtT5bibqPtSSMlbU8aKWl70khJ25Nl7Nlpe9JISduTRkranjRS0vakkdKQMouUtD1ppKTtSSMlbU8aKWl70khJ25OluDtoe9JISduTRkranjRS0vZkGXsOQ8osUtL2pJGStieNlLQ9aaSk7UkjJW1PEimngbYnjZS0PWmkpO1JIyVtT5LibhoMKbNISduTRkranjRS0vakGXtoe9JISduTRcqRtieNlLQ9aaSk7UkjJW1PGikNKbNISduTRkranjRS0vZkKe5G2p40UtL2ZJFyou1JIyVtT5axZ6LtSSMlbU8aKQ0ps0hJ25NGStqeNFLS9qSRkrYnjZS0PVmknGl70khJ25OluJtpe9JISduTRkpDyixS0vakGXtoe9JISduTRkranjRS0vZkkdJoe9JISduTRkranjRS0vakkdKQMouUtD1Zijuj7UkjJW1PGilpe9JISduTZexZaHvSSEnbk0ZK2p40UtL2pJHSkDKLlLQ9aaSk7UkjJW1PGilpe9JISduTpbhbaXvSSEnbk0ZK2p40UtL2ZBl7VkPKLFLS9qSRkrYnjZS0PWmkpO1JIyVtTxYpN9qeNFLS9qSRkrYnjZS0PVmKu82QMouUtD1ppKTtSSMlbU+asYe2J42UtD1ZpNxpe9JISduTRkranjRS0vakkdKQMouUtD1ppKTtSSMlbU+W4m6n7UkjJW1PFikP2p40UtL2ZBl7DtqeNFLS9qSR0pAyi5S0PWmkpO1JIyVtTxopaXvSSEnbk0TKeaDtSSMlbU+S4m4eaHvSSEnbk0ZKQ8osUtL2pBl7aHvSSEnbk0ZK2p40UtL2ZJFypO1JIyVtTxopaXvSSEnbk0ZKQ8osUtL2ZCnuRtqeNFLS9qSRkrYnjZS0PVnGnom2J42UtD1ppKTtSSMlbU8aKQ0ps0hJ25NGStqeNFLS9qSRkrYnjZS0PVmKu5m2J42UtD1ppKTtSSMlbU+WsWc2pMwiJW1PGilpe9JISduTRkranjRS0vZkkdJoe9JISduTRkranjRS0vZkKe7MkDKLlLQ9aaSk7UkjJW1PmrGHtieNlLQ9WaRcaHvSSEnbk0ZK2p40UtL2pJHSkDKLlLQ9aaSk7UkjJW1PluJuoe1JIyVtTxYpV9qeNFLS9mQZe1banjRS0vakkdKQMouUtD1ppKTtSSMlbU8aKWl70khJ25NFyo22J42UtD1ZiruNtieNlLQ9aaQ0pMwiJW1PmrGHtieNlLQ9aaSk7UkjJW1PFil32p40UtL2pJGStieNlLQ9aaQ0pMwiJW1PluJup+1JIyVtTxopaXvSSEnbk2XsOWh70khJ25NGStqeNFLS9qSR0pAyi5S0PWmkpO1JIyVtTxopaXvSSEnbk6S4s4G2J42UtD1ppKTtSXKvtIG2J82n0pAyi5S0PWmkpO1Jc6+k7UnzqaTtSSMlbU8WKUfanjRS0vZkGXtG2p40UtL2pJHSkDKLlLQ9aaSk7UkjJW1PGilpe9JISdvzMlJu+3iTcrsDfZNyou1RSjnafPvDo61jQcx1GW481mUe78V0VJmm24d4nuY75XeX3Xazydt/bvcP/mkTmiRs8gmb0FJhk0/YhAYMm3zCJoZNsMkbsOPGbh7G5aNNaO6wySdsQiuITf7yxvxuEzsKnnp/GdNyv8DuPXg8ztZkPLb98YPfepVbLD+cVE7tiVdfxav0unj1mV6dhuGMCcO94t/wKsU1Xn0Rr84083j1y161E/SbnoUZYN/Pd3gM84fANNP5Y8CnGrDeEDqz8IBXX8WrrH7g1VfxquFVvPpEr9YMTKwD4dVX8SqLUXj1qV4dTxzTOB8fwz0rTBhQakCWjTCg1ICsBWHApxpwen/wtBdexjjv24lj+Lh7yVgNwq2v41aWjnBrO25d5vn0XekvP87txjoTxk5pbBalMHZKYxvGxtjtGHs7l2aX44+WZo3lLoyd0tisjWHsrxp7naZTxGX5w/aCtTEMKDUga2MY8KkGrJivWEbDqy/i1YVFNLz6Kl5lCQ2vPter1RL7wqoYXn0Vr7LQhVffHjGOw+3B41Sw39d+WqXwterFMCAGfKYB6339b2GNCa++ildZNsKrr+JVVpjw6jO9WvGrqguLUXj1VbzKYhRefapXC18qXFlhwoBSA7JshAGlBmQtCAM+1YA1v6i6shqEW1/HrYZbcWszbq232WllnQljpzQ2i1IYO6WxWcHC2A0Zu9r+wJXlLoyd0tisjWHsLxtbc+zAxjIaXn0Vr7Lihlef6dWK+2M2Fufw6qt4laU5vPpVr9b8FZbNMCAGVBqQVTEM+FQD1lsP2Fjowquv4lXWrvDqq3iV5Si8+lyvVlth2lhhwqsv4tWdFSapV/fTI+M+rb959ac+rKq0rQ8rCW3rQ3vetj6GPq3oMx6OPnSvbetD39i2PnRsbetDr9T2fECX0rQ+B/1B2/rQH7StD/1B2/rQH7Stj6FP0/rQH7StD/1B2/rQH7StD/1B2/rQH7Tcvy0D/UHb+tAftK0P/UFtfbbltmFqv9+15eqzrreXvG7v6szj8Esd2oOW1THUaVgdmoOW1aE3aFkdWoOW1aEzaFkdGoOG1RnpC1pWh7agZXXoClpWh66gZXUMdRpWh66gZXXoClpWh66gZXXoClpWh66gYXUmuoKW1aEraFkduoKW1aEraFkdQ52G1aEraFkduoKW1aEraFkduoKW1aEraFidma6gZXXoClpWh66gZXXoClpWx1CnYXXoClpWh66gZXXoClpWh66gZXXoChpWx+gKWlaHrqBldegKWlaHrqBldQx1GlaHrqBldegKWlaHrqBldegKWlaHrqBhdRa6gpbVoStoWR26gpbVoStoWR1DnYbVoStoWR26gpbVoStoWR26gpbVoStoWJ2VrqBldegKaqtzDLcXfSxDQZ1xXZbbO1zX/Xz0tHkP3k/Q435sjx88b+fLmLdlvn/wT+GpIToVnoajU+EN4fsUnl6mU+GpfDoVnjapU+EpqjoVng6sT+E36rVOhae5Syr8Md5ozMc2Pn7wvu3HrQveR8cl1Hy4pOwSOkFc8k/7Ot3e377aWngZf534d3sdf/067EdTGabCVLVNRZeJqcr3M4pPXFJ2CS0pLql+g6KBxVTVTUW7i6mK97OdKhiXlF1Cb4xL/mm3dby5xI7ho0vojXFJ+VpCb4xLyi4xXIJLKkeinSIYU1U3Fb0xpirfz+iNcUnZJRTBuKT6DYoiGFPVNtVBb4ypivezg94Yl5RdQm+MS4qrCwe9MS4pX0sMl+CSoksognFJ9UhEEYypqpuK3hhTle9n9Ma4pOwSimBcUvkGtQ4UwZiquqnojTFV6X62DvTGuKTsEnpjXFJaXVgHwyW4pHgtoTfGJWWXUATjkuqRiCIYU1U3Fb0xpirfz+iNcUnRJSNFMC6pfYMaKYIxVXVT0RtjqvL9jN4Yl5RdYrgEl5RWF0Z6Y1xSvpbQG+OSsksognFJ9UhEEYypqpuK3hhTFe9nE70xLim7hCIYl9S+QU0UwZiquqnojTFV+X5muASXFF1Cb4xLiqsLE70xLilfS+iNcUnZJRTBuKR6JKIIxlS1TTXTG2Oq4v1spjfGJWWXUATjkuo3KIpgTFXdVIapMFXxfkZvjEvKLqE3xiXF1YWZ3hiXlK8l9Ma4pOwSimBcUjsSGUUwpqpuKnpjTFW8nxm9MS4pu4QiGJdUv0EZpsJUtU1Fb4ypyvczemNcUnYJvTEuKa4uGL0xLilfS+iNcUnRJQtFMC6pHYkWimBMVd1U9MaYqnw/ozfGJWWXGC7BJbVvUBTBmKq6qeiNMVX5fkZvjEvKLqE3xiXF1YWF3hiXFF2y0hvndIkN+/DrwfaD16MHH9NwexnHVHwZwzLfPPX233Z8NBW9Maaqbip6Y0xV3VTUzJiquqkMU2Gq2qailcZU1U1FK42pqpuKEjunqZZpPV/yPO0fhaeX7lR4quY+hd9ojzsVnoa3U+FpYTsVnqa0U+EN4fsUnsaxU+FpBTsVnuauU+Fp7pIKP2+3dYDF5qXwl7d52m5/epv34krAPN3++Nt/Lx83F270gtiqvq12Wkds9QRb0Wliqz+11frRVjSm2OrrtirtstjpY7HVE2xl2Apb1bcVXTK2eoKtaKqx1RNsRQ+Ord6sZKcu47ZMhW9aj3+91tvDx20YP9qKlh1bfd1W22GnrfbJsRUtO7aqb6uDlh1bPcFWtOzY6gm2omXHVk+wFS07tnqCrQxbYav6tqJlx1ZPsBUtO7Z6s9JbzX7aalunjz6hNscnn/EJPTg+efPG/i74dowffzP/oNhO6hOz/fTJVvzLb2u655+ehg/LtdtAU41PPuMTqmd88hmf0CXjk8/4hHIYn3zGJ4ZP8MknfEJ9i08+4xP6WHzyGZ/Qx+KTz/iEPhaffMYn9LH45O3PzcP7n57n+fHDbVpu382xaXt/8Hi4L2Q42dm95MdPB440vThQ60A6ZByodSDtNA7UOpDeGwdqHWg4EAdKHUhXjwO1DmQVAAdqHcj6Ag7UOpCVCxyodSBrIjhQ6sCJNREcqHUgayI4UOtA1kRwoNaBrIngQK0DDQfiQKkDWRPBgVoHsiaCA7UOZE0EB2odyJoIDtQ6kDURHCh14MyaCA7UOpA1ERyodSBrIjhQ60DWRHCg1oGGA3Gg1IGsieBArQNZE8GBWgeyJoIDtQ5kTQQHah3ImggOlDrQWBPBgVoHsiaCA7UOZE0EB2odyJoIDtQ60HAgDpQ6kDURHKh1IGsiOFDrQNZEcKDWgayJ4ECtA1kTwYFSBy6sieBArQNZE8GBWgeyJoIDtQ5kTQQHah1oOBAHSh3ImggO1DqQNREcqHUgayKfceB+yrn/9b7uHPiTYre9/nY+ennrlit+jpfllGffCp/jeVu3k91494n4dYj20m3p3YY8+zHe2B2OPGu3jfBryNNtXfoa8nTbJb6GPN0Wba8hjyFPy/J0W9G8hjzd9hevIU+34f415KE1qC3POs6/HrvaVJBn38az01nfH7tMv9ShNFCqc6zHrcfdl9/UeXIjutFG9Kk7NUefutOf9Kk7xUyfuhu6d6k7VVKfutNR9ak75VefutOq9ak7fV2Xuu/0dX3qTl/Xp+70dX3qTl/Xp+6G7l3qTl/Xp+70dX3qTl/Xp+70dX3qTl/Xpe4HfV2futPX9ak7fV2futPX9am7oXuXutPX9ak7fV2futPX9ak7fV2futPX9aj7PtDX9ak7fV2futPX9ak7fV2fuhu6v4ru63B7xbZOw0cpqeDSSEmrlkZKirI0UtJ9vY6U59kOtm6OlNRZWaQcaajSSEnplEZKeqQ0UlINZZlgR0PKLFLS9qSRkrYnjZS0PWnGHtqeNFLS9mSRcqLtSSMlbU8aKWl70khJ25NGSkPKLFLS9qSRkrYnjZS0PVmKu4m2J42UtD1ZpJxpe9JISduTZeyZaXvSSEnbk0ZKQ8osUtL2pJGStieNlLQ9aaSk7UkjJW1PFimNtieNlLQ9WYo7o+1JIyVtTxopDSmzSEnbk2bsoe1JIyVtTxopaXvSSEnbk0XKhbYnjZS0PWmkpO1JIyVtTxopDSmzSEnbk6W4W2h70khJ25NGStqeNFLS9mQZe1banjRS0vakkZK2J42UtD1ppDSkzCIlbU8aKWl70khJ25NGStqeNFLS9mQp7jbanjRS0vakkZK2J42UtD1Zxp7NkDKLlLQ9aaSk7UkjJW1PGilpe9JISduTRcqdtieNlLQ9aaSk7UkjJW1PluJuN6TMIiVtTxopaXvSSEnbk2bsoe1JIyVtTxYpD9qeNFLS9qSRkrYnjZS0PWmkNKTMIiVtTxopaXvSSEnbk6W4O2h70khJ25NEymOg7UkjJW1PkrHnGGh70khJ25NGSkPKLFLS9qSRkrYnjZS0PWmkpO1JIyVtTxYpR9qeNFLS9mQp7kbanjRS0vakkdKQMouUtD1pxh7anjRS0vakkZK2J42UtD1ZpJxoe9JISduTRkranjRS0vakkdKQMouUtD1ZiruJtieNlLQ9aaSk7UkjJW1PlrFnpu1JIyVtTxopaXvSSEnbk0ZKQ8osUtL2pJGStieNlLQ9aaSk7UkjJW1PluLOaHvSSEnbk0ZK2p40UtL2ZBl7zJAyi5S0PWmkpO1JIyVtTxopaXvSSEnbk0XKhbYnjZS0PWmkpO1JIyVtT5bibjGkzCIlbU8aKWl70khJ25Nm7KHtSSMlbU8WKVfanjRS0vakkZK2J42UtD1ppDSkzCIlbU8aKWl70khJ25OluFtpe9JISduTRcqNtieNlLQ9WcaejbYnjZS0PWmkNKTMIiVtTxopaXvSSEnbk0ZK2p40UtL2ZJFyp+1JIyVtT5bibqftSSMlbU8aKQ0ps0hJ25Nm7KHtSSMlbU8aKWl70khJ25NFyoO2J42UtD1ppKTtSSMlbU8aKQ0ps0hJ25OluDtoe9JISduTRkranjRS0vbkGHuWYaDtSSMlbU8aKWl70khJ25NGSkPKLFLS9qSRkrYnjZS0PWmkpO1JIyVtT47ibhlG2p40UtL2pJGStieNlLQ9Wcae0ZAyi5S0PWmkpO1JIyVtTxopaXvSSEnbk0XKibYnjZS0PWmkpO1JIyVtT5bibjKkzCIlbU8aKWl70khJ25Nm7KHtSSMlbU8WKWfanjRS0vakkZK2J42UtD1ppDSkzCIlbU8aKWl70khJ25OluJtpe9JISduTRUqj7UkjJW1PlrHHaHvSSEnbk0ZKQ8osUtL2pJGStieNlLQ9aaSk7UkjJW1PFikX2p40UtL2ZCnuFtqeNFLS9qSR0pAyi5S0PWnGHtqeNFLS9qSRkrYnjZS0PVmkXGl70khJ25NGStqeNFLS9qSR0pAyi5S0PVmKu5W2J42UtD1ppKTtSSMlbU+WsWej7UkjJW1PGilpe9JISduTRkpDyixS0vakkZK2J42UtD1ppKTtSSMlbU+W4m6n7UkjJW1PGilpe9JISduTZezZDSmzSEnbk0ZK2p40UtL2pJGStieNlLQ9WaQ8aHvSSEnbk0ZK2p40UtL2ZCnuDkPKLFLS9qSRkrYnjZS0PWnGHtqeNFLS9iSRchxoe9JISduTRkranjRS0vakkdKQMouUtD1ppKTtSSMlbU+S4m4caHvSSEnbk0XKkbYnjZS0PVnGnpG2J42UtD1ppDSkzCIlbU8aKWl70khJ25NGStqeNFLS9mSRcqLtSSMlbU+W4m6i7UkjJW1PGikNKbNISduTZuyh7UkjJW1PGilpe9JISduTRcqZtieNlLQ9aaSk7UkjJW1PGikNKbNISduTpbibaXvSSEnbk0ZK2p40UtL2ZBl7jLYnjZS0PWmkpO1JIyVtTxopDSmzSEnbk0ZK2p40UtL2pJGStieNlLQ9WYq7hbYnjZS0PWmkpO1JIyVtT5axZzGkzCIlbU8aKWl70khJ25NGStqeNFLS9mSRcqXtSSMlbU8aKWl70khJ25OluFsNKbNISduTRkranjRS0vakGXtoe9JISduTRcqNtieNlLQ9aaSk7UkjJW1PGikNKbNISduTRkranjRS0vZkKe422p40UtL2ZJFyp+1JIyVtT5axZ6ftSSMlbU8aKQ0ps0hJ25NGStqeNFLS9qSRkrYnjZS0PVmkPGh70khJ25OluDtoe9JISduTRkpDyixS0vakGXtoe9JISduTRkranjRS0vYkkXIaaHvSSEnbk0ZK2p40UtL2pJHSkDKLlLQ9SYq7aaDtSSMlbU8aKWl70twraXuyfCpH2p40UtL2pJGStifLvXKk7UnzqTSkzCIlbU8aKWl70khJ25Nm7KHtSSMlbU8WKSfanjRS0vakkZK2J42UtD1ppDSkzCIlbc/LSLnt403K7Q70KSVtj1LK0ebbHx5tHQtirstw47Eu83gvpqPK28f0Jss03ym/u+y2m03e/nO7f/BPm9AkYZNP2ISWCpt8wiY0YNikbJOZdg2b/AXsuNGYh3H5aBOaO2zyCZvQCmKTv7wxv9vknobrqfeXMS33C+zeg8fjbE3GY9sfP/itV7nF8uNjKp+pPfHqq3jV8CpefaJXp2E4Y8Jwr/g3vEpxjVdfxas083j1y161E/SbnoUZYN/Pd3gM88fAROePAZ9qwIpDKAsPePVVvMrqB159Ea8aSzB49ZlerRiYjHUgvPoqXmUxCq8+1avjiWMa5+NDuDdWmDCg1ICGATGg0oCsBWHApxpwen/wtBdexjjv24lj+Lh7yVgNwq2v41aWjnBrO25d5vn0XekvF3I760wYO6WxWZTC2BmNvbCChbEbMvZ2Ls0uxx8tzS4sd2HslMZmbQxjf9XY6zSdIi7Ln7UXC2tjGFBqQMOAGPCZBqyYr1hGw6uv4lUW0fDqq3iVJTS8+lyv1kvsrIrh1VfxKgtdePXtEeM43B48TgX7fe2nVQpfq15ZkMKATzVgva//rawx4dVX8SrLRnj1VbzKChNefaZXK35VdTW8ildfxKssRuHVp3q18KXClRUmDCg1IMtGGFBqQNaCMOBTDVjzi6orq0G49WXcurF0hFvbcWu9zU4b60wYO6WxWZTC2CmNzQoWxm7I2NX2B26GsTF2RmOzNoaxv2xszbEDG8toePVVvMqKG159plcr7o/ZWJzDq6/iVZbm8OpXvVrzV1h2VtswoNSArIphwKcasN56wM5CF159Fa+ydoVXX8Wrhlfx6lO9Wm2FaWeFCa++ildZYZJ6dT89Mu7T+ptXf+rDqkrb+rCS0LY+tOdN63NQLjejz3g4+tC9tq0PfWPb+tCxtX3/MfRpWh+6lLb1oT9oWx/6g7b1oT9oWx/6g5b1mQf6g7b1oT9oWx/6g7b1oT9oWx9Dn4b7t3mgP2hbH/qDtvWhP6itz7bcNuTs97uCXH3W9fYi1u39Nczj8Esd2oOW1aE7aFidkeagZXXoDVpWh9agZXXoDFpWx1CnYXXoC1pWh7agZXXoClpWh66gZXXoChpWZ6IraFkduoKW1aEraFkduoKW1THUaVgduoKW1aEraFkduoKW1aEraFkduoKG1ZnpClpWh66gZXXoClpWh66gZXUMdRpWh66gZXXoClpWh66gZXXoCmqrc5w/SXssQ0GdcX0/wW1d338Ldtq8B+8n6HE/tscPnrfzZczbMt8/+Kfw1BB9Cm80HJ0KT3nSqfD0Mp0KT+XTqfCG8H0KT1HVqfB0YJ0KT73WqfA0d0mFP8bb+5uPbXz84H3bj1sXvI+OS6j5cEnRJQudIC75p32dbu9vX20tvAx7P3rv7b/vVDxNRd+Iqaqbii4TU5XvZxSfuKTsEsMluKT2DYoGFlNVNxXtLqYq38+ognFJ2SX0xrjkn3Zbx5tL7Bg+uoTeGJcUryUrvTEuKbuEIhiX1I5EK0UwpqpuKnpjTFW+nxkuwSVFl1AE45LqNyiKYExV3VT0xpiqfD+jN8YlZZfQG+OS4urCRm+MS4rXko3eGJeUXUIRjEtqR6KNIhhTVTeVYSpMVbyf0RvjkrJLKIJxSfUbFEUwpqpuKnpjTFW+n9Eb45KiS3Z6Y1xSXF3Y6Y1xSflaQm+MS8ouoQjGJbUj0W6YClPVNhW9MaYq38/ojXFJ2SUUwbik+g2KIhhTVTcVvTGmKt7PDnpjXFJ2Cb0xLimuLhz0xrikfC2hN8YlZZcYLsEllSPRQRGMqaqbit4YU5XvZ/TGuKTsEopgXFL9BkURjKkqm8oGemNMVbqf2UBvjEvKLqE3xiWl1QUb6I1xSflaYrgElxRdQhGMS6pHIopgTFXdVPTGmKp8P6M3xiVll1AE45LaN6iRIhhTVTcVvTGmKt7PRnpjXFJ2Cb0xLimuLoyGS3BJ8VpCb4xLyi6hCMYl1SMRRTCmqm4qemNMVb6f0RvjkqJLJopgXFL7BjVRBGOq6qaiN8ZU5fsZvTEuKbvEcAkuKa0uTPTGuKR8LaE3xiVll1AE45LqkYgiGFNVNxW9MaYq3s9memNcUnYJRTAuqX2DmimCMVV1U9EbY6ry/cxwCS4puoTeGJcUVxdmemNcUnYJvXFOl9iwD78ebD94PXrwMQ23l3FMxZcxLPPNU2//bcdHU9EbY6rqpqI3xlS1TWXUzJiquqlopTFVdVPRSmOq6qailcZU1U1lmCqlqZZpPV/yPO0fhaeX7lR4quZOhac97lR4Gt5OhaeF7VP4haa0U+FpMzsVnsaxU+FpBTsV3hC+T+Fp7pIKP2+3dYC/9g0X/vI2T9vtT2/zXlwJmKfbH3/77+Xj5sKFXhBbPcFWtI7Y6gm2otPEVn9qq/WjrWhMsdXXbVXaZbHSx2KrJ9iKthdbPcFWdMnY6gm2oqnGVk+wlWErbDVuduoybstU+Kb1+NdrvT183Ibxo61o2bHV1221HXbaap8cW9GyY6sn2IqWHVs9wVa07NjqCbaiZcdW9W210bJjqyfYipYdWz3BVrTs2OoJtqJlx1ZvVnqr2U9bbev00SeGT/DJJ3xCD45P3ryxvwu+HePH38zfKLaT+sRsP32yFf/y25ru+aen4eNy7UZTjU/e/tw8vP/peZ4fP9ym5bZnwKbt/cHj4b6Q4WRn95IfvxxIqY0DtQ6k/8aBUgfuVOU4UOtAWnUcqHUgBTwO1DqQrh4Hah1oOBAHSh3I+gIO1DqQlQscqHUgayI4UOtA1kRwoNaBrIngQKkDD9ZEcKDWgayJ4ECtA1kTwYFaB7ImggO1DjQciAOlDmRNBAdqHciaCA7UOpA1ERyodSBrIjhQ60DWRHCg0oHLwJoIDtQ6kDURHKh1IGsiOFDrQNZEcKDWgYYDcaDUgayJ4ECtA1kTwYFaB7ImggO1DmRNBAdqHciaCA6UOnBkTQQHah3ImggO1DqQNREcqHUgayI4UOtAw4E4UOpA1kRwoNaBrIngQK0DWRPBgVoHsiaCA7UOZE0EB0odOLEmggO1DmRNBAdqHciaCA7UOpA1ERyodaDhQBwodSBrIp9x4H7Kuf/1vu4c+JNit73+vp6nou/7Wnj09GbB299++0zfmdH7dK7L+VFel3l87PN5mm4f5Xm6+wSNu/c6juP2HudhXO4f/FPObkvynHJ22zi/pJzzML/LeX9ldrV/fxnTW632+MHjG4Qb62OYPxql22IYo/zO+ngfDI+78c19sK3nOHbMHwasuduqF089zVPdlrd46mme6raOxVO/P3gYxtuDh3tlvuGpbgtWPPU0TxmewlN/PXgc59uDx/n4EObmbptNjPI1o1DeYpRPGYVaGKP8ePBkJ71pL7yMcd5v88xow8d2eqadxlX1XUWVjau+7qq3yH76Y1n/JKcZvTcGlBqQkhwDSg1Io44Bv2HA7VzSWY4/WtIx6ncMKDWgYcC8Bnz3VPFGWXGd2qj18VRtT7ECgKd+PLjeOrWxWICnanuKpYK8nlqn80Wvy1K49xXaf6P9xyifMcpCS49RKveeC8U7nqrtKbp0PFXbU9TjeOrf6zbei+EpPFXZUzTeL+Wpcby96nmcllKTpPm230Ljjadqe4rGG0/9e93Ge6HxxlO1PUU5nthTX9lBUPg5oJVyHKNUHpJWynE8VdtTlON4qranKMfxVOXBezU8hacqe4pyHE/9eHDhxztWGm+M8imjUGNjlE8ZhW4ao/x4cM0fbllpp3FVdVdtVNm46uuuqrfZcqP3xoBSA1KSY0CpAWnUMeA3DFhtH/FmGBADKg1IV5/XgDW/lbzR1WOUTxmFrh6j1J7TqfXxVG1PUerjqcqe2qn08VTlhLbT0uOp2p6ieP+yp47lN0/95Eh//CmO6/j+um10OBocq3Dst807r+dvHI/Co49xuT36mEYr/e1lOv/03euwxYV3Xnfnfby78G6/BOq3RXsRgfptrxoRaD9u30OYD0+gfqugFxGo317lNQQ6+i0pXkSgfhP/iwjUb3x+EYH6zeUvIpAhUNsC0SQ0LhBNQn2B1vPbhatNBYH27abPb8XdMv3ShyJBq8+xHrc/vC+/6eOslkzLuVwybb+tlzhv0IYb6rf1Abt/8E/laSh6VZ7qo0/l14FOpVflKWt6VZ4WqFflqZd6Vd5QvlPlKcR6VZ6mrVfl6fB6VZ4Or1fl6fA6VX6kw+tVeTq8XpWnw+tVeTq8XpU3lO9UeTq8XpWnw+tVeTq8XpWnw+tVeTq8TpWf6PB6VZ4Or1fl6fB6VZ4Or1flDeU7VZ4Or1fl6fB6VZ4Or1fl6fB6VZ4Or1PlZzq8XpWnw+tVeTq8F1J+HW7v0N5WXD6KSS2XSExDzDxiUp4lEpM+7JXEXJZTzM0Rk4orkZi0VonEpIjKI6bRLSUSk7oozzRrNECJxKQBSiSmIWYeMWmAEg1ANECJxKQBSiQmDVAiMWmA8oi50AAlEpMGKJGYNECJxKQBSiSmIWYeMWmA8tR5Cw1QIjFpgBKJSQOUSEwaoDwD0EoDlEhMGqBEYtIAJRKTBiiRmIaYecSkAUokJg1QIjFpgBKJSQOUSEwaoDx13kYDlEhMGqBEYtIAJRKTBijPALQZYuYRkwYokZg0QInEpAFKJCYNUCIxaYDyiLnTACUSkwYokZg0QInEpAHKU+fthph5xKQBSiQmDVAiMWmAEg1ANECJxKQByiPmQQOUSEwaoERi0gAlEpMGKJGYhph5xKQBSiQmDVAiMWmA8tR5Bw1QIjFpgNKIuQ00QInEpAFKMwBtAw1QIjFpgBKJaYiZR0waoERi0gAlEpMGKJGYNECJxKQByiPmSAOUSEwaoDx13kgDlEhMGqBEYhpi5hGTBijRAEQDlEhMGqBEYtIAJRKTBiiPmBMNUCIxaYASiUkDlEhMGqBEYhpi5hGTBihPnTfRACUSkwYokZg0QInEpAHKMwDNNECJxKQBSiQmDVAiMWmAEolpiJlHTBqgRGLSACUSkwYokZg0QInEpAHKU+cZDVAiMWmAEolJA5RITBqgPAOQGWLmEZMGKJGYNECJxKQBSiQmDVAiMWmA8oi50AAlEpMGKJGYNECJxKQBylPnLYaYecSkAUokJg1QIjFpgBINQDRAicSkAcoj5koDlEhMGqBEYtIAJRKTBiiRmIaYecSkAUokJg1QIjFpgPLUeSsNUCIxaYDyiLnRACUSkwYozwC00QAlEpMGKJGYhph5xKQBSiQmDVAiMWmAEolJA5RITBqgPGLuNECJxKQBylPn7TRAicSkAUokpiFmHjFpgBINQDRAicSkAUokJg1QIjFpgPKIedAAJRKTBiiRmDRAicSkAUokpiFmHjFpgPLUeQcNUCIxaYASiUkDlEhMGqA0A9A+0AAlEpMGKJGYNECJxKQBSiSmIWYeMWmAEolJA5RITBqgRGLSACUSkwYoTZ23jzRAicSkAUokJg1QIjFpgPIMQKMhZh4xaYASiUkDlEhMGqBEYtIAJRKTBiiPmBMNUCIxaYASiUkDlEhMGqA8dd5kiJlHTBqgRGLSACUSkwYo0QBEA5RITBqgPGLONECJxKQBSiQmDVAiMWmAEolpiJlHTBqgRGLSACUSkwYoT5030wAlEpMGKI+YRgOUSEwaoDwDkNEAJRKTBiiRmIaYecSkAUokJg1QIjFpgBKJSQOUSEwaoDxiLjRAicSkAcpT5y00QInEpAFKJKYhZh4xaYASDUA0QInEpAFKJCYNUCIxaYDyiLnSACUSkwYokZg0QInEpAFKJKYhZh4xaYDy1HkrDVAiMWmAEolJA5RITBqgPAPQRgOUSEwaoERi0gAlEpMGKJGYhph5xKQBSiQmDVAiMWmAEolJA5RITBqgPHXeTgOUSEwaoERi0gAlEpMGKM8AtBti5hGTBiiRmDRAicSkAUokJg1QIjFpgPKIedAAJRKTBiiRmDRAicSkAcpT5x2GmHnEpAFKJCYNUCIxaYASDUA0QInEpAFKI+Yx0AAlEpMGKJGYNECJxKQBSiSmIWYeMWmAEolJA5RITBqgNHXeMdAAJRKTBiiPmCMNUCIxaYDyDEAjDVAiMWmAEolpiJlHTBqgRGLSACUSkwYokZg0QInEpAHKI+ZEA5RITBqgPHXeRAOUSEwaoERiGmLmEZMGKNEARAOUSEwaoERi0gAlEpMGKI+YMw1QIjFpgBKJSQOUSEwaoERiGmLmEZMGKE+dN9MAJRKTBiiRmDRAicSkAcozABkNUCIxaYASiUkDlEhMGqBEYhpi5hGTBiiRmDRAicSkAUokJg1QIjFpgPLUeQsNUCIxaYASiUkDlEhMGqA8A9BiiJlHTBqgRGLSACUSkwYokZg0QInEpAHKI+ZKA5RITBqgRGLSACUSkwYoT523GmLmEZMGKJGYNECJxKQBSjQA0QAlEpMGKI+YGw1QIjFpgBKJSQOUSEwaoERiGmLmEZMGKJGYNECJxKQBylPnbTRAicSkAcoj5k4DlEhMGqA8A9BOA5RITBqgRGIaYuYRkwYokZg0QInEpAFKJCYNUCIxaYDyiHnQACUSkwYoT5130AAlEpMGKJGYhph5xKQBSjQA0QAlEpMGKJGYNECJxKQByiLmOgw0QInEpAFKJCYNUCIxaYASiWmImUdMGqAsdd6bmDRAicSkAUokJg1QIjFpgPIMQCMNUCIxaYASiUkDlEhMGqBEYhpi5hGTBiiRmDRAicSkAUokJg1QIjFpgPLUeRMNUCIxaYASiUkDlEhMGqA8A9BkiJlHTBqgRGLSACUSkwYokZg0QInEpAHKI+ZMA5RITBqgRGLSACUSkwYoT503G2LmEZMGKJGYNECJ7pk0QIk+mTRAicSkAcojptEA5blnGg1Qok8mDVAiMWmAEolpiJlHTBqgRAMQDVAiMWmAEolJA5RITBqgPGIuNECJxKQBSiQmDVAiMWmAXkjMbR9vYm53qE8xDTGlYo4234iMto4FOdflfNXrMo/3cjq6TNPtgzxP8532u0tvuxnl7T+3+wf/NArtEkb5lFForjDKp4xCK4ZRPmUUGjeM8oPecdzozcO4fDQKbR5G+YxRVppCjPLjwcP8bhQ7Cq56fxnTcr8A7z14PM4WZTy2/fGD33qWW0g/Pmb0lSoUt76OW+l6cetz3ToNwxkYhnvNv+FWymzc+jpuNdyKW7/uVjtRvylamAT2/XyHxzB/jE6sA2DBJ1uw4jDKYgRufR23siKCW1/HrSzL4NbnurVmdGJtCLe+jFs3Fqhw65PdOp44pnE+PgT9jVUnLCi2IEtJWFBsQdaHsOCTLTi9P3jaCy9jnPftxDF83Nm0GX7Fry/kV5aT8GtLfl3m+XRe6S8XMjxrT1g7qbVZqMLaSa3NqhbWbsra27lguxx/tGC7sQSGtXNae2e9DGt/3drrNJ0yLsufNRk762VYUGxB1suw4JMtWC9p7Syt4dbXcavhVtz6Mm5lWQ23Ptut9dI7K2W49XXcyuIXbv3x4HEcbg8ep4IBv/ZzLIUvYe8sUmHBJ1uw3hcFd9adcOvLuPVgKQm3vo5bWXXCrc91a8WvtR4sUOHW13ErC1S49cluLXz98DAsiAW1FmQpCQuKLcj6EBZ8sgVrfqn1YIUIv76SX1lOwq8t+bXeRqiDtSesndLa48BCFdZOam1WtbB2U9autXtwHFgCw9pJrc16Gdb+hrUlxxeMg+FW3PoybmUVDrc+1631ds6MAwt2uPV13MpyHW79ulsr/nLLOLAChwXFFmSlDAs+2YL1VghGFr9w6+u4lfUs3Po6bmWJCrc+263VVp1GVp1w6+u41XCr1q376ZJxn9bf3PpTIVZaWleI1YXWFaJRb10hCueGFBoPRyH62MYVmuggW1eI3q3x+9BE19S6QvQrrStkKNS4QnQKrStEp9C6QnQKrStEp9C6QnQKjSs00ym0rhCdQusK0Sk03svNdAqtK2Qo1LhCdAr1FdqW2+ad/X4HkavQut5e9Lq9v4p5HH7pQ6PQtj70CW3rQ5vQtj50CU3rYzQJbetDj9C2PrQIbetDh9C2PoY+TetDf9C2PvQHbetDf9C2PvQHbetDf9C0Pgv9Qdv60B+0rQ/9Qdv60B+0rY+hT9P60B+0rQ/9Qdv60B+0rQ/9Qdv60B80rc9Kf9C2PvQHbetDf9C2PvQHbetj6NO0PvQHbetDf1Bfn+P808cyFPR5+4Scvzq7ru+/Ojtt3oP3E/W4H9vjB8/b+TLmbZnvH/xTeqqJbqWn9ehWegqVXqXf6Gq6lZ4aqFvpaZi6lZ7yqlvpDel7lZ7KrVvpafPSSn+MNx7zsY2PH7xv+3FriPfR8QnVHz75jE/oCfHJXz5Zp5sw+2pr4WXY++F/b/99p+NpKzpIbFXfVjv9Jrb6xF1tpwzFJ5/xCc0pPnnCbYpWFls9wVaGrbDVJ+5q1MP45DM+oUvGJ3/5xNbx5hM7ho8+oUvGJ5+5ntAl45PP+IRyGJ/Uj0cH5TC2eoKt6JKx1SfuagddMj75jE8oh/HJE25Thq2wVX1b0SVjq8/c1eiS8clnfEKXjE/+Xl5zOOiS8clnrid0yfik7JNpoBzGJ9Xj0TRQDmOrJ9iKLhlbfeauRpeMTz7jE8Mn+KT+bYpyGFs9wVZ0ydjqM3c1umR88hmf0CXjk78X1xymgS4Zn3ziejLSJeOTz/iEchif1I9HI+UwtnqCreiSsdVn7mqGT/DJJ3xCOYxPnnCbohzGVk+wFV0ytvrMXY0uGZ98xid0yfjk7+U1h4kuGZ984noy0SXjk8/4hHIYn9SPRxPlMLZ6gq0MW2GrT9zV6JLxyWd8QjmMT55wm6IcxlZPsBVdMrb6zF2NLhmffMInM10yPvl7ec1hpkvGJ5+5ntAl45PP+IRyGJ/Uj0ezYStsVd9WdMnY6jN3NbpkfPIZn1AO45Mn3KYoh7HVE2xFl4ytPnFXM7pkfPIZn9Al45O/l9ccjC4Zn3zmekKXjE8+4xPDJ/ikejwyymFs9QRb0SVjq8/c1eiS8clnfEI5jE+ecJuiHMZW9W210CVjq0/c1Ra6ZHzyGZ/QJeOTv5fXHBa6ZHzymeuJ4RN88gmfUA7jkyfEI8phbPUEW9ElY6vP3NXokvHJZ3xCOYxP6t+mVsphbPUEW9ElY6tP3NVWumR88hmf0CXjk7+X1xxWwyf45BM+oUvO6hMb9uHXg+0HsUcPPqZhOd9g8WUMy3xz1dt/2/HRVnTJ2OoJtqJLxlZPsBXVM7Z6gq1oqrFVfVttNNXY6gm2oqnGVk+wFcV2VlstbzH/9g7naf8oPV11t9Ib0vcqPY1yt9LT+nYrPc1st9LTnnYrPQ1nr9LvtJDdSk9T2K30tHndSk+bl1b6ebutDyw2L4W/vM3TdvvT27wXVwjm6fbH3/57+bgFcTeMhbGeYSyaSIz1FGPRc2KsPzfW+tFYtKgY6zvGKu3C2OloMdZTjEUDjLGeYayDfhljPcVYtNcY6ynGohvHWD+MZacy47ZMhW9oj3+91tvDx20YPxqL5h1jfcdY22GnsfbJMZZhLIz1DGPRvGOspxiL5h1jPcVYNO8Y6ynGonnHWE8xFs07xnqCseaB5h1jPcVYNO8Y64ex3qr301jbOn10ClU6TvmcU+jGccoPp+zvkm/H3Vs8nWI4JatTzM53aFvxL7+t9p5/ehqOj06hvcYpP/7y2yBy/ul5nh8/3Kbltp/Apu39wePhvpDh/LaV3Yt+/PIgRTceVHuQThwPqj1IfY4H1R6kaceDYg+OlPJ4UO1B+ns8qPYgKwN4UO1B1hzwoNqDhgfxoNiDrJPgQbUHWSfBg2oPsk6CB9UeZJ0ED6o9yDoJHhR7cGKdBA+qPcg6CR5Ue5B1Ejyo9iDrJHhQ7UHDg3hQ7EHWSfCg2oOsk+BBtQdZJ8GDag+yToIH1R5knQQPij04s06CB9UeZJ0ED6o9yDoJHlR7kHUSPKj2oOFBPCj2IOskeFDtQdZJ8KDag6yT4EG1B1knwYNqD7JOggfFHjTWSfCg2oOsk+BBtQdZJ8GDag+yToIH1R40PIgHxR5knQQPqj3IOgkeVHuQdRI8qPYg6yR4UO1B1knwoNiDC+skeFDtQdZJ8KDag6yT4EG1B1kn+ZQH5/Mc6MPG8bdH/+RovXI89uPXo9dhKD16H6fbK9lHGwqPHvf99i7HY7hz+v4Lerfl9jOhH+8XxePu0vUG3bkWreel6Jg/Xly6LX6fqM80DOPtlQz37/Ib+nRbij5Tn3G83SqmcT4+XrS6bQGfCX2y85VM+/z4QzHO++1T8faXl48KdduRvYpCa7cNUjMKLfN8sl7WP7kLrd1WMRnF7LbTaEfM7Zzf317UH4nZbTmQUUzrVkxbTjGnUn84vsWrc/YYhnkvPL5qG7f2W2i8jkb9lhqvo1G/xcbraNRvD/I6GvXbhLyMRlu/XcjraNRvxfE6GvXbXLyORv0WEq+jkaFR8xrRM7SvET1D+xrRM7SvET1D+xrRMzSv0U7P0L5G9Azta0TP0L5G9Azta2Ro1LxG9Azta0TP0L5G9Azta0TP0L5G9AzNa3TQM7SvET1D+xrRM7SvET1D+xoZGjWvET1D+xrRM7SvET1D+xrRMzxFo3W4vRZbp+EjdqoDAXYbaAMk2An4Euxk9udgP3/SzNbNwU4Ml2A3sCuwE5Yl2Mm/EuxEWskkQ0qVYCelKrCPpFQJdlKq4pY6klIl2EmpEuwGdgV2UqoEOylVgp2UKsFOSpVgJ6UqsE+kVAl2UqqiHJhIqRLspFQJdgO7AjspVXJLJaVKsJNSJdhJqRLspFQF9pmUKsFOSpVgJ6VKsJNSJdgN7ArspFRFOTCTUiXYSakS7KRUCXZSquKWaqRUCXZSqgQ7KVWCnZQqwW5gV2AnpUqwk1Il2EmpEuykVAl2UqqiHFhIqRLspFQJdlKqBDspVXFLXQzsCuykVAl2UqoEOylVgp2UKsFOSlVgX0mpEuykVAl2UqoEOylVUQ6sBnYFdlKqBDspVYKdlCq5pZJSJdhJqQrsGylVgp2UKsFOSpVgJ6VKsBvYFdhJqRLspFQJdlKqohzYSKkS7KRUBfadlCrBTkpV3FJ3UqoEOylVgt3ArsBOSpVgJ6VKsJNSJdhJqRLspFQF9oOUKsFOSlWUAwcpVYKdlCrBbmBXYCelSm6ppFQJdlKqBDspVYKdlCrAvgykVAl2UqoEOylVgp2UKsFuYFdgJ6UKyoFlIKVKsJNSJdhJqRLspFTFLXUkpUqwk1Il2EmpEuykVAl2A7sCOylVgp2UKsFOSpVgJ6VKsJNSFeXAREqVYCelSrCTUiXYSamKW+pkYFdgJ6VKsJNSJdhJqRLspFQJdlKqAvtMSpVgJ6VKsJNSJdhJqYpyYDawK7CTUiXYSakS7KRUyS2VlCrBTkpVYDdSqgQ7KVWCnZQqwU5KlWA3sCuwk1Il2EmpEuykVEU5YKRUCXZSqgL7QkqVYCelKm6pCylVgp2UKsFuYFdgJ6VKsJNSJdhJqRLspFQJdlKqAvtKSpVgJ6UqyoGVlCrBTkqVYDewK7CTUiW3VFKqBDspVYKdlCrBTkpVYN9IqRLspFQJdlKqBDspVYLdwK7ATkpVlAMbKVWCnZQqwU5KlWAnpSpuqTspVYKdlCrBTkqVYCelSrAb2BXYSakS7KRUCXZSqgQ7KVWCnZSqKAcOUqoEOylVgp2UKsFOSlXcUg8DuwI7KVWCnZQqwU5KlWAnpUqwk1IF2NeBlCrBTkqVYCelSrCTUgXlwNv/L9gV2EmpEuykVAl2UqrklkpKlWAnpSqwj6RUCXZSqgQ7KVWCnZQqwW5gV2AnpUqwk1Il2EmpinJgJKVKsJNSFdgnUqoEOylVcUudSKkS7KRUCXYDuwI7KVWCnZQqwU5KlWAnpUqwk1IV2GdSqgQ7KVVRDsykVAl2UqoEu4FdgZ2UKrmlklIl2EmpEuykVAl2UqoCu5FSJdhJqRLspFQJdlKqBLuBXYGdlKooB4yUKsFOSpVgJ6VKsJNSFbfUhZQqwU5KlWAnpUqwk1Il2A3sCuykVAl2UqoEOylVgp2UKsFOSlWUAyspVYKdlCrBTkqVYCelKm6pq4FdgZ2UKsFOSpVgJ6VKsJNSJdhJqQrsGylVgp2UKsFOSpVgJ6UqyoHNwK7ATkqVYCelSrCTUiW3VFKqBDspVYF9J6VKsJNSJdhJqRLspFQJdgO7AjspVYKdlCrBTkpVlAM7KVWCnZSqwH6QUiXYSamKW+pBSpVgJ6VKsBvYFdhJqRLspFQJdlKqBDspVYKdlCrAvg2kVAl2UqqgHNgGUqoEOylVgt3ArsBOSpXcUkmpEuykVAl2UqoEOylVgX0kpUqwk1Il2EmpEuykVAl2A7sCOylVUQ6MpFQJdlKqBDspVYKdlKq4pU6kVAl2UqoEOylVgp2UKsFuYFdgJ6VKsJNSJdhJqRLspFQJdlKqohyYSakS7KRUCXZSqgQ7KVVxS50N7ArspFQJdlKqBDspVYKdlCrBTkpVYDdSqgQ7KVWCnZQqwU5KVZQDZmBXYCelSrCTUiXYSamSWyopVYKdlKrAvpBSJdhJqRLspFQJdlKqBLuBXYGdlCrBTkqVYCelKsqBhZQqwU5KVWBfSakS7KRUxS11JaVKsJNSJdgN7ArspFQJdlKqBDspVYKdlCrBTkpVYN9IqRLspFRFObCRUiXYSakS7AZ2BXZSquSWSkqVYCelSrCTUiXYSakK7DspVYKdlCrBTkqVYCelSrAb2BXYSamKcmAnpUqwk1Il2EmpEuykVMUt9SClSrCTUiXYSakS7KRUCXYDuwI7KVWCnZQqwU5KlWAnpUqwk1IF5cA+kFIl2EmpEuykVMG1fR9IqRK3G9gV2EmpEuykVMm1nZQqcTspVYKdlKrAPpJSJdhJqYpb6khKlWAnpUqwG9gV2EmpEuykVAl2UqoEOylVgp2U+hTs2z7esG93UG7YJ1LqJ7HvdmIfh6WEfVpuKtm0/YbdeSk23KAsdv9SbhoRadvXiPzbvkaE5fY1MjRqXiNiePsakdnb14iA375GtAHta0R10LxGMz1D+xrRM7SvET1D+xrRM7SvkaFR8xrRM7SvET1D+xrRM7SvET1D+xrRMzSvkdEztK8RPUP7GtEztK8RPUP7GhkaNa8RPUP7GtEztK8RPUP7GtEztK8RPUPzGi30DO1rRM/Qvkb0DO1rRM/QvkaGRs/QqPBrMwvVgQQ7bYAEOwFfgp3M/hzsj3+RYCGGK7CvJGsJdsKyBDv5V4KdSKuYZFYDuwI7KVWCnZQqwU5KldxSSakS7KRUBfaNlCrBTkqVYCelSrCTUiXYDewK7KRUCXZSqgQ7KVVRDmykVAl2UqoC+05KlWAnpSpuqTspVYKdlCrBbmBXYCelSrCTUiXYSakS7KRUCXZSqgL7QUqVYCelKsqBg5QqwU5KlWA3sCuwk1Ilt1RSqgQ7KVWCnZQqwU5KFWA/BlKqBDspVYKdlCrBTkqVYDewK7CTUgXlwDGQUiXYSakS7KRUCXZSquKWOpJSJdhJqRLspFQJdlKqBLuBXYGdlCrBTkqVYCelSrCTUiXYSamKcmAipUqwk1Il2EmpEuykVMUtdTKwK7CTUiXYSakS7KRUCXZSqgQ7KVWBfSalSrCTUiXYSakS7KRURTkwG9gV2EmpEuykVAl2UqrklkpKlWAnpSqwGylVgp2UKsFOSpVgJ6VKsBvYFdhJqRLspFQJdlKqohwwUqoEOylVgX0hpUqwk1IVt9SFlCrBTkqVYDewK7CTUiXYSakS7KRUCXZSqgQ7KVWBfSWlSrCTUhXlwEpKlWAnpUqwG9gV2EmpklsqKVWCnZQqwU5KlWAnpSqwb6RUCXZSqgQ7KVWCnZQqwW5gV2AnpSrKgY2UKsFOSpVgJ6VKsJNSFbfUnZQqwU5KlWAnpUqwk1Il2A3sCuykVAl2UqoEOylVgp2UKsFOSlWUAwcpVYKdlCrBTkqVYCelKm6ph4FdgZ2UKsFOSpVgJ6VKsJNSJdhJqddj34aBlCrBTkqVYCelSrCTUq8vB96wG9gV2EmpEuykVAl2UqrklkpKlWAnpSqwj6RUCXZSqgQ7KVWCnZQqwW5gV2AnpUqwk1Il2EmpinJgJKVKsJNSFdgnUqoEOylVcUudSKkS7KRUCXYDuwI7KVWCnZQqwU5KlWAnpUqwk1IV2GdSqgQ7KVVRDsykVAl2UqoEu4FdgZ2UKrmlklIl2EmpEuykVAl2UqoCu5FSJdhJqRLspFQJdlKqBLuBXYGdlKooB4yUKsFOSpVgJ6VKsJNSFbfUhZQqwU5KlWAnpUqwk1Il2A3sCuykVAl2UqoEOylVgp2UKsFOSlWUAyspVYKdlCrBTkqVYCelKm6pq4FdgZ2UKsFOSpVgJ6VKsJNSJdhJqQrsGylVgp2UKsFOSpVgJ6UqyoHNwK7ATkqVYCelSrCTUiW3VFKqBDspVYF9J6VKsJNSJdhJqRLspFQJdgO7AjspVYKdlCrBTkpVlAM7KVWCnZSqwH6QUiXYSamKW+pBSpVgJ6VKsBvYFdhJqRLspFQJdlKqBDspVYKdlCrA/vbnwK7ATkoVlAPjQEqVYCelSrAb2BXYSamSWyopVYKdlCrBTkqVYCelKrCPpFQJdlKqBDspVYKdlCrBbmBXYCelKsqBkZQqwU5KlWAnpUqwk1IVt9SJlCrBTkqVYCelSrCTUiXYDewK7KRUCXZSqgQ7KVWCnZQqwU5KVZQDMylVgp2UKsFOSpVgJ6UqbqmzgV2BnZQqwU5KlWAnpUqwk1Il2EmpCuxGSpVgJ6VKsJNSJdhJqYpywAzsCuykVAl2UqoEOylVckslpUqwk1IV2BdSqgQ7KVWCnZQqwU5KlWA3sCuwk1Il2EmpEuykVEU5sJBSJdhJqQrsKylVgp2UqrilrqRUCXZSqgS7gV2BnZQqwU5KlWAnpUqwk1Il2EmpCuwbKVWCnZSqKAc2UqoEOylVgt3ArsBOSpXcUkmpEuykVAl2UqoEOylVgX0npUqwk1Il2EmpEuykVAl2A7sCOylVUQ7spFQJdlKqBDspVYKdlKq4pR6kVAl2UqoEOylVgp2UKsFuYFdgJ6VKsJNSJdhJqRLspFQJdlKqoByYBlKqBDspVYKdlCrBTkoV3FKnwcCuwE5KlWAnpUqwk1Il2EmpEuykVAX2kZQqwU5KlWAnpUqwk1IV5cBoYFdgJ6VKsJNSJdhJqZJbKilVgp2UqsA+kVIl2EmpEuykVAl2UqoEu4FdgZ2UKsFOSpVgJ6UqyoGJlCrBTkpVYJ9JqRLspFTFLXUmpUqwk1Il2A3sCuykVAl2UqoEOylVgp2UKsFOSlVgN1KqBDspVVEOGClVgp2UKsFuYFdgJ6VKbqmkVAl2UqoEOylVgp2UqsC+kFIl2EmpEuykVAl2UqoEu4FdgZ2UqigHFlKqBDspVYKdlCq5tpNSFW5fSakS7KRUCXZSquLavpJSJW43sCuwk1Il2EmpEuykVMktlZQqwU5KVWDfSKkS7KRUCXZSqgQ7KVWC3cCuwE5KfQr2bR9v2Lc7KCd2UurnsE92vpTh7RpRePy02I3J23+ud9gX59HrMtz++LrM471IDu1pur3weZrvFN2913EcNybzMC73D/4pP2m5a/lJ7Znln4f5XX47Cl55fxnTcl+seQ8e9/2m5HgM80dj0UtgrG8Z6zjHxPHY9scPfhskb7PN8XG02Slp8KDagzRWeFDtQeo7PPgdD07DcOsOpt/4fcODdJl4UO1Bw4N48DseHMf59uBxPj6E3Z3qGmM9xViU8xjrKcai9sdY3zLWZCftaS+8jHHeb/PYaMPH1Yed1QdcqHchSxW48PkuXOb59NOy/kmOPVjXwLAvZVgWQTDsSxmWFRMMe4Fht3OJbzn+aInvYHkFw76UYQ3DYtjzRZ8AizfuivsiDpZt8KDag6zw4MHveLDivoiDxSA8qPYgS0F48Pai1+l80euyFO7FhdWdg9UdjPUEY80DqzAY61vGqtZTzwMLK3hQ7UHWSvCg2oMsf+DB73mw1orG2wvDg3hQ7EFWNFJ7cByH24PHaSk1eZJvG88DKxp4UO1BVjTw4Hc8WG9FYx5Y0cCDag+y+IEH31/0F3a4PP55t3lk8QNjfctY9Ya8kcUPPKj2IIsfeFDtQRY/8OB3PFgxaIyGB/Gg2IMsfuDBb3nw8Y8lzSMrGhjrKcZimQJjPcVYrD1grG8Zq+IPa80jqw+4UO7CiaUKXPh8F9bbzDyxroFhX8qwLIJg2JcyLCsmGPYCw1bb1z8ZhsWwr2RY1mIw7O1F1/zVhYm1GIz1FGOxFoOxvmWsirmEZRs8qPYgizZ4UOzBmSUbPPg9D1ZLsDOrMHhQ7UEWVp7uwWP5zYM/ubM+8BTu6/j+Pm10uBvcJdxpaz/J/X3EHaZ9Lz3e5vNL1LbecV+mS+91076d37HYt+1D9TXTqXYtP81n1/JTOnYtP31fz/IbVVvX8tNypZb/ON5/tHb8uOhtFExdy0/PlVn+550aW/HXa8zwIB4Ue5D+Ew9+x4MVf73GKGHxoNqDNMF48BSn4s8FGx0zxvqWsSoOeRTdeFDswYW2HQ+qPUjljwe/48GKQWNh3QEPqj3I4gce/JYHCz++uRjGwljPMBbLFBjrKcZi7QFjPcVYLChgrG8Zq+YvAC+sPuBCvQtZf8CFz3dhvV/hWFmswLAvZVhWNjDsSxmWZRAMe4Fhq/0gzcqaCYZ9KcMahsWwvwDW/LnglbUYjPUUY7EWg7G+ZayKuYRlGzyo9iCLNnhQ7UGWbPDg9zxYLcFurMLgQbUHWVhJ7cGvHT/3ld/oKHwveGMBBGN9y1j1vg+3saaBB9UeNDyIB8UeZEUDD37HgxW/k7mx+IEH1R5k8QMPfsuDhS9DbaxoYKynGItlCoz1DGPtrD1grG8Zq+YX53ZWH3Ch3oUsVeDC57uw3uaVnXUNDPtShjUMi2FfybCsmGDYCwxbbR/XzvIKhn0pw7IWg2FPcTS/l76zbIMH1R5khQcPfseDFfdFHCwG4UG1B1kKwoM3gDV/deFgdQdjPcVYrMJgrG8Zq15PfRgexINiD7JWggfVHmT5Aw9+z4PVVjQOVjTwoNqDrGg8xYP7qf24T+tvHvzJnRZfwd0GmmsNd9paDXfKzKdzHw+HO12fhrvBXcKdTkdzfafH0HAnu2u4k1c13MmrEu4jeVXDnbyq4U5e1XAnr2q4G9wl3MmrGu7kVUk/M5JXNdzJqxru5NXPcV/GcyvBsPy1Q+Lu8T9ITiTQWiTJlLVIkhJrkST31SJpkKxEkmxWiyRpqxZJ8lMtkiSiWiTJOJVIzmScWiTJOLVIknFqkSTj1CJpkKxEkoxTiyQZpxZJMk4tkmScWiTJOJVIGhmnFkkyTi2SZJxaJMk4tUgaJCuRJOPUIknGqUWSjFOLJBmnFkkyTiWSCxnncyRXO4kM2/0hHu7j93U4fj18X6d37tNfZ4V8/OvzeJzvc37fyTmt7kuZ1vdXstw/+KeiZK1sipL5silK9nyOoraeiq5DSdG3P3j74/sw/aGihqLJFCWLZ1OUTuDriu5D6fE2LefvZU7bbz+Y6bwUG25QFrt/KccvjWgb2teIHqN9jWhImtdopXtpXyPalPY1oh9pXyMaj/Y1MjRqXiNaifY1omdoXyN6hvY1omdoXyN6huY12ugZ2teInqF9jegZ2teInqF9jQyNmteInqF9jegZ2teInqF9jegZ2teInqF5jXZ6hvY1omdoXyN6hvY1omdoXyNDo+Y1omdoXyN6hvY1omdoXyN6hvY1omdoXqODnuEpGq3D7bXYOg0fsVMdSLDTBkiwE/Al2A3sT8G+LCf2zcFODJdgJ1lLsBOWJdjJvxLsRFrBJLMMpFQJdlKqBDspVYKdlCq4pS6DgV2BnZQqwU5KlWAnpUqwk1Il2EmpCuwjKVWCnZQqwU5KlWAnpSrKgdHArsBOSpVgJ6VKsJNSJbdUUqoEOylVgX0ipUqwk1Il2EmpEuykVAl2A7sCOylVgp2UKsFOSlWUAxMpVYKdlKrAPpNSJdhJqYpb6kxKlWAnpUqwG9gV2EmpEuykVAl2UqoEOylVgp2UqsBupFQJdlKqohwwUqoEOylVgt3ArsBOSpXcUkmpEuykVAl2UqoEOylVgX0hpUqwk1Il2EmpEuykVAl2A7sCOylVUQ4spFQJdlKqBDspVYKdlKq4pa6kVAl2UqoEOylVgp2UKsFuYFdgJ6VKsJNSJdhJqRLspFQJdlKqohzYSKkS7KRUCXZSqgQ7KVVxS90M7ArspFQJdlKqBDspVYKdlCrBTkpVYN9JqRLspFQJdlKqBDspVVEO7AZ2BXZSqgQ7KVWCnZQquaWSUiXYSakK7AcpVYKdlCrBTkqVYCelSrAb2BXYSakS7KRUCXZSqqIcOEipEuykVAH2dSClSrCTUgW31Ld/EewK7KRUCXYDuwI7KVWCnZQqwU5KlWAnpUqwk1IV2EdSqgQ7KVVRDoykVAl2UqoEu4FdgZ2UKrmlklIl2EmpEuykVAl2UqoC+0RKlWAnpUqwk1Il2EmpEuwGdgV2UqqiHJhIqRLspFQJdlKqBDspVXFLnUmpEuykVAl2UqoEOylVgt3ArsBOSpVgJ6VKsJNSJdhJqRLspFRFOWCkVAl2UqoEOylVgp2UqrilmoFdgZ2UKsFOSpVgJ6VKsJNSJdhJqQrsCylVgp2UKsFOSpVgJ6UqyoHFwK7ATkqVYCelSrCTUiW3VFKqBDspVYF9JaVKsJNSJdhJqRLspFQJdgO7AjspVYKdlCrBTkpVlAMrKVWCnZSqwL6RUiXYSamKW+pGSpVgJ6VKsBvYFdhJqRLspFQJdlKqBDspVYKdlKrAvpNSJdhJqYpyYCelSrCTUiXYDewK7KRUyS2VlCrBTkqVYCelSrCTUhXYD1KqBDspVYKdlCrBTkqVYDewK7CTUhXlwEFKlWAnpUqwk1Il2EmpglvqNpBSJdhJqRLspFQJdlKqBLuBXYGdlCrBTkqVYCelSrCTUiXYSamCcmAbSakS7KRUCXZSqgQ7KVVxSx0N7ArspFQJdlKqBDspVYKdlCrBTkpVYJ9IqRLspFQJdlKqBDspVVEOTAZ2BXZSqgQ7KVWCnZQquaWSUiXYSakK7DMpVYKdlCrBTkqVYCelSrAb2BXYSakS7KRUCXZSqqIcmEmpEuykVAV2I6VKsJNSFbdUI6VKsJNSJdgN7ArspFQJdlKqBDspVYKdlCrBTkpVYF9IqRLspFRFObCQUiXYSakS7AZ2BXZSquSWSkqVYCelSrCTUiXYSakK7CspVYKdlCrBTkqVYCelSrAb2BXYSamKcmAlpUqwk1Il2EmpEuykVMUtdSOlSrCTUiXYSakS7KRUCXYDuwI7KVWCnZQqwU5KlWAnpUqwk1IV5cBOSpVgJ6VKsJNSJdhJqYpb6m5gV2AnpUqwk1Il2EmpEuykVAl2UqoC+0FKlWAnpUqwk1Il2EmpinLgMLArsJNSJdhJqRLspFTJLZWUKsFOShVg3wdSqgQ7KVWCnZQqwU5KlWA3sCuwk1Il2EmpEuykVEE5sA+kVAl2UqoC+0hKlWAnpSpuqSMpVYKdlCrBbmBXYCelSrCTUiXYSakS7KRUCXZSqgL7REqVYCelKsqBiZQqwU5KlWA3sCuwk1Ilt1RSqgQ7KVWCnZQqwU5KVWCfSakS7KRUCXZSqgQ7KVWC3cCuwE5KVZQDMylVgp2UKsFOSpVgJ6UqbqlGSpVgJ6VKsJNSJdhJqRLsBnYFdlKqBDspVYKdlCrBTkqVYCelKsqBhZQqwU5KlWAnpUqwk1IVt9TFwK7ATkqVYCelSrCTUiXYSakS7KRUBfaVlCrBTkqVYCelSrCTUhXlwGpgV2AnpUqwk1Il2EmpklsqKVWCnZSqwL6RUiXYSakS7KRUCXZSqgS7gV2BnZQqwU5KlWAnpSrKgY2UKsFOSlVg30mpEuykVMUtdSelSrCTUiXYDewK7KRUCXZSqgQ7KVWCnZQqwU5KVWA/SKkS7KRURTlwkFIl2EmpEuwGdsW1nZQqcTspVYKdlCrBTkqVXNtJqQK3HwMpVYKdlCrBTkqVYCelCm6px2BgV2AnpUqwk1Il2EmpEuykVAl2UqoC+0hKlWAnpT4F+7aPN+zbHZQTOyn1c9iP9fbCx3EYxt8e/5MkwbMWSeuU5DpO243k29stPHrfbp/sfV/fH7vcKPYaDb9G8ViPXw8+9uU3is7FdFpuf9mm7beLqfOxsOEGZLF7ILcrb68Z8lX06TVsvoo+vabSV9Gn1/j6IvpMvebcV9Gn10D8Kvr0mpxfRZ9e8/ir6GPo07Q+9Adt60N/0LY+9Adt60N/0LY+9AdN6zPTH7StD/1B2/rQH7StD/1B2/oY+jStD/1B2/rQH7StD/1B2/rQH7StD/1B0/oY/UHb+tAftK0P/UHb+tAftK2PoU/T+tAftK0P/UHb+tAftK0P/UHb+tAfNK3PQn9QXZ/Cb2stVAKXIyflX46c4H45cgN5deSPf29lIV5fjpzEfDlyQvDlyMm1lyMnql49saykz8uRkz4vR076vBw56fPq2+dqIL8aOenzcuSkz8uRkz4vR076vBw56fNq5Bvp83LkpM/LkZM+L0dO+rw68G8G8quRkz4vR076vBw56fPy2yfp83LkpM+rke+kz8uRkz4vR076vBw56fNy5Abyq5GTPi9HTvq8HDnp8+rAv5M+L0dO+rwa+UH6vBw56fPq2+dB+rwcOenzcuQG8quRkz4vR076vBw56fNy5KTPy5GTPq9Fvg8D6fNy5KTPawP/G3LS5+XISZ+XIzeQX42c9Hn57ZP0eTly0uflyEmflyMnfV6NfCR9Xo6c9Hk5ctLn5chJn5cjN5BfjZz0eXXgH0mflyMnfV6OnPR5OXLS59W3z4n0eTly0uflyEmflyMnfV6O3EB+NXLS5+XISZ+XIyd9Xo6c9Hk5ctLn1YF/Jn1ejpz0eTly0uflyEmfV98+ZwP51chJn5cjJ31ejpz0eTly0uflyEmfVyM30uflyEmflyMnfV6OnPR5deA3A/nVyEmflyMnfV6OnPR5+e2T9Hk5ctLn1cgX0uflyEmflyMnfV6OnPR5OXID+dXISZ+XIyd9Xo6c9Hl14F9In5cjJ31ejXwlfV6OnPR59e1zJX1ejpz0eTlyA/nVyEmflyMnfV6OnPR5OXLS5+XISZ9XI99In5cjJ31eHfg30uflyEmflyM3kF+NnPR5+e2T9Hk5ctLn5chJn5cjJ31ejXwnfV6OnPR5OXLS5+XISZ+XIzeQX42c9Hl14N9Jn5cjJ31ejpz0eTly0ufVt8+D9Hk5ctLn5chJn5cjJ31ejtxAfjVy0uflyEmflyMnfV6OnPR5OXLS58WBfxxIn5cjJ31ejpz0eTly0ufFt89xMJBfjZz0eTly0uflyEmflyMnfV6OnPR5NfKR9Hk5ctLn5chJn5cjJ31eHfhHA/nVyEmflyMnfV6OnPR5+e2T9Hk5ctLn1cgn0uflyEmflyMnfV6OnPR5OXID+dXISZ+XIyd9Xo6c9Hl14J9In5cjJ31ejXwmfV6OnPR59e1zJn1ejpz0eTlyA/nVyEmflyMnfV6OnPR5OXLS5+XISZ9XIzfS5+XISZ9XB34jfV6OnPR5OXID+dXISZ+X3z5Jn5cjJ31ejpz0eTly0ufVyBfS5+XISZ+XIyd9Xo6c9Hk5cgP51chJn1cH/oX0eTly0uflyEmflyMnfV59+1xJn5cjJ31ejpz0eTly0uflyA3kVyMnfV6OnPR5OXLS5+XISZ+XIyd9Xh34N9Ln5chJn5cjJ31ejpz0efXtczOQX42c9Hk5ctLn5chJn5cjJ31ejpz0eTXynfR5OXLS5+XISZ+XIyd9Xh34dwP51chJn5cjJ31ejpz0efntk/R5OXLS59XID9Ln5chJn5cjJ31ejpz0eTlyA/nVyEmflyMnfV6OnPR5deA/SJ+XIyd9Xox8GkiflyMnfV58+5wG0uflyEmflyM3kF+NnPR5OXLS5+XISZ+XIyd9Xo6c9Hk18pH0eTly0ufVgX8kfV6OnPR5OXID+dXISZ+X3z5Jn5cjJ31ejpz0eTly0ufVyCfS5+XISZ+XIyd9Xo6c9Hk5cgP51chJn1cH/on0eTly0uflyEmflyMnfV59+5xJn5cjJ31ejpz0eTly0uflyA3kVyMnfV6OnPR5OXLS5+XISZ+XIyd9Xh34jfR5OXLS5+XISZ+XIyd9Xn37NAP51chJn5cjJ31ejpz0eTly0uflyEmfVyNfSJ+XIyd9Xo6c9Hk5ctLn1YF/MZBfjZz0eTly0uflyEmfl98+SZ+XIyd9Xo18JX1ejpz0eTly0uflyEmflyM3kF+NnPR5OXLS5+XISZ9XB/6V9Hk5ctLn1cg30uflyEmfV98+N9Ln5chJn5cjN5BfjZz0eTly0uflyEmflyMnfV6OnPR5NfKd9Hk5ctLn1YF/J31ejpz0eTlyA/nVyEmfl98+SZ+XIyd9Xo6c9Hk5ctLn1cgP0uflyEmflyMnfV6OnPR5OXID+dXISZ9XB/6D9Hk5ctLn5chJn5cjJ31efPucB9Ln5chJn5cjJ31ejpz0eTlyA/nVyEmflyMnfV6OnPR5OXLS5+XISZ8XB/55JH1ejpz0eTly0uflyEmfV98+RwP51chJn5cjJ31ejpz0eTly0uflyEmfVyOfSJ+XIyd9Xo6c9Hk5ctLn1YF/MpBfjZz0eTly0uflyEmfl98+SZ+XIyd9Xo18Jn1ejpz0eTly0uflyEmflyM3kF+NnPR5OXLS5+XISZ9XB/6Z9Hk5ctLn1ciN9Hk5ctLn1bdPI31ejpz0eTlyA/nVyEmflyMnfV6OnPR5OXLS5+XISZ9XI19In5cjJ31eHfgX0uflyEmflyM3kF99LSd9Xu5y0uflyEmflyMnfV5+LSd9Xu3ylfR5OXLS5+XISZ+XIyd9Xn37XA3kVyMnfV6OnPR5OXLS5+XISZ+XIyd9Xo18I31ejpz0WR35to835NsdkBM56fMzyEebb697tHUsQF+X4fa612Ue76E79Kbp9qGYp/lOod19j9tNzrf/3O4f/FNOkm0qOQ05M8lJIk8lJ2n/peQ8jtt7nIdx+SgnTUIqOWkpXknOeZjf5bx/1a727y9jWu4XeLwHj8eZOsdj2x8/+C2X3uLS4aQlahg8VdlTOz0Tnvrx4GE4x83hXplveIoiDU/V9hRNYWJP2QnkjXvh3rfv5zs8hvnD4L3TQWKU2kOS4Sk8VdlTtLF4qranqITxVO3Bm14aT9X2FOU4nvrx4HGcbw8e5+NjmKPxxiifMcpBjY1RPmUUummM8uPB0/uDp73wMsa3MfjEMXxc7T9op3FVfVdRZeOqr7tqmefTH6W//DinHYYBMaDSgJTkGFBqQBp1DPgNA27nks5y/NGSzkH9jgGlBqSrz2vAdZpO2Mvyh2mVrh6jfMIoNtDVY5S6c7oN1Pp4qranKPXxVG1PUenjqboJzQbDU3iqsqco3l/KU+M43B48TkupdvrKV40ff93KBgpyjPLjHVb7GoMNdN54qranqLHxVG1P0XjjqR8PrvbVGBspx/FUbU9RjuOpHw9+/OUIG2m8McqnjEKNjVE+ZRTDKBjl73+r+sUYG2mncVV9V1Fl46qvu6re5oCR3hsDSg1ISY4BpQakUceA3zBgtX0vE/U7BpQakK4+sQElPwtqE7U+nqrtKVYA8NSPB9dbp54MT+Gpyp5iqSCvp2p+K3mi/cconzIKLT1Gqdx7ThTveKq2p+jS8VRlT83U43jq3+s23jONN56q7Ska7095aj+1HPdp/c1TPznS8tbhaHCswpE2rw5Hyq4vcxwPhyNdUB2O9B91OJL5q1wfjZxbhyPZrg5H8kwdjuSZOhwNjlU4kmfqcCTP1OFInqnDkTxThyN5pgrHhTxTJV8v5Jk6HMkzdTh2m2emk8zbEuPy26N/kjHIBGS6zRxFMt2miCKZbnNBkUy3k36RTLeze4nM2u00XiTT7XxdJNPtxFwkwwwckTHIBGSYgSMyzMARGWbgiAwzcESGGTggszEDR2SYgSMyzMARGWbgiIxBJiDDDByRYQaOyDADR2SYgSMyzMABmZ0ZOCLDDByRYQaOyDADR2QsDZl5mm+Pnqf7X7A832ueqXaezqO357m4V2hf5+PXo/dtvPt14/FG5uKpdj2PuZ/W5SiReXuv5+uY9u398X99u//jHx+Pd+5vUJf7h/98t1tX79afPtfj3D62DUPh3e7j6R97/8GIw3v9yz7c/vCyj9sfv/rjlV/9MVz76rfzxLVlu/uxDvfVr/t489m6T+8223699PF1X/r0ui99ft2Xbi2/9HU+X/rd5/T20pfXfenr67707XVf+v66L/141Ze+DE3fTR+/9Kbvpo9fetN308cvvem76eOX/rJ302X48t3059PW7z1t+97T9u897fjW08bhe08bv/e06XtPm7/3NPve077nkvF7Lhm/55Lxey4Zv+eS6Xsumb7nkul7Lpm+55Lpey6ZvueS6Xsumb7nkul7Lpm+55L5ey6Zv+eS+Xsumb/nkvl7Lpm/55L5ey6Zv+eS+Xsumb/nEvueS+x7LrHvucS+5xL7nkvsey6x77nEvucS+55L7HsuWb7nkuV7Llm+55Lley5ZvueS5XsuWb7nkuV7Llm+55Lley5Zv+eS9XsuWb/nkvV7Llm/55L1ey5Zv+eS9esueftf/+3f//lf/uWf//d/+Zd/++//9e///G//+h9/PXf46//y59PlXFhe7n9D/G298O1F+LPp46eMX3/K9PWnzF9/in3xKW//a/zBzTfLMN5OJBuHufBD5ttw+1e2t8XXu4e+va4gElX78+uf//nztIjtftH555/fKvz52wLDts7/+Of35/7548///H6rW7Zj+4c/H0S7an9+/OM/v0/rWRb9o3OCqPi1P3/7/f7992NGwo/w1/78uRy/f4RjFf/88Q8fq7f/MT24NIzDuZY/DvvnPjGjnUcdjOv6uY/B4+ccX39OYNjHzxm/8ZzpG8+Zv/Ec+/pz/Oi1D8vttrsP2+/nS7z9j/mvh/q1hZ37QOyuNf3roIy/XuD69adsX3/K/vWnHF9+il9RPH7K+PWnTF9/yvz1p/jDwrnx420U/PCU5etPWb/+lO3rT3HVX7Zzy8t2fHjK8eWn+NXD46eMX3+KPyoeNynXYf7wlPnrT7GvP2X5+lPWwlPG8cNTtq8/Zf/6U1z11208l3+Gf3yKXyk8fsr49adMX3+Kq/66324A62EfnmJff8ry9aesX3+Kq/42nBPiuH94yv71pxxffopfFTx+ylh4yv2PVv56yvT1p8xff4qr/nacg+zwQRe/Fnj8lPXrT9m+/pTdH2XOBWJHl+PLT/G/uP34KePXn+Kqv5/R9Lf88usp89efYl9/yvL1p6yFpywfrmP+9+weP2X/+lNc9Y/x9guVx8fPi/+VpcdPGb/+lOnrT3HVP+bbzeKwDzc+/2sRj5+yfP0p69ef4qr/vg/5WD++/f3rTzm+/BR/q/Pjp4yFp2wfrmP+1t7HT5m//pSgMTiD3zisHz4xwSbSwpPW7zxp+/KT3v6X/fXYYDVxG95/S3a+u+D+/H5IsJb46Elv/2v5UYu4L3U9bvC35X4Y9jYx2XrWstPw22P/c9SG1Pvzx1P/vN+x1Pvz43P//PTcPz8/98/bc//88tw/v/7pn1+m955gKzx2HN4/6cPwnsSnZY9rKNWL2Vt6MUdDL+b/b+/sdiTFkSj8LnudFzgcdtjPMkqNZnpbq5Za06PemZX2ot99yezCUNiBlyOSQpibUlaWv4rwITCBf223rzOGkzNkM2fMkZyhIzljj+QM7+tMWsBrOpbMGXckZ/yRnJEjORM+zJnJKeKDM/FAznB3JGd2boElJmdCyJyhIzljj+QMH8aZ/jf/fKcr9yR7k3zy5v2+FOqrVAUqvyDVIINAhEAWgRiBHAJ5BBIEQiKCkIiwSERYJCIsEhEWiQiLRIRFIsIqEcEmQWwzSBAoIFAEIFYiQkZIKIMMAhECWQRiBHII5BFIECggUAQgh0SEQyLCIRHhkIhwSEQ4JCIcEhHKUKlPQ5L9R59B5TAKYRjKkRCzHat8BCyVxyVF0t5Y/ceYQeXrJJzcE5e5Vx41rEEOgTwCCQIFBIpVyNc2L2NyQ2mm9zPtCmkudynP5eluW1Efm/w4d8yx3KFjuWOP5Q4fyx33Unfu2rD0phbk5RbCWgt3bdi7AsUOgQwCKbfpuDBAYpdBjEAOgTwCCQKVL+64cZ4EydWLAGTKe85UKQNRBFEWohiiynERXEoOg4s55SFKICpAVEQo00GUgSiCKAtRDFFQbBgoNgwUGwaKDQPFBkGxofRdLr8SGaXzskKVeyZYxrUQk/vf/JxDJM/+X1oPhidYjKvKepr4KFp+m3CBBjX7j+NLKYme8lcYAzAEMBZgGGAcwHiAEYAJAAPEQQTiIAJxEIE4iEAcRCAOIhAHEYiDqKxKsUNL5OKk1XtjAsDE9YySytUgg0BUhSaTTgdI0S4Mo7i+M3O9lRTEk08QxRwyCEQIZAFImRbpbFoQ4yb73g+QQSBCIItAjEDlCS/O+wRNx2jfII9AgkABgWIVinYOKXOixsEu7ym7CZW5SxXIIZBHIEGgsnp98CTIZw2LMoWgAikrzEJ6P+xiBilr/3wcXub9dJ+SATIIRAikrADkJHlwWcBqawCXIYdAHoEEgQICRQAqrwesQcp1MilgA2VthLKOrku7ukjns0eNMgRVgQJwayjjVsuQMm5VgQwCEQJZBGIEcgjkEQhp9wSJCEEiIiAREZCICEhEBCQiQr3dy2/CIAgUECgCUFTavXGxfeyyp3tUJjinbYt8nJxLM0AegQSBAgIpE3ApjJCfQdR1CGQQiBDIIhAjkEMg5TqFMfaCy6BYfRLy/M4lpQO8AhkEIgSyCMQI5BDII5DyfBoHDvOMhZSO78U0h0wEIOoQyCAQIZBFIEYgh0BADkuinBRK42qw/nPMMINhXMZs2t+t/2yz5kU7ULqGeQwTDAsYFiFMO+G1hhkMIwxTDs60qZvigWWPIO1UyRrmMMxjmGBYWI/9ePTvPkore+J2zo6bETqe33XKlrg1ykIUQ5SDKA9RAlEBoiJCKU2yi3F4SvcdIzTvn1Ja5BpFEGUhqhwbfck4UpxRDqKUvar7p1KijJ83WEqj6k0Y60XdPKtS2tQaRRBlIUpRnphHys3bKqU9rVEeogSiAkRFhNIO46xQSmyQCyPlswFKgigLUVpsTO6vPkucUqVjZ4mTkT4RDZXibnzj6D9nY1faiYof6pM/oE9yQJ/CAX2Kx/PJaOcRfqxT5ohO0RGdsh/i1Lgqv3cqG/vqtmrMu9Ep8ZkVt4sVv4sV2cVK2MVK3MOK6XaxYnaxorUsZpLUUY5ZDGMMcxjmMUwwLGBYhDDtrMMaZjAMixLCokQ765DSIlXjrcmGyrSzDmuYxzDBsABh2qGFNo6NAWfTSY12aGENUyThsbPTs80SAu2oPSfj65fLx6+1o/ZqmMEwwjCLYYxhDsM8hgmGKaHs04Y5/WebZWjaUXt+ElzemeXn2obrQY12iN/HOWSO5hAdzSF7NIf4aA65oznkX+vQXZ3MubGNsION9U3kXZ0sWscMhmliyzjA4CWbZ6qM7XgZjxPrqeypIVoTFMeHjXSZk2IxjDHMYZjHMMGwgGERwrQBpRqmxKTQNEqyDFQbUqphFsMYw5QoET++FUnIZt9rw0o1TDAsYFiEMG1oqYYZDFOiJHQjFkzWcmmjSzWMMcxhmBYlcYplubw2jlLDAoZFBCNtvKCGGQwjDNOiZOy39oElwxjDHIZ5DFOiJNAUCxkWMCxCmNY7W8MMhhGGWQzTomSSc4VgMsxhmMcwwTAtSvwU+z+n2VYxrf+0hhkMIwyzGMYYpuUlPKYz4f3i0sKAg5WQMjsrMZsRqXW3rrQSunSj2EBZK6z1zm5sJexiJe5hReth3tiK2cUK7WLF7mKFt7FCMlrJJ+Vat31dClb8LlZkFythFysb3fscRyvZpE/ibhcrZhcrtIsVu4sV3sWK28WK38XKRve+n9yVkr0Hcdi+LgUrcQ8rrtvFitnFykb3fkxTZmzssjbZ2V2s8C5W3C5W/C5WZBcrYRcrcQ8rfpt7P3bjXRlN1mnhzfZ1KVihXazYXazwLlYcMhJH3mOYYFjAsAhh2OCktha4ihGGWQxjDMOiRLAoESxKBIsSwaIkYFGijTIuz6rT1gJ7HufNe/ZdhjkM8xgmGBYwLEKYNspYwwyGEYZZDMOiJGJRErEoiViURCxKIhQlVhmHqGzsYJVxiBpG0L4CliyGMYY5DPMYJhgWMAzafcLaDsO03ScW90ywljDMYhhjmMMwYPeJH4+FE4/S2m5Dko7xMzTdTb10EIp4SudYeQnvSt8fs/Feb8K/3oS83kR4vYn4chPaDkxbmjCvN0GvN2G3MJE2VRMhVylt0swbmvznPq372V16LHfcsdzxx3JHjuVOOJY78VDu2O5Y7phjuUPHcqfeKttYMcBumCfEYjID/GoD7tUG/KsNyKsNhFcbiC82wN2rDZhXG6BXG3j1ncxb3MmdSQbsOwN52dDZoeEK3XT6IZVKWze4wdN91HyhaP8PTGoRJwcRFws7a9/KOsvTonf1CPCWFfGXIjNF5FJkpki4FJkpEi9F3iviukuRmSLmUmSmCF2KzBSxlyIzRfhSZKbIlbPOFWkzZ/XpcMzpJoo/FWkzZ11SpM2cdUmRJnNWn8r690V7RXyTOeuiIk3mrIuKNJmzLirSZM66qAhfiswUaTJnXVSkyZx1UZEmc9ZFRZrMWRcVuXLWmSJy5axzRa6cda7IlbPOFWkgZ71rx4+dr5oNZJePajaQMj6q2UAe+KhmA8ndXTuV8HTVDA2kYXft3MfzVbOBhOmunax5vmpyG9VsIwsKbWRBoY0sKLSRBYU2sqDYRhYU28iC4nkeKDxW09G8mqdpgiSdw0XCeOG7dnrw2TV5HEzyVvixX/ZME+X04tZFOU1buKUop3l/3FKU07xtrhJFwjBx1YSOMlH4EiUX5TSJx5ainOa9d0tRTvOWvKUoTSa0NVHazGiXRTFtZrQVUdrMaCuitJnRVkS5MtqCKHyJkotyZbQFUa6MtiDKldEWRLky2oIoV0abi0JtZrTRpAM5os1FaTOjrYjSZkZbEeU0Tx9rhmaCLJmsnqd5oFTqeZpnxHI97Wma/Uo9T9OSV+p5msa5Us/T9CBU6smnmUoSY6qnocrDtktP5n6kwmWinGd+zYainGd65xpRDKehc+OyoXN7nsmgG4pynqmjG4pynomm24nC55mWukoUoSRKzBpaPs/ijzWicDfsiNV/zCOFL1FyUdrMUyqitJmnVERpM09xNj19nJNMlDbzlIoobeYpy6KcaM/sDUU5z2KbDUU5zwLlDUVpM6OtiMKXKLkobWa0FVHazGgrolwZbUGUK6MtiHJltLkoJ9pRe0NRroy2IEqjGa2k6TguxkyURjPaZVH4EiUXpdGMdlmUNpM3O07xszbroz3RptIbitJm8rYsyom2lt5QlDaTt4oobSZvFVHaTN4qovAlSi5Km8lbRZQ2uyMrolwZbUGUK6MtiNJoRus4ieKzTqYT7dK9oSiNZrTLojSa0S6L0mhGuywKX6LkojSa0S6Lck0ZzaeMnmif8w1FaTOjrYjSZka7LMqJtiJXRXnWs4F87FnPBlKsZz25iXqSsu0kp2q6bo6Ut9qLPJiJPrNS3ohuGeH1iFuPFFOe5SXAVN4CqwYFBIoAVN5iqAYZBCIEsgjECOQQCIkIQiKCkIggJCIsEhEWiQhlv4il5qS89UI0Q9sZbY7IeiSsR+JqpLyQdxkxqxstXt8A8/oGmNc3wLy+AS4vU1xGZD1Svvp+CMsoMUPiaqS8PGoZMesRWo/Y9QivR2pXv4Csv/pu/dUvTwdfRuJqpDyVeBlZf+/79fe+X3/v+/X3vl9/7/v1V9+vv/p+/dX366++rL/6sv5SyvpLKesvpay8lD8eG7k9SpbT/BCcG15tIrl3L033H/2v//nt+5fffv/6+d899Pjr3398+uvLtz/efv3rv38Of/n9+5evX7/869c/v3/79Pmff3///OvXb58ef/tH9/jxsE5ys3J/7Kff/2LDje3Tvad33dvf6fEVpa8sPZD+K5u+6l27GfP8kov/menGzz+7xLju5tzjK//m0C+Gw834eH/+518MuVvfATv8h74D9mbYPH41z7L9X3/+Sxnd4JuJj6/C+JXc6Ol/HKz0z8NbH+RvVrzcJHnZZ4u3Pr8abPSP9Fv/wH0K0g24ZXuznt/w/hq7mOTremU6GXDrQ69A98RNsh5MX4ZSrWLvzM9fnxYl3Ch0kwh5FnJ9mf7K91f/fw==",
|
|
3352
|
+
"bytecode": "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NRADqoEdgKTfsRVPcdFdH4l5J+HTZ++waaDVQG9gDpGNd2fh9SC+7Mwwhe3MPH0i+LIzgxoATt1qZyAPdxGuBgjrLgw83JVJDewaxmpzMvaY/l3e3VoxBrwbw2TcX/hkTLj7M0zGplgRjYFibQHOAbDhQOttc8O6TBt2QCvGgAcwbNjdhW9Ywr17hDbs7sI3LLrehQutvBTwftsewPzZbFJ7tOJpUnu2Ygx4T4YmtZfwJkW497LUpJzyrn+ayV4MMn8XYI2Q9d5buMynRrc3g7zaR7isJMz7MODel0lW7mu4XYvOCXfNEHt8b4ZbM8gBZ29g7xgYgT00kGEPDWLaQ4MMD2rRORkIVqRVhljp19vD3+yn/779tR2gLa0toy2rLactry3QdqC2g7QdrO0QbYdqO0zb4doGaxui7QhtR2o7StvR2o7Rdqy247QN1TZM2/HaTtB2oraTtA3XdrK2U7SN0DZS26naTtN2urZR2kZrG6PtDG1jtY3Tdqa2s7Sdre0cbedqG6/tPG0TtE3Udr62C7RdqO0ibRdru0TbpdomaZus7TJtl2u7QtuV2q7SdrW2a7Rdq+06bddru0Hbjdpu0naztlu03aptirbbtN2u7Q5td2q7S9vd2u7Rdq+2qdqmabtP2/3aHtD2oLaHtD2s7RFt07XN0Paotse0Pa7tCW1PantK29PaZmp7Rtuz2p7T9ry2F7S9qO0lbS9re0Xbq9pe0/a6tje0vantLW1va3tH27va3tP2vrYPtH2o7SNtH2v7RNun2j7TNkvb59q+0Paltq+0fa3tG23favtO22xt32v7QduP2n7S9rO2X7T9qm2OtrnaftP2u7Z52uZr+0Pbn9r+0rZA29/aKlprXmproa2ltkptVdqqtdVoq9VWp62Vttba2mhrq62dtnptDdraa+ugbXltHbWtoG1FbStpW1nbKtpW1baattW1raFtTW1raeukbW1tnbWto21dbetp66JtfW0baNtQ20baNta2ibZNtW2mras2R5vS5mrztMW0xbUltPnaktpS2jbXtoW2LbVtpa2btu7attbWQ1tPbdto21bbdtp6aeutrY+27bX11dZP2w7adtS2k7adte2ibVdtu2nrr22Att217aFtT217adtb2z7a9tU2UNsgbftp21/bAdrS2jLastpy2vLaAm0HajtI28HaDtF2qLbD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S95JlrxzLHltLHlFlrzulrxSS95oS950S96jlrwFlrzFlryPLHlrLHk/WPL+tuTVT42et68l7yhLXrYlr5kl7xJL3rWWvC6WvDsseSPdPNM8ONbyu2lunmn83WXJu9eSd78lb5Yl7zFL3pOWvLmWvGcteQsseS9b8l615L1uyVtsyXvbkveuJe8DS99+avGJlZa8VZY6G6RFz2uUFr3OJMvvUiy/S7P8bm9L3r6WOve3/K6J5XcHWX53qCXvcEudR1p+d7Tld8dafneCJS9sqTPD8rtMy++yLb/Ls+SdbKnzVMvvTrf87gzL75pZ8s621HmO5XfnWn53vuV3F1nyWlnqvNTyu9aW37W1/K69Je9KS51XW353reV3BZbfDbf87kU3z6QHf7PUWTM9el6qJe8QS17YkneaJe98S157S951lrybLXkDLXnjLXn3WfJmW/JesOQtteR9Zslbb8n7yZJXY6/oeY0teU0secdZ8k6y5J1jyWtjySuy5HW35PV380zjaLDld2PcPGNcbMmbZMmbYsm715J3vyVvpiXvEUve45a82Za8Zy15Cyx5Cy15L1jyXrHkvWbJe9PSt+9afOIDS97Hljr/tOTtiJLn3uLaub5fbe6t3F3PUKuly2oZZFP3/+HqbU4dVC91/bnhrMw6ofIbMf9InVDZcxtc9vHqZKg/7C6xCZ1VWla/3ha1NXD/jx572PUbtQQkGf0G1xFy69B/6+Vzti83nJnp1Z/AUL963XQDr42lu9vPy0soLX9snJeI8jyOyp77afbh8C9sHx7/cna+RzOaT6l2HoHsoftNnGYDJo5OnHa8kHYsnXddxj5RhOK043l8dPt4afUsmHvpLdShuMdZXbv06J5f2KNll5t65HcpLMZNwNU2NjQRm8BURi+nl29gyPdo1kP7a5WGyjVt51+0zxsW3jCpjctreXVQXkJpeV513f8noOPgujweiVp5L37xToc10W+83zc2HL+mdvxyvA37sAvpdcUb9nnl1WrZJm5a2dU7zSWUltVH5ZI5ueGwx8+zfWKovHuGtOMnauWPdf9fV2uvN+013UOeJTn5TkkkvyQ/K7+oKLMwP1mrH9tM2elgNy1b1mRmx2SNfaOSNQ1QObU1Q/XFaXnNDceSLW/CGSkG/iaZEm8op49x/RSmn+JCUeownUvqhHbvt6Z71mZH36G309Y2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",
|
|
3353
|
+
"debug_symbols": "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",
|
|
3408
3354
|
"brillig_names": [
|
|
3409
3355
|
"get_contract_instance_internal",
|
|
3410
3356
|
"decompose_hint",
|
|
3411
3357
|
"lte_hint",
|
|
3412
|
-
"get_public_keys_and_partial_address",
|
|
3413
3358
|
"notify_created_note_oracle_wrapper",
|
|
3414
|
-
"
|
|
3359
|
+
"debug_log_oracle_wrapper",
|
|
3415
3360
|
"get_random_bytes",
|
|
3416
3361
|
"random",
|
|
3417
3362
|
"field_less_than",
|
|
@@ -3423,15 +3368,13 @@
|
|
|
3423
3368
|
"directive_invert",
|
|
3424
3369
|
"directive_to_radix"
|
|
3425
3370
|
],
|
|
3426
|
-
"verification_key": "
|
|
3427
|
-
"artifact_hash": "
|
|
3371
|
+
"verification_key": "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",
|
|
3372
|
+
"artifact_hash": "e7552d296af009c9ed2e2ca261de6124cad0b1c1-75564340eaf6aa0d51ac4e5113d29612-client-ivc-true"
|
|
3428
3373
|
},
|
|
3429
3374
|
{
|
|
3430
|
-
"name": "
|
|
3431
|
-
"is_unconstrained":
|
|
3432
|
-
"custom_attributes": [
|
|
3433
|
-
"private"
|
|
3434
|
-
],
|
|
3375
|
+
"name": "compute_note_hash_and_optionally_a_nullifier",
|
|
3376
|
+
"is_unconstrained": true,
|
|
3377
|
+
"custom_attributes": [],
|
|
3435
3378
|
"abi": {
|
|
3436
3379
|
"error_types": {
|
|
3437
3380
|
"11091894166229312484": {
|
|
@@ -3439,18 +3382,10 @@
|
|
|
3439
3382
|
"item_types": [],
|
|
3440
3383
|
"length": 20
|
|
3441
3384
|
},
|
|
3442
|
-
"14514982005979867414": {
|
|
3443
|
-
"error_kind": "string",
|
|
3444
|
-
"string": "attempt to bit-shift with overflow"
|
|
3445
|
-
},
|
|
3446
3385
|
"16761564377371454734": {
|
|
3447
3386
|
"error_kind": "string",
|
|
3448
3387
|
"string": "Array index out of bounds"
|
|
3449
3388
|
},
|
|
3450
|
-
"1705275289401561847": {
|
|
3451
|
-
"error_kind": "string",
|
|
3452
|
-
"string": "Mismatch note header storage slot."
|
|
3453
|
-
},
|
|
3454
3389
|
"17843811134343075018": {
|
|
3455
3390
|
"error_kind": "string",
|
|
3456
3391
|
"string": "Stack too deep"
|
|
@@ -3463,37 +3398,173 @@
|
|
|
3463
3398
|
"error_kind": "string",
|
|
3464
3399
|
"string": "attempt to add with overflow"
|
|
3465
3400
|
},
|
|
3466
|
-
"
|
|
3467
|
-
"error_kind": "string",
|
|
3468
|
-
"string": "push out of bounds"
|
|
3469
|
-
},
|
|
3470
|
-
"6869395374906889440": {
|
|
3471
|
-
"error_kind": "string",
|
|
3472
|
-
"string": "Mismatch note header contract address."
|
|
3473
|
-
},
|
|
3474
|
-
"7233212735005103307": {
|
|
3401
|
+
"8270195893599566439": {
|
|
3475
3402
|
"error_kind": "string",
|
|
3476
|
-
"string": "
|
|
3403
|
+
"string": "Invalid public keys hint for address"
|
|
3477
3404
|
}
|
|
3478
3405
|
},
|
|
3479
3406
|
"parameters": [
|
|
3480
3407
|
{
|
|
3481
|
-
"name": "
|
|
3408
|
+
"name": "contract_address",
|
|
3482
3409
|
"type": {
|
|
3483
3410
|
"fields": [
|
|
3484
3411
|
{
|
|
3485
|
-
"name": "
|
|
3412
|
+
"name": "inner",
|
|
3486
3413
|
"type": {
|
|
3487
|
-
"
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3414
|
+
"kind": "field"
|
|
3415
|
+
}
|
|
3416
|
+
}
|
|
3417
|
+
],
|
|
3418
|
+
"kind": "struct",
|
|
3419
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
3420
|
+
},
|
|
3421
|
+
"visibility": "private"
|
|
3422
|
+
},
|
|
3423
|
+
{
|
|
3424
|
+
"name": "nonce",
|
|
3425
|
+
"type": {
|
|
3426
|
+
"kind": "field"
|
|
3427
|
+
},
|
|
3428
|
+
"visibility": "private"
|
|
3429
|
+
},
|
|
3430
|
+
{
|
|
3431
|
+
"name": "storage_slot",
|
|
3432
|
+
"type": {
|
|
3433
|
+
"kind": "field"
|
|
3434
|
+
},
|
|
3435
|
+
"visibility": "private"
|
|
3436
|
+
},
|
|
3437
|
+
{
|
|
3438
|
+
"name": "note_type_id",
|
|
3439
|
+
"type": {
|
|
3440
|
+
"kind": "field"
|
|
3441
|
+
},
|
|
3442
|
+
"visibility": "private"
|
|
3443
|
+
},
|
|
3444
|
+
{
|
|
3445
|
+
"name": "compute_nullifier",
|
|
3446
|
+
"type": {
|
|
3447
|
+
"kind": "boolean"
|
|
3448
|
+
},
|
|
3449
|
+
"visibility": "private"
|
|
3450
|
+
},
|
|
3451
|
+
{
|
|
3452
|
+
"name": "serialized_note",
|
|
3453
|
+
"type": {
|
|
3454
|
+
"kind": "array",
|
|
3455
|
+
"length": 5,
|
|
3456
|
+
"type": {
|
|
3457
|
+
"kind": "field"
|
|
3458
|
+
}
|
|
3459
|
+
},
|
|
3460
|
+
"visibility": "private"
|
|
3461
|
+
}
|
|
3462
|
+
],
|
|
3463
|
+
"return_type": {
|
|
3464
|
+
"abi_type": {
|
|
3465
|
+
"kind": "array",
|
|
3466
|
+
"length": 4,
|
|
3467
|
+
"type": {
|
|
3468
|
+
"kind": "field"
|
|
3469
|
+
}
|
|
3470
|
+
},
|
|
3471
|
+
"visibility": "public"
|
|
3472
|
+
}
|
|
3473
|
+
},
|
|
3474
|
+
"bytecode": "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",
|
|
3475
|
+
"debug_symbols": "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",
|
|
3476
|
+
"brillig_names": [
|
|
3477
|
+
"compute_note_hash_and_optionally_a_nullifier"
|
|
3478
|
+
]
|
|
3479
|
+
},
|
|
3480
|
+
{
|
|
3481
|
+
"name": "sync_notes",
|
|
3482
|
+
"is_unconstrained": true,
|
|
3483
|
+
"custom_attributes": [],
|
|
3484
|
+
"abi": {
|
|
3485
|
+
"error_types": {
|
|
3486
|
+
"17843811134343075018": {
|
|
3487
|
+
"error_kind": "string",
|
|
3488
|
+
"string": "Stack too deep"
|
|
3489
|
+
}
|
|
3490
|
+
},
|
|
3491
|
+
"parameters": [],
|
|
3492
|
+
"return_type": null
|
|
3493
|
+
},
|
|
3494
|
+
"bytecode": "H4sIAAAAAAAA/9VUyw6CMBBseURBOaiJ3kz8gyIYOJJ49x8akKMe8OKNT5eabbqpVRKlJkzSbEs3szNlW0oUKESPvAH9tGnIFdhBDCA6aN/tRgFr9hviQKs7JH/O0iQw+BtQ/5OfWtIvIPktnT+bAM+xVfzYi6w77UaIesKWZ/nPbHpe9fhc/MFnh32k1caghm+uIYci3RuYR4Y8iRlRd9prh/eV5YzJei7w++RVO67va/lrWIeafvmOFV/qrDMe1wmv+YFXVVrypcYv4KBzGnMvbGHe1wvY45yo3mjul/J0vZ0b0gNB8gCVxsvQjgYAAA==",
|
|
3495
|
+
"debug_symbols": "ndLBCoQgFAXQf3nrFmla2a/EEFYWgmiYDQzRv49FMzRDG908vOJ5bu4KvWiXsZF6MDNU9QrKdNxJo31atwRaK5WSY3O9hnQfCB3v54nrPc6OWwcVokUCQvf+lFPvB6kEVCQl2yMBhMNJFk5IOKHBBN/+wghip2GE5F+EaHogGoPyGFTEoDICZbc9YDQtP4ji4hdtPj65lbxV4uzZsOjuUjv3msRfAydrOtEvVuxdvNTQzxoVCcZ+rV/9Bg==",
|
|
3496
|
+
"brillig_names": [
|
|
3497
|
+
"sync_notes"
|
|
3498
|
+
]
|
|
3499
|
+
},
|
|
3500
|
+
{
|
|
3501
|
+
"name": "entrypoint",
|
|
3502
|
+
"is_unconstrained": false,
|
|
3503
|
+
"custom_attributes": [
|
|
3504
|
+
"private"
|
|
3505
|
+
],
|
|
3506
|
+
"abi": {
|
|
3507
|
+
"error_types": {
|
|
3508
|
+
"11091894166229312484": {
|
|
3509
|
+
"error_kind": "fmtstring",
|
|
3510
|
+
"item_types": [],
|
|
3511
|
+
"length": 20
|
|
3512
|
+
},
|
|
3513
|
+
"14514982005979867414": {
|
|
3514
|
+
"error_kind": "string",
|
|
3515
|
+
"string": "attempt to bit-shift with overflow"
|
|
3516
|
+
},
|
|
3517
|
+
"16761564377371454734": {
|
|
3518
|
+
"error_kind": "string",
|
|
3519
|
+
"string": "Array index out of bounds"
|
|
3520
|
+
},
|
|
3521
|
+
"1705275289401561847": {
|
|
3522
|
+
"error_kind": "string",
|
|
3523
|
+
"string": "Mismatch note header storage slot."
|
|
3524
|
+
},
|
|
3525
|
+
"17843811134343075018": {
|
|
3526
|
+
"error_kind": "string",
|
|
3527
|
+
"string": "Stack too deep"
|
|
3528
|
+
},
|
|
3529
|
+
"2920182694213909827": {
|
|
3530
|
+
"error_kind": "string",
|
|
3531
|
+
"string": "attempt to subtract with overflow"
|
|
3532
|
+
},
|
|
3533
|
+
"5019202896831570965": {
|
|
3534
|
+
"error_kind": "string",
|
|
3535
|
+
"string": "attempt to add with overflow"
|
|
3536
|
+
},
|
|
3537
|
+
"5727012404371710682": {
|
|
3538
|
+
"error_kind": "string",
|
|
3539
|
+
"string": "push out of bounds"
|
|
3540
|
+
},
|
|
3541
|
+
"6869395374906889440": {
|
|
3542
|
+
"error_kind": "string",
|
|
3543
|
+
"string": "Mismatch note header contract address."
|
|
3544
|
+
},
|
|
3545
|
+
"7233212735005103307": {
|
|
3546
|
+
"error_kind": "string",
|
|
3547
|
+
"string": "attempt to multiply with overflow"
|
|
3548
|
+
}
|
|
3549
|
+
},
|
|
3550
|
+
"parameters": [
|
|
3551
|
+
{
|
|
3552
|
+
"name": "inputs",
|
|
3553
|
+
"type": {
|
|
3554
|
+
"fields": [
|
|
3555
|
+
{
|
|
3556
|
+
"name": "call_context",
|
|
3557
|
+
"type": {
|
|
3558
|
+
"fields": [
|
|
3559
|
+
{
|
|
3560
|
+
"name": "msg_sender",
|
|
3561
|
+
"type": {
|
|
3562
|
+
"fields": [
|
|
3563
|
+
{
|
|
3564
|
+
"name": "inner",
|
|
3565
|
+
"type": {
|
|
3566
|
+
"kind": "field"
|
|
3567
|
+
}
|
|
3497
3568
|
}
|
|
3498
3569
|
],
|
|
3499
3570
|
"kind": "struct",
|
|
@@ -3581,7 +3652,7 @@
|
|
|
3581
3652
|
}
|
|
3582
3653
|
},
|
|
3583
3654
|
{
|
|
3584
|
-
"name": "
|
|
3655
|
+
"name": "blobs_hash",
|
|
3585
3656
|
"type": {
|
|
3586
3657
|
"kind": "field"
|
|
3587
3658
|
}
|
|
@@ -3819,7 +3890,7 @@
|
|
|
3819
3890
|
}
|
|
3820
3891
|
],
|
|
3821
3892
|
"kind": "struct",
|
|
3822
|
-
"path": "authwit::aztec::protocol_types::
|
|
3893
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
3823
3894
|
}
|
|
3824
3895
|
},
|
|
3825
3896
|
{
|
|
@@ -3912,6 +3983,27 @@
|
|
|
3912
3983
|
"kind": "struct",
|
|
3913
3984
|
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
3914
3985
|
}
|
|
3986
|
+
},
|
|
3987
|
+
{
|
|
3988
|
+
"name": "max_priority_fees_per_gas",
|
|
3989
|
+
"type": {
|
|
3990
|
+
"fields": [
|
|
3991
|
+
{
|
|
3992
|
+
"name": "fee_per_da_gas",
|
|
3993
|
+
"type": {
|
|
3994
|
+
"kind": "field"
|
|
3995
|
+
}
|
|
3996
|
+
},
|
|
3997
|
+
{
|
|
3998
|
+
"name": "fee_per_l2_gas",
|
|
3999
|
+
"type": {
|
|
4000
|
+
"kind": "field"
|
|
4001
|
+
}
|
|
4002
|
+
}
|
|
4003
|
+
],
|
|
4004
|
+
"kind": "struct",
|
|
4005
|
+
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
4006
|
+
}
|
|
3915
4007
|
}
|
|
3916
4008
|
],
|
|
3917
4009
|
"kind": "struct",
|
|
@@ -4844,7 +4936,7 @@
|
|
|
4844
4936
|
}
|
|
4845
4937
|
},
|
|
4846
4938
|
{
|
|
4847
|
-
"name": "
|
|
4939
|
+
"name": "blobs_hash",
|
|
4848
4940
|
"type": {
|
|
4849
4941
|
"kind": "field"
|
|
4850
4942
|
}
|
|
@@ -5082,7 +5174,7 @@
|
|
|
5082
5174
|
}
|
|
5083
5175
|
],
|
|
5084
5176
|
"kind": "struct",
|
|
5085
|
-
"path": "authwit::aztec::protocol_types::
|
|
5177
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
5086
5178
|
}
|
|
5087
5179
|
},
|
|
5088
5180
|
{
|
|
@@ -5175,6 +5267,27 @@
|
|
|
5175
5267
|
"kind": "struct",
|
|
5176
5268
|
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
5177
5269
|
}
|
|
5270
|
+
},
|
|
5271
|
+
{
|
|
5272
|
+
"name": "max_priority_fees_per_gas",
|
|
5273
|
+
"type": {
|
|
5274
|
+
"fields": [
|
|
5275
|
+
{
|
|
5276
|
+
"name": "fee_per_da_gas",
|
|
5277
|
+
"type": {
|
|
5278
|
+
"kind": "field"
|
|
5279
|
+
}
|
|
5280
|
+
},
|
|
5281
|
+
{
|
|
5282
|
+
"name": "fee_per_l2_gas",
|
|
5283
|
+
"type": {
|
|
5284
|
+
"kind": "field"
|
|
5285
|
+
}
|
|
5286
|
+
}
|
|
5287
|
+
],
|
|
5288
|
+
"kind": "struct",
|
|
5289
|
+
"path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
|
|
5290
|
+
}
|
|
5178
5291
|
}
|
|
5179
5292
|
],
|
|
5180
5293
|
"kind": "struct",
|
|
@@ -5193,8 +5306,8 @@
|
|
|
5193
5306
|
"visibility": "databus"
|
|
5194
5307
|
}
|
|
5195
5308
|
},
|
|
5196
|
-
"bytecode": "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",
|
|
5197
|
-
"debug_symbols": "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1Tr/5PU3t7RqnX/y+9/c2qp1/snvf+OLq57zQ3xz1fP551ZXrfNP/vw5vrzq+fkb3141mX/y+pvbX7XOP3n9zW2wWuef/P43t8OqLLklVuv8k9//xtdYPeeH+B6ryfzD19/J/JM/f46vspqcv8nrb26Z1Tr/5PU3t85qnX/y+ptbaLXOP/n9b26l1Tr/5Pe/8aVWz/khvtVqMv/kz59ze63KEl9s9fz8jW+2msw/ef3N7bZa55+8/ua2W63zT37/m9tvtc4/+f1vbsNVWeIrrp7zQ3zH1WT+yZ8/57ZcrfNPXn/je64m809ef3Obrtb5J6+/uV1XZcktu1rnn/z+N7fuap1/8vvf+MKr5/wQ33g1mX/y58+5nVfr/JPX3/jWq+fzz629WuefvP7mFl+t809ef3Orr9b5J7//zS2/Wuef/P43vv7qOT/E9189nX9J7r8qyf1XJb7/6un5W+L7rybzz11/S3L/VUnuvyrJ/Vcluf+qJPdfleT+q5Lcf1Xi+6+e80N8/9Vk/uHr72T+uZ8/l/j+q8n5m7z+JvdfleT+q5Lcf1WS+69Kcv9VSe6/Ksn9VyW5/6rE918954f4/qvJ/HM/fy7J/Vclvv/q+fkb3381mX/y+pvcf1WS+69Kcv9VSe6/Ksn9VyW5/6ok91+V+P6r5/wQ3381mX/y58/J/Vclvv9qcv4mr7/J/Vcluf+qJPdfleT+q5Lcf1WS+69Kcv9VSe6/KvH9V8/5Ib7/ajL/5M+fk/uvSnz/1eT8TV5/k/uvSnL/VUnuvyrJ/Vcluf+qJPdfleT+q5Lcf1Xi+6+e80N8/9Xz+Sf3X5Xk/qsS33/1/PyN77+azD95/U3uvyrJ/Vcluf+qJPdfleT+q5Lcf1WS+69KfP/Vc36I77+azD98/Z3MP/nz5/j+q8n5m7z+JvdfleT+q5Lcf1WS+69Kcv9VSe6/Ksn9VyW5/6rE918954f4/qvJ/JM/f07uv6rx/VdPz98a3381mX/u+luT+6/qkrv+1uT+q5rcf1WT+69qcv9VTe6/qvH9V8/5Ib7/ajL/3M+fa3L/VY3vv5qcv8nrb3L/VU3uv6rJ/Vc1uf+qJvdf1eT+q5rcf1WT+69qfP/Vc36I77+azD/38+ea3H9V4/uvJudv8vqb3H9Vk/uvanL/VU3uv6rJ/Vc1uf+qJvdf1eT+qxrff/WcH+L7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0bznk7QkltKjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLobznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p43lPe8obznDeU9byjveVsUlZbEUg3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKed5T3vKO85x3lPe8o73lfFJWWxFId5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU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cnl1H6VdX2y/0kav3/umjV7r900bnQv2TRudIfZNG5039k0bnU32TRudY3ZNu4snzapeXm06JmnLWD7eu8mnV9vdV49yJYax0sPfl7ag0lZUWkGlVVTahkrbUWkNldZRaQcpraFYylAsZSiWMhRL7eLjy5MWxVKGYilDsZShWMpQLOUolnIUSzmKpRzFUrt4FPOkRbGUo1jKUSzlKJZyFEsNFEsNFEsNFEsNFEvt4r/MkxbFUgPFUgPFUgPFUoPEUnUhsVRdSCxVFxJL1YXEUnVRVFoSS9WFxFJ1IbFUXUgsVRcUSxUUSxUUSxUUSxUUS+3im82TFsVSBcVSBcVSBcVSBcVSFcVSFcVSFcVSFcVSu3iC86RFsVRFsVRFsVRFsVRFsZSgWEpQLCUolhIUS+3id86TFsVSgmIpQbGUoFhKUCylKJZSFEspiqUUxVK7eLnzpEWxlKJYSlEspSiWUhRLNRRLNRRLNRRLNRRL7eI9z5MWxVINxVINxVINxVINxVIo73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPa8o73lFec8rynteUd7zivKeV5T3vKK85xXlPReU91xQ3nNBec8F5T2XRVFpSSwlKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeK8p4rynuuKO+5orznuigqLYmlFOU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPe8obznDeU9byjveUN5z9uiqLQklmoo73lDec8bynveUN7zhvKeN5T3vKG8520f77nJNe1ok7TNlsvaNCsfa7NG/zUljTelFm9KPd6ULN6UPN6URrgp7aOe3ndKe9QcX+zyapc6vQq3T+/9OUDfFKBmDyDZA+h3B6iL9l+vrssokwDF12lf39ykPy/kdQ12ffe/Wp/15T8DN1rgTgtstMBOCzxggXdRNacKXGiBKy2w0AIrLTCNtIRGWkIjLTkWaa23hHK9OxS5jXsszprF1WNR1jTusRhrGvdYhDWNeyy+msZVVtxjsdU07rHIahr3WFw1jRudqoZIvU5l/Tb4NkF0UPri1+Ferl+He/341uDX1+EtOiftmzY6Ju2bNjol7Zs2OiTtm1YPlrbLNa3f/GinRUekfdNGJ6R900YHpH3ThuejXdMejaWepu1HY6nnaY/GUs/THo2lnqc9Gks9T6uotCiW6iiW6iiW6iiW6iiWMhRLGYqlDMVShmKpXQTNedKiWMpQLGUoljIUSxmKpRzFUo5iKUexlKNYahdBc560KJZyFEs5iqUcxVKOYqmBYqmBYqmBYqmBYqldBM150qJYaqBYaqBYaqBYapBYqi8kluoLiaX6QmKpvpBYqi+KSktiqb6QWKovJJbqC4ml+oJiqYJiqYJiqYJiqYJiqV3cz3nSoliqoFiqoFiqoFiqoFiqoliqoliqoliqolgqvP9837QolgpvPt83LYqlwjvP902LYqnwtvN906JYKrznfN+0KJYKbzjfNy2KpcK7zfdNi2Kp8FbzfdOiWCq803zftCiWCm803zctiqXC+8z3TYtiqfA2833Tolgqvst817Qoljqc9/x5WhRLHc57/jwtiqVQ3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7zn/Wje87Fc//rgKLdpD8ZSk7QHY6lJ2oOx1CTtwVhqkvZgLPU87dG855O0B2OpSdqDsdQk7cFYapJWUWlRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SUtiKTua93ySlsRSdjTv+SQtiaVsUVRaEkvZ0bznk7QklrKjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLIXynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe+4o77mjvOeO8p47ynvui6LSkljKUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8H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jmKpN2ir35kWxVIdxVIdxVIdxVIdxVKGYilDsZShWMpQLPUGe/Y706JYylAsZSiWMhRLGYqlHMVSjmIpR7GUo1gqvP9837QolgpvPt83LYqlwjvP902LYqnwtvN906JYKrznfN+0KJYKbzjfNy2KpcK7zfdNi2Kp8FbzfdOSWKqHd5rvm5bEUj280XzftCSW6oui0pJYqoe3me+blsRSPb7LfNe0KJY6nPf8eVoUSx3Oe/48LYqlUN7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85/1o3vOxXP/64Ci3aQ/GUpO0B2OpSdqDsdQk7cFYapL2YCz1PO3RvOeTtAdjqUnag7HUJO3BWGqSVlFpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7QklrKjec8naUksZUfznk/SkljKFkWlJbGUHc17PklLYik7mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSyF8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p77ijvuaO8547ynjvKe+6LotKSWMpR3nNHec8d5T13lPfcUd5zR3nP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",
|
|
5309
|
+
"bytecode": "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",
|
|
5310
|
+
"debug_symbols": "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ze2mKktuOdU6/9R3u+v8U3+1u84/9Xe76/zDl97J/FM/Z17nn7r4rvNPXX3X+acuv+v8k9ff3Jqqdf7J629uUdU6/9R3vuv8w9ffyfxT3/uu80/9Re86/9Tf9K7zT/3QeZ1/6qfOZYkvrHr++Y1vrJrMP3n9ze2sWuefvP7mtlat809+/5vbW7XOP/n9b25zVVniq6ue80N8d9Vk/smfP+e2V63zT15/4/urJvNPXn9zG6zW+Sevv7kdVmXJLbFa55/8/je3xmqdf/L73/giq+f8EN9kNZl/8ufPuV1W6/yT19/4Nqvn88+ts1rnn7z+5hZarfNPXn9zK63W+Se//80ttVrnn/z+N77W6jk/xPdaPZ9/brHVOv/kz5/jq62ef37ju60m809ef3Pbrdb5J6+/uf1W6/yT3//mNlyVJbfiap1/8vvf+JKr5/wQ33I1mX/4+juZf/Lnz/FFV5PPb/L6m1t1tc4/ef3NLbta55+8/ubWXa3zT37/m1t4tc4/+f1vfOXVc36I77yazD/58+fc1quyxNdePf/8xvdeTeafvP7mNl+t809ef3O7r9b5J7//zW2/Wuef/P43uf+qxPdfPeWHEt9/NZl/7ufPJbn/qiy562+J77+azD93/S3J/Vcluf+qJPdfleT+q5Lcf1WS+69Kcv9Vie+/es4P8f1Xk/nnfv5ckvuvSnz/1eTzm7z+JvdfleT+q5Lcf1WS+69Kcv9VSe6/Ksn9VyW5/6rE918954f4/qvn80/uvyrJ/Vclvv/q+ec3vv9qMv/k9Te5/6ok91+V5P6rktx/VZL7r0py/1VJ7r8q8f1Xz/khvv9qMv/w9Xcy/+TPn+P7ryaf3+T1N7n/qiT3X5Xk/quS3H9VkvuvSnL/VUnuvyrJ/Vclvv/qOT/E919N5p/8+XNy/1WJ7796/vmN77+azD95/U3uvyrJ/Vcluf+qJPdfleT+q5Lcf1WS+69KfP/Vc36I77+azD/58+fk/qsS3381+fwmr7/J/Vcluf+qJPdfleT+q5Lcf1WS+69Kcv9VSe6/KvH9V8/5Ib7/ajL/5M+fk/uvSnz/1eTzm7z+JvdfleT+q5Lcf1WS+69Kcv9VSe6/Ksn9VyW5/6rE918954f4/qun86/J/Vc1uf+qxvdfPf381vj+q8n8c9ffmtx/VZP7r2py/1VN7r+qyf1XNbn/qib3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7/kkLYmlxqKotCSWGkfznk/SklhqHM17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEuhvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPDeU9N5T33FDec0N5z21RVFoSSxnKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaO8547ynjvKe+4o77kvikpLYilHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5z/313vNay3KZfm19knadicnHVNw/p/2ZoKZPIMET9FqX61RqK5MdZ+W646z6zY5TVNqGSttRaQcqraHSOint6/3k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Ukfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0pJYSo/mPZ+kJbGUHs17PklLYql1+qi0JJbSo3nPJ2lJLKVH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWQnnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1vKO95Q3nPG8p73lDe87YoKi2JpRrKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU97yjveUd5zzvKe95R3vO+KCotiaU6ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPR8o7/lAec8Hyns+UN7zsSgqLYmlBsp7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T03lPfcUN5zQ3nPDeU9t0VRaUksZSjvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG85/YG77nodfriOkm7zsTkYyrun9P+TNDSJ+jBE/Ral+tUaiuTHWfluuPWJwo3O26g0hoqrZPSvsFP/s60BZW2otLKwdJ2uaa1G+Z5g5/8nWmj89G+aY/GUs/THo2lnqc9Gks9T3s0lnqath+NpZ6nPRpLPU97NJZ6nhbFUm/wk78zLYqlOoqlOoqlOoqlOoqlBoqlBoqlBoqlBoql3uAnf2daFEsNFEsNFEsNFEsNFEsZiqUMxVKGYilDsdQb/OTvTItiKUOxlKFYylAsZSiWchRLOYqlHMVSjmKpN/jJ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Q3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNHec8d5T13lPfcUd5zXxSVlsRSjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47yXuuC8l7vqYFsdSaFsRSa1oQS61pFZUWxFJrWhBLrWlBLLWmBbHUmhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+Tp7FEuRvOfr7FEsRfKer7NHsRTJe77OHsVSJO/5OnsUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taEksVlPe8oLznBeU9LyjveVkUlZbEUgXlPS8o73lBec8LynteUN7zgvKeF5T3vKC85wXlPS8o73lBec8LynteUN7zgvKeF5T3vKC85wXlPS8o73lBec8LynteUN7zgvKeF5T3vKC85wXlPS8o73lBec8Lynte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hvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeO8p77ijvuaO8547ynvuiqLQklnKU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33Ene87aQvOdrWhBLrWlBLLWmBbHUmlZRaUEstaYFsdSaFsRSa1oQS61pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6v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vOcD5T0fKO/5QHnPB8p7PlDe84Hyng+U93ygvOcD5T0fKO/5QHnPB8p7bijvuaG854bynhvKe26LotKSWMpQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zx3lPXeU99xR3nNHec99UVRaEks5ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4k73lfSN7zNS2Ipda0IJZa04JYak2rqLQgllrTglhqTQtiqTUtiKXWtCiWInnP17QoliJ5z9e0KJYiec/XtCiWInnP17QoliJ5z9e0KJYiec/XtCiWInnP17QoliJ5z9e0KJYiec/XtCiWInnP17QoliJ5z9e0KJYiec/XtCiWInnP17QoliJ5z9e0KJYiec/XtCiWInnP17QoliJ5z9e0KJYiec/XtCiWInnP17QoliJ5z9e0KJYiec/XtCiWInnP17QoliJ5z9e0KJYiec/XtCiW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",
|
|
5198
5311
|
"brillig_names": [
|
|
5199
5312
|
"get_note_internal",
|
|
5200
5313
|
"decompose_hint",
|
|
@@ -5209,8 +5322,8 @@
|
|
|
5209
5322
|
"directive_integer_quotient",
|
|
5210
5323
|
"directive_to_radix"
|
|
5211
5324
|
],
|
|
5212
|
-
"verification_key": "
|
|
5213
|
-
"artifact_hash": "
|
|
5325
|
+
"verification_key": "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",
|
|
5326
|
+
"artifact_hash": "e7552d296af009c9ed2e2ca261de6124cad0b1c1-2e2774eb0c44a123d16543538e296a0d-client-ivc-true"
|
|
5214
5327
|
}
|
|
5215
5328
|
],
|
|
5216
5329
|
"outputs": {
|
|
@@ -5529,6 +5642,33 @@
|
|
|
5529
5642
|
"kind": "struct",
|
|
5530
5643
|
"path": "EcdsaRAccount::entrypoint_abi"
|
|
5531
5644
|
},
|
|
5645
|
+
{
|
|
5646
|
+
"fields": [
|
|
5647
|
+
{
|
|
5648
|
+
"name": "parameters",
|
|
5649
|
+
"type": {
|
|
5650
|
+
"fields": [
|
|
5651
|
+
{
|
|
5652
|
+
"name": "inner_hash",
|
|
5653
|
+
"type": {
|
|
5654
|
+
"kind": "field"
|
|
5655
|
+
}
|
|
5656
|
+
}
|
|
5657
|
+
],
|
|
5658
|
+
"kind": "struct",
|
|
5659
|
+
"path": "EcdsaRAccount::verify_private_authwit_parameters"
|
|
5660
|
+
}
|
|
5661
|
+
},
|
|
5662
|
+
{
|
|
5663
|
+
"name": "return_type",
|
|
5664
|
+
"type": {
|
|
5665
|
+
"kind": "field"
|
|
5666
|
+
}
|
|
5667
|
+
}
|
|
5668
|
+
],
|
|
5669
|
+
"kind": "struct",
|
|
5670
|
+
"path": "EcdsaRAccount::verify_private_authwit_abi"
|
|
5671
|
+
},
|
|
5532
5672
|
{
|
|
5533
5673
|
"fields": [
|
|
5534
5674
|
{
|
|
@@ -5567,42 +5707,11 @@
|
|
|
5567
5707
|
],
|
|
5568
5708
|
"kind": "struct",
|
|
5569
5709
|
"path": "EcdsaRAccount::constructor_abi"
|
|
5570
|
-
},
|
|
5571
|
-
{
|
|
5572
|
-
"fields": [
|
|
5573
|
-
{
|
|
5574
|
-
"name": "parameters",
|
|
5575
|
-
"type": {
|
|
5576
|
-
"fields": [
|
|
5577
|
-
{
|
|
5578
|
-
"name": "inner_hash",
|
|
5579
|
-
"type": {
|
|
5580
|
-
"kind": "field"
|
|
5581
|
-
}
|
|
5582
|
-
}
|
|
5583
|
-
],
|
|
5584
|
-
"kind": "struct",
|
|
5585
|
-
"path": "EcdsaRAccount::verify_private_authwit_parameters"
|
|
5586
|
-
}
|
|
5587
|
-
},
|
|
5588
|
-
{
|
|
5589
|
-
"name": "return_type",
|
|
5590
|
-
"type": {
|
|
5591
|
-
"kind": "field"
|
|
5592
|
-
}
|
|
5593
|
-
}
|
|
5594
|
-
],
|
|
5595
|
-
"kind": "struct",
|
|
5596
|
-
"path": "EcdsaRAccount::verify_private_authwit_abi"
|
|
5597
5710
|
}
|
|
5598
5711
|
]
|
|
5599
5712
|
}
|
|
5600
5713
|
},
|
|
5601
5714
|
"file_map": {
|
|
5602
|
-
"3": {
|
|
5603
|
-
"path": "std/array/mod.nr",
|
|
5604
|
-
"source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n}\n"
|
|
5605
|
-
},
|
|
5606
5715
|
"6": {
|
|
5607
5716
|
"path": "std/cmp.nr",
|
|
5608
5717
|
"source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: StructDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl<T, let N: u32> Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<T> Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<let N: u32> Eq for str<N> {\n fn eq(self, other: str<N>) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl<A, B> Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl<A, B, C> Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl<A, B, C, D> Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl<A, B, C, D, E> Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: StructDefinition) -> Quoted {\n let signature = quote { fn cmp(_self: Self, _other: Self) -> std::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == std::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = std::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, quote { Ord }, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl<T, let N: u32> Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<T> Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<A, B> Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl<A, B, C> Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D> Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D, E> Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n"
|
|
@@ -5635,185 +5744,189 @@
|
|
|
5635
5744
|
"path": "std/hash/sha256.nr",
|
|
5636
5745
|
"source": "use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE: u32 = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR: u32 = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE: u32 = 16;\n\n// A `u32` integer consists of 4 bytes.\nglobal INT_SIZE: u32 = 4;\n\n// Index of the integer in the `INT_BLOCK` where the length is written.\nglobal INT_SIZE_PTR: u32 = MSG_SIZE_PTR / INT_SIZE;\n\n// Magic numbers for bit shifting.\n// Works with actual bit shifting as well as the compiler turns them into * and /\n// but circuit execution appears to be 10% faster this way.\nglobal TWO_POW_8: u32 = 256;\nglobal TWO_POW_16: u32 = TWO_POW_8 * 256;\nglobal TWO_POW_24: u32 = TWO_POW_16 * 256;\nglobal TWO_POW_32: u64 = TWO_POW_24 as u64 * 256;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeros, with neighbouring 4 bytes packed into integers.\ntype MSG_BLOCK = INT_BLOCK;\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ];\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block = update_block_item(\n msg_block,\n msg_byte_ptr,\n |msg_item| set_item_byte_then_zeros(msg_item, msg_byte_ptr, 1 << 7),\n );\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Apply a function on the block item which the pointer indicates.\nfn update_block_item<Env>(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n f: fn[Env](u32) -> u32,\n) -> MSG_BLOCK {\n let i = msg_byte_ptr / INT_SIZE;\n msg_block[i] = f(msg_block[i]);\n msg_block\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n if item == 0 {\n 0\n } else {\n // Brillig wouldn't shift 0<<4 without overflow.\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::{\n attach_len_to_msg_block, build_msg_block, byte_into_item, get_item_byte, make_item,\n set_item_byte_then_zeros, set_item_zeros,\n };\n use super::INT_BLOCK;\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n\n #[test]\n fn test_get_item_byte() {\n let fld = make_item(10, 20, 30, 40);\n assert_eq(fld, 0x0a141e28);\n assert_eq(get_item_byte(fld, 0), 10);\n assert_eq(get_item_byte(fld, 4), 10);\n assert_eq(get_item_byte(fld, 6), 30);\n }\n\n #[test]\n fn test_byte_into_item() {\n let fld = make_item(0, 20, 0, 0);\n assert_eq(byte_into_item(20, 1), fld);\n assert_eq(byte_into_item(20, 5), fld);\n }\n\n #[test]\n fn test_set_item_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 0, 0, 0);\n assert_eq(set_item_zeros(fld0, 3), fld1);\n assert_eq(set_item_zeros(fld0, 4), 0);\n assert_eq(set_item_zeros(0, 4), 0);\n }\n\n #[test]\n fn test_set_item_byte_then_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 50, 0, 0);\n assert_eq(set_item_byte_then_zeros(fld0, 1, 50), fld1);\n }\n\n #[test]\n fn test_build_msg_block_start_0() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48,\n ];\n assert_eq(input.len(), 22);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 0) };\n assert_eq(msg_byte_ptr, input.len());\n assert_eq(msg_block[0], make_item(input[0], input[1], input[2], input[3]));\n assert_eq(msg_block[1], make_item(input[4], input[5], input[6], input[7]));\n assert_eq(msg_block[5], make_item(input[20], input[21], 0, 0));\n assert_eq(msg_block[6], 0);\n }\n\n #[test]\n fn test_build_msg_block_start_1() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n assert_eq(input.len(), 68);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 64) };\n assert_eq(msg_byte_ptr, 4);\n assert_eq(msg_block[0], make_item(input[64], input[65], input[66], input[67]));\n assert_eq(msg_block[1], 0);\n }\n\n #[test]\n fn test_attach_len_to_msg_block() {\n let input: INT_BLOCK = [\n 2152555847, 1397309779, 1936618851, 1262052426, 1936876331, 1985297723, 543702374,\n 1919905082, 1131376244, 1701737517, 1417244773, 978151789, 1697470053, 1920166255,\n 1849316213, 1651139939,\n ];\n let msg_block = unsafe { attach_len_to_msg_block(input, 1, 448) };\n assert_eq(msg_block[0], ((1 << 7) as u32) * 256 * 256 * 256);\n assert_eq(msg_block[1], 0);\n assert_eq(msg_block[15], 3584);\n }\n}\n"
|
|
5637
5746
|
},
|
|
5638
|
-
"
|
|
5747
|
+
"51": {
|
|
5639
5748
|
"path": "std/option.nr",
|
|
5640
5749
|
"source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T>\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T>\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T>\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"
|
|
5641
5750
|
},
|
|
5642
|
-
"
|
|
5751
|
+
"52": {
|
|
5643
5752
|
"path": "std/panic.nr",
|
|
5644
5753
|
"source": "pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"
|
|
5645
5754
|
},
|
|
5646
|
-
"
|
|
5647
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5648
|
-
"source": "
|
|
5755
|
+
"66": {
|
|
5756
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
|
|
5757
|
+
"source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must be large enough to hold all of\n/// the elements past `offset`.\n///\n/// Example:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n/// ```\npub fn subarray<let SRC_LEN: u32, let DST_LEN: u32>(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DST_LEN to be 0, so we always get back an emtpy array.\n assert_eq(subarray([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n"
|
|
5649
5758
|
},
|
|
5650
|
-
"
|
|
5651
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5652
|
-
"source": "use
|
|
5653
|
-
},
|
|
5654
|
-
"82": {
|
|
5655
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr",
|
|
5656
|
-
"source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n pub note: Note,\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"
|
|
5759
|
+
"71": {
|
|
5760
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5761
|
+
"source": "use dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5657
5762
|
},
|
|
5658
|
-
"
|
|
5659
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5660
|
-
"source": "use crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\nuse dep::protocol_types::constants::{\n GET_NOTES_ORACLE_RETURN_LENGTH, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>,\n) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface<N>,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>,\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE>\nwhere\n Note: NoteInterface<N>,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"
|
|
5763
|
+
"77": {
|
|
5764
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr",
|
|
5765
|
+
"source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize},\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context, let N: u32> Storage<T, N> for PrivateImmutable<T, Context>\nwhere\n T: Serialize<N> + Deserialize<N>,\n{}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(self, note: &mut Note) -> NoteEmission<Note>\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"
|
|
5661
5766
|
},
|
|
5662
|
-
"
|
|
5767
|
+
"98": {
|
|
5663
5768
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr",
|
|
5664
|
-
"source": "use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n header::get_header_at,\n key_validation_request::get_key_validation_request,\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log::Log,\n log_hash::LogHash,\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::PrivateLogData,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DISPATCH_SELECTOR,\n },\n header::Header,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub max_block_number: MaxBlockNumber,\n\n pub note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n pub nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n pub note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n pub nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n pub private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n pub public_call_requests: BoundedVec<Counted<PublicCallRequest>, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: Header,\n\n pub private_logs: BoundedVec<PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL>,\n pub contract_class_logs_hashes: BoundedVec<LogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert(request.pk_m.hash() == pk_m_hash);\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n },\n );\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS]) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // The oracle simulates the private call and returns the value of the side effects counter after execution of\n // the call (which means that end_side_effect_counter - start_side_effect_counter is the number of side effects\n // that took place), along with the hash of the return values. We validate these by requesting a private kernel\n // iteration in which the return values are constrained to hash to `returns_hash` and the side effects counter\n // to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"
|
|
5769
|
+
"source": "use dep::protocol_types::debug_log::debug_log_format;\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n key_validation_request::get_key_validation_request,\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log::Log,\n log_hash::LogHash,\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::PrivateLogData,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n block_header::BlockHeader,\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DISPATCH_SELECTOR,\n },\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub max_block_number: MaxBlockNumber,\n\n pub note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n pub nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n pub note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n pub nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n pub private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n pub public_call_requests: BoundedVec<Counted<PublicCallRequest>, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec<PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL>,\n pub contract_class_logs_hashes: BoundedVec<LogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n\n // WARNING(https://github.com/AztecProtocol/aztec-packages/issues/10558): if you delete this debug_log_format line, some tests fail.\n debug_log_format(\n \"Context.note_hashes, after pushing new note hash: {0}\",\n self.note_hashes.storage().map(|nh: NoteHash| nh.value),\n );\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert(request.pk_m.hash() == pk_m_hash);\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n },\n );\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS]) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // The oracle simulates the private call and returns the value of the side effects counter after execution of\n // the call (which means that end_side_effect_counter - start_side_effect_counter is the number of side effects\n // that took place), along with the hash of the return values. We validate these by requesting a private kernel\n // iteration in which the return values are constrained to hash to `returns_hash` and the side effects counter\n // to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"
|
|
5665
5770
|
},
|
|
5666
|
-
"
|
|
5667
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5668
|
-
"source": "use dep::protocol_types::{\n
|
|
5771
|
+
"100": {
|
|
5772
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr",
|
|
5773
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n point::Point,\n public_keys::{IvpkM, ToPoint},\n scalar::Scalar,\n};\n\nuse crate::keys::secret_derivation::derive_aes_secret;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n pub fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n pub fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48]\n where\n T: ToPoint,\n {\n let full_key = derive_aes_secret(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131,\n 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171,\n 176, 218, 48, 209, 73, 89, 200, 209,\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"
|
|
5669
5774
|
},
|
|
5670
|
-
"
|
|
5671
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5672
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress, constants::CONTRACT_INSTANCE_LENGTH, contract_class_id::ContractClassId,\n contract_instance::ContractInstance,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n\npub unconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_deployer_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_class_id_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option<AztecAddress> {\n let (member, exists) = get_contract_instance_deployer_internal_avm(address);\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option<ContractClassId> {\n let (member, exists) = get_contract_instance_class_id_internal_avm(address);\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option<Field> {\n let (member, exists) = get_contract_instance_initialization_hash_internal_avm(address);\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n"
|
|
5775
|
+
"103": {
|
|
5776
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr",
|
|
5777
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{GENERATOR_INDEX__SYMMETRIC_KEY, PRIVATE_LOG_SIZE_IN_FIELDS},\n hash::poseidon2_hash,\n point::Point,\n public_keys::AddressPoint,\n scalar::Scalar,\n utils::arrays::array_concat,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n field::bn254::decompose, hash::from_field_unsafe as fr_to_fq_unsafe,\n};\n\nuse crate::{\n encrypted_logs::header::EncryptedLogHeader,\n keys::secret_derivation::derive_aes_secret,\n oracle::{\n notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n random::random,\n },\n utils::{bytes::bytes_to_fields, point::point_to_bytes},\n};\n\n// 1 field is reserved for tag.\nglobal ENCRYPTED_PAYLOAD_SIZE_IN_BYTES: u32 = (PRIVATE_LOG_SIZE_IN_FIELDS - 1) * 31;\n\ncomptime global HEADER_SIZE: u32 = 48;\n\n// Bytes padded to the overhead, so that the size of the incoming body ciphertext will be a multiple of 16.\ncomptime global OVERHEAD_PADDING: u32 = 15;\n\npub comptime global OVERHEAD_SIZE: u32 = 32 /* eph_pk */\n + HEADER_SIZE /* incoming_header */\n + OVERHEAD_PADDING /* padding */;\n\nglobal PLAINTEXT_LENGTH_SIZE: u32 = 2;\n\n// This is enough for 8 fields of data.\n// 1 field for storage slot, 1 field for note/event type id, allowing 6 fields for custom values.\nglobal MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES: u32 =\n ENCRYPTED_PAYLOAD_SIZE_IN_BYTES - OVERHEAD_SIZE - PLAINTEXT_LENGTH_SIZE - 1 /* aes padding */;\n\n// Note: Might have to update PRIVATE_LOG_SIZE_IN_FIELDS in `constants.nr` if the above changes.\n// This value ideally should be set by the protocol, allowing users (or `aztec-nr`) to fit data within the defined size limits.\n// Currently, we adjust this value as the structure changes, then update `constants.nr` to match.\n// Once the structure is finalized with defined overhead and max note field sizes, this value will be fixed and should remain unaffected by further payload composition changes.\n\npub fn compute_private_log_payload<let P: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n assert(\n P < MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n f\"plaintext for log must not exceed {MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES}\",\n );\n\n let extended_plaintext: [u8; MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; ENCRYPTED_PAYLOAD_SIZE_IN_BYTES] =\n compute_encrypted_log(contract_address, recipient, extended_plaintext);\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n array_concat([tag], bytes_to_fields(encrypted))\n}\n\npub fn compute_partial_public_log_payload<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let extended_plaintext: [u8; P + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; M - 32] =\n compute_encrypted_log(contract_address, recipient, extended_plaintext);\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n // Silo the tag with contract address.\n // This is done by the kernel circuit to the private logs, but since the partial log will be finalized and emitted\n // in public as unencrypted log, its tag is not siloed at the moment.\n // To avoid querying logs using two types of tags, we silo the tag manually here.\n // TODO(#10273) This should be done by the AVM when it's processing the raw logs instead of their hashes.\n let siloed_tag_bytes: [u8; 32] =\n poseidon2_hash([contract_address.to_field(), tag]).to_be_bytes();\n\n // Temporary hack so that the partial public log remains the same format.\n // It should return field array and make the tag the first field as compute_private_log_payload does.\n let mut log_bytes = [0; M];\n for i in 0..32 {\n log_bytes[i] = siloed_tag_bytes[i];\n }\n for i in 0..encrypted.len() {\n log_bytes[i + 32] = encrypted[i];\n }\n\n log_bytes\n}\n\nfn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] =\n header.compute_ciphertext(eph_sk, recipient.to_address_point());\n let incoming_body_ciphertext =\n compute_incoming_body_ciphertext(plaintext, eph_sk, recipient.to_address_point());\n\n let mut encrypted_bytes = [0; M];\n let mut offset = 0;\n\n // eph_pk\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[offset + i] = eph_pk_bytes[i];\n }\n offset += 32;\n\n // incoming_header\n for i in 0..HEADER_SIZE {\n encrypted_bytes[offset + i] = incoming_header_ciphertext[i];\n }\n offset += HEADER_SIZE;\n\n // Padding.\n offset += OVERHEAD_PADDING;\n\n // incoming_body\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - offset;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[offset + i] = incoming_body_ciphertext[i];\n }\n\n encrypted_bytes\n}\n\n// Prepend the plaintext length as the first byte, then copy the plaintext itself starting from the second byte.\n// Fill the remaining bytes with random values to reach a fixed length of N.\nfn extend_private_log_plaintext<let P: u32, let N: u32>(plaintext: [u8; P]) -> [u8; N] {\n let mut padded = unsafe { get_random_bytes() };\n padded[0] = (P >> 8) as u8;\n padded[1] = P as u8;\n for i in 0..P {\n padded[i + PLAINTEXT_LENGTH_SIZE] = plaintext[i];\n }\n padded\n}\n\nunconstrained fn get_random_bytes<let N: u32>() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n address_point: AddressPoint,\n) -> [u8] {\n let full_key = derive_aes_secret(eph_sk, address_point.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_incoming_body_ciphertext, compute_private_log_payload,\n MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n };\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use protocol_types::public_keys::AddressPoint;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `encrypted_log_payload.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(\n (MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES as u64 + 1 + 30) / 31,\n );\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let sender = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns([69420, 1337]);\n\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let payload = compute_private_log_payload(contract_address, recipient, sender, plaintext);\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let private_log_payload_from_typescript = [\n 0x0e9cffc3ddd746affb02410d8f0a823e89939785bcc8e88ee4f3cae05e737c36,\n 0x008d460c0e434d846ec1ea286e4090eb56376ff27bddc1aacae1d856549f701f,\n 0x00a70577790aeabcc2d81ec8d0c99e7f5d2bf2f1452025dc777a178404f851d9,\n 0x003de818923f85187871d99bdf95d695eff0a900000000000000000000000000,\n 0x000000a600a61f7d59eeaf52eb51bc0592ff981d9ba3ea8e6ea8ba9dc0cec8c7,\n 0x000b81e84556a77ce6c3ca47a527f99ffe7b2524bb885a23020b7295748ad19c,\n 0x001083618ad96298b76ee07eb1a56d19cc798710e9f5de96501bd59b3781c9c0,\n 0x002a6c95c5912f8936b1500d362afbf0922c85b1ada18db8b95162a6e9d06765,\n 0x005cdf669eb387f8e0492a95fdcdb39429d5340b4bebc250ba9bf62c2f49f549,\n 0x00f37beed75a668aa51967e0e57547e5a655157bcf381e22f30e25881548ec96,\n 0x0006a151b5fbfb2d14ee4b34bf4c1dbd71c7be15ad4c63474bb6f89970aeb3d9,\n 0x00489c8edbdff80a1a3a5c28370e534abc870a85ea4318326ea19222fb10df35,\n 0x008c765edada497db4284ae30507a2e03e983d23cfa0bd831577e857bbef9cf7,\n 0x0090c97cb5699cc8783a1b4276d929be2882e5b9b72829a4f8404f7e3c853d11,\n 0x00d6d5a000b80134891e95f81007ad35d3945eaeecbe137fff85d01d7eaf8f19,\n 0x00a15eb965c6a4bc97aa87fd3463c31c9d4e0d722a8ba870bcc50c9c7a8b48ad,\n 0x0063c861bdbe490d44c57382decbae663927909652f87ac18dcfd5b30649cce5,\n 0x00820f14caa725efe1fa3485ceac88499eadf0565c5b20998c05931bbf478e68,\n ];\n\n assert_eq(payload, private_log_payload_from_typescript);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let address_point = AddressPoint {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `address_point` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, address_point);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"
|
|
5673
5778
|
},
|
|
5674
|
-
"
|
|
5675
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5676
|
-
"source": "use dep::protocol_types::{\n abis::
|
|
5779
|
+
"104": {
|
|
5780
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr",
|
|
5781
|
+
"source": "use crate::{\n context::PrivateContext,\n encrypted_logs::payload::compute_private_log_payload,\n note::{note_emission::NoteEmission, note_interface::NoteInterface},\n};\nuse dep::protocol_types::{\n abis::note_hash::NoteHash, address::AztecAddress, constants::PRIVATE_LOG_SIZE_IN_FIELDS,\n};\n\n/// Computes private note log payload\nfn compute_payload<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> ([Field; PRIVATE_LOG_SIZE_IN_FIELDS], u32)\nwhere\n Note: NoteInterface<N>,\n{\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n\n let payload = compute_private_log_payload(contract_address, recipient, sender, plaintext);\n\n (payload, note_hash_counter)\n}\n\nunconstrained fn compute_payload_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> ([Field; PRIVATE_LOG_SIZE_IN_FIELDS], u32)\nwhere\n Note: NoteInterface<N>,\n{\n compute_payload(context, note, recipient, sender)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n let (encrypted_log, note_hash_counter) =\n compute_payload(*context, e.note, recipient, sender);\n context.emit_raw_note_log(encrypted_log, note_hash_counter);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n // Unconstrained logs have both their content and encryption unconstrained - it could occur that the\n // recipient is unable to decrypt the payload.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n // It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n let (encrypted_log, note_hash_counter) =\n unsafe { compute_payload_unconstrained(*context, e.note, recipient, sender) };\n context.emit_raw_note_log(encrypted_log, note_hash_counter);\n }\n}\n"
|
|
5677
5782
|
},
|
|
5678
|
-
"
|
|
5679
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5680
|
-
"source": "use crate::
|
|
5783
|
+
"105": {
|
|
5784
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr",
|
|
5785
|
+
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_emission::NoteEmission,\n note_header::NoteHeader,\n note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_nullify_internal, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission<Note>\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"
|
|
5681
5786
|
},
|
|
5682
|
-
"
|
|
5683
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5684
|
-
"source": "/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe { pack_returns_oracle_wrapper(returns) };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"
|
|
5787
|
+
"108": {
|
|
5788
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr",
|
|
5789
|
+
"source": "use crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\nuse dep::protocol_types::constants::{\n GET_NOTES_ORACLE_RETURN_LENGTH, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>,\n) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::array::collapse(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface<N>,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>,\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE>\nwhere\n Note: NoteInterface<N>,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"
|
|
5790
|
+
},
|
|
5791
|
+
"112": {
|
|
5792
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr",
|
|
5793
|
+
"source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n pub note: Note,\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"
|
|
5685
5794
|
},
|
|
5686
5795
|
"115": {
|
|
5687
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5688
|
-
"source": "
|
|
5796
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr",
|
|
5797
|
+
"source": "use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote}},\n utils::array,\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n compute_unique_note_hash,\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let header = note.get_header();\n let nonce = header.nonce;\n let counter = header.note_hash_counter;\n\n // If same tx note, read request always uses the normal note hash\n if counter != 0 {\n note_hash\n } else {\n // If the note comes from a different tx, we need to compute the note hash that reached the tree\n compute_unique_note_hash(\n nonce,\n compute_siloed_note_hash(header.contract_address, note_hash),\n )\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note.get_header();\n\n if (header.note_hash_counter != 0) & (header.nonce != 0) {\n // Non-revertible note, nullified by a revertible nullifier, we need to nullify the note hash that will reach the tree\n let siloed_note_hash =\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request);\n\n compute_unique_note_hash(header.nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface<N> + NullifiableNote,\n{\n let mut note = deserialize_content(array::subarray(serialized_note, 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, note_hash);\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, siloed_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"
|
|
5689
5798
|
},
|
|
5690
|
-
"
|
|
5799
|
+
"134": {
|
|
5800
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr",
|
|
5801
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"
|
|
5802
|
+
},
|
|
5803
|
+
"137": {
|
|
5691
5804
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr",
|
|
5692
5805
|
"source": "use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"
|
|
5693
5806
|
},
|
|
5694
|
-
"
|
|
5807
|
+
"139": {
|
|
5808
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr",
|
|
5809
|
+
"source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"
|
|
5810
|
+
},
|
|
5811
|
+
"140": {
|
|
5695
5812
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr",
|
|
5696
5813
|
"source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM {\n inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool },\n },\n ovpk_m: OvpkM {\n inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool },\n },\n tpk_m: TpkM {\n inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool },\n },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"
|
|
5697
5814
|
},
|
|
5698
|
-
"
|
|
5815
|
+
"142": {
|
|
5699
5816
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr",
|
|
5700
5817
|
"source": "use dep::protocol_types::abis::validation_requests::{\n key_validation_request::KEY_VALIDATION_REQUEST_LENGTH, KeyValidationRequest,\n};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"
|
|
5701
5818
|
},
|
|
5702
|
-
"
|
|
5703
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5704
|
-
"source": "
|
|
5819
|
+
"145": {
|
|
5820
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr",
|
|
5821
|
+
"source": "/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe { pack_returns_oracle_wrapper(returns) };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"
|
|
5705
5822
|
},
|
|
5706
|
-
"
|
|
5707
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5708
|
-
"source": "use
|
|
5823
|
+
"148": {
|
|
5824
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr",
|
|
5825
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress, constants::CONTRACT_INSTANCE_LENGTH, contract_class_id::ContractClassId,\n contract_instance::ContractInstance,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n\npub unconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_deployer_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_class_id_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option<AztecAddress> {\n let (member, exists) = get_contract_instance_deployer_internal_avm(address);\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option<ContractClassId> {\n let (member, exists) = get_contract_instance_class_id_internal_avm(address);\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option<Field> {\n let (member, exists) = get_contract_instance_initialization_hash_internal_avm(address);\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n"
|
|
5709
5826
|
},
|
|
5710
|
-
"
|
|
5711
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5712
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress,\n
|
|
5827
|
+
"150": {
|
|
5828
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr",
|
|
5829
|
+
"source": "use crate::{note::{note_header::NoteHeader, note_interface::NoteInterface}, utils::array};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::{INDEXED_TAGGING_SECRET_LENGTH, IndexedTaggingSecret},\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S],\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S],\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields,\n )\n}\n\npub unconstrained fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N], // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S]\nwhere\n Note: NoteInterface<N>,\n{\n sync_notes_oracle_wrapper();\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields,\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let note_content = array::subarray(fields, read_offset + 2);\n\n let mut note = Note::deserialize_content(note_content);\n note.set_header(NoteHeader { contract_address, nonce, storage_slot, note_hash_counter });\n\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n/// Same as `get_indexed_tagging_secret_as_sender`, except it returns the derived tag, ready to be included in a log.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender(sender, recipient).compute_tag(recipient)\n}\n\n/// Returns the tagging secret for a given sender and recipient pair, siloed for the current contract address.\n/// Includes the last known index used to send a note tagged with this secret.\n/// For this to work, PXE must know the ivsk_m of the sender.\n/// For the recipient's side, only the address is needed.\npub unconstrained fn get_indexed_tagging_secret_as_sender(\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> IndexedTaggingSecret {\n let result = get_indexed_tagging_secret_as_sender_oracle(sender, recipient);\n IndexedTaggingSecret::deserialize(result)\n}\n\n#[oracle(getIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> [Field; INDEXED_TAGGING_SECRET_LENGTH] {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n\n/// Finds new notes that may have been sent to all registered accounts in PXE in the current contract and makes them available\n/// for later querying via the `get_notes` oracle.\npub fn sync_notes() {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n sync_notes_oracle_wrapper();\n }\n}\n\nunconstrained fn sync_notes_oracle_wrapper() {\n sync_notes_oracle();\n}\n\n#[oracle(syncNotes)]\nunconstrained fn sync_notes_oracle() {}\n"
|
|
5713
5830
|
},
|
|
5714
|
-
"
|
|
5715
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5716
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{GENERATOR_INDEX__SYMMETRIC_KEY, PRIVATE_LOG_SIZE_IN_FIELDS},\n hash::{poseidon2_hash, poseidon2_hash_with_separator},\n point::Point,\n public_keys::{AddressPoint, OvpkM},\n scalar::Scalar,\n utils::arrays::array_concat,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n field::bn254::decompose, hash::from_field_unsafe as fr_to_fq_unsafe,\n};\n\nuse crate::{\n encrypted_logs::header::EncryptedLogHeader,\n keys::point_to_symmetric_key::point_to_symmetric_key,\n oracle::{\n notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n random::random,\n },\n utils::{bytes::bytes_to_fields, point::point_to_bytes},\n};\n\n// 1 field is reserved for tag.\nglobal ENCRYPTED_PAYLOAD_SIZE_IN_BYTES: u32 = (PRIVATE_LOG_SIZE_IN_FIELDS - 1) * 31;\n\ncomptime global HEADER_SIZE: u32 = 48;\n\ncomptime global OUTGOING_BODY_SIZE: u32 = 112;\n\n// Bytes padded to the overhead, so that the size of the incoming body ciphertext will be a multiple of 16.\ncomptime global OVERHEAD_PADDING: u32 = 15;\n\npub comptime global OVERHEAD_SIZE: u32 = 32 /* eph_pk */\n + HEADER_SIZE /* incoming_header */\n + HEADER_SIZE /* outgoing_header */\n + OUTGOING_BODY_SIZE /* outgoing_body */\n + OVERHEAD_PADDING /* padding */;\n\nglobal PLAINTEXT_LENGTH_SIZE: u32 = 2;\n\n// This is enough for 8 fields of data.\n// 1 field for storage slot, 1 field for note/event type id, allowing 6 fields for custom values.\nglobal MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES: u32 =\n ENCRYPTED_PAYLOAD_SIZE_IN_BYTES - OVERHEAD_SIZE - PLAINTEXT_LENGTH_SIZE - 1 /* aes padding */;\n\n// Note: Might have to update PRIVATE_LOG_SIZE_IN_FIELDS in `constants.nr` if the above changes.\n// This value ideally should be set by the protocol, allowing users (or `aztec-nr`) to fit data within the defined size limits.\n// Currently, we adjust this value as the structure changes, then update `constants.nr` to match.\n// Once the structure is finalized with defined overhead and max note field sizes, this value will be fixed and should remain unaffected by further payload composition changes.\n\npub fn compute_private_log_payload<let P: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n assert(\n P < MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n f\"plaintext for log must not exceed {MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES}\",\n );\n\n let extended_plaintext: [u8; MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; ENCRYPTED_PAYLOAD_SIZE_IN_BYTES] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk,\n recipient,\n extended_plaintext,\n );\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n array_concat([tag], bytes_to_fields(encrypted))\n}\n\npub fn compute_partial_public_log_payload<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let extended_plaintext: [u8; P + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; M - 32] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk,\n recipient,\n extended_plaintext,\n );\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n // Silo the tag with contract address.\n // This is done by the kernel circuit to the private logs, but since the partial log will be finalized and emitted\n // in public as unencrypted log, its tag is not siloed at the moment.\n // To avoid querying logs using two types of tags, we silo the tag manually here.\n // TODO(#10273) This should be done by the AVM when it's processing the raw logs instead of their hashes.\n let siloed_tag_bytes: [u8; 32] =\n poseidon2_hash([contract_address.to_field(), tag]).to_be_bytes();\n\n // Temporary hack so that the partial public log remains the same format.\n // It should return field array and make the tag the first field as compute_private_log_payload does.\n let mut log_bytes = [0; M];\n for i in 0..32 {\n log_bytes[i] = siloed_tag_bytes[i];\n }\n for i in 0..encrypted.len() {\n log_bytes[i + 32] = encrypted[i];\n }\n\n log_bytes\n}\n\nfn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] =\n header.compute_ciphertext(eph_sk, recipient.to_address_point());\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext =\n compute_incoming_body_ciphertext(plaintext, eph_sk, recipient.to_address_point());\n let outgoing_body_ciphertext: [u8; 112] =\n compute_outgoing_body_ciphertext(recipient, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes = [0; M];\n let mut offset = 0;\n\n // eph_pk\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[offset + i] = eph_pk_bytes[i];\n }\n offset += 32;\n\n // incoming_header\n // outgoing_header\n for i in 0..HEADER_SIZE {\n encrypted_bytes[offset + i] = incoming_header_ciphertext[i];\n encrypted_bytes[offset + HEADER_SIZE + i] = outgoing_header_ciphertext[i];\n }\n offset += HEADER_SIZE * 2;\n\n // outgoing_body\n for i in 0..OUTGOING_BODY_SIZE {\n encrypted_bytes[offset + i] = outgoing_body_ciphertext[i];\n }\n offset += OUTGOING_BODY_SIZE;\n\n // Padding.\n offset += OVERHEAD_PADDING;\n\n // incoming_body\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - offset;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[offset + i] = incoming_body_ciphertext[i];\n }\n\n encrypted_bytes\n}\n\n// Prepend the plaintext length as the first byte, then copy the plaintext itself starting from the second byte.\n// Fill the remaining bytes with random values to reach a fixed length of N.\nfn extend_private_log_plaintext<let P: u32, let N: u32>(plaintext: [u8; P]) -> [u8; N] {\n let mut padded = unsafe { get_random_bytes() };\n padded[0] = (P >> 8) as u8;\n padded[1] = P as u8;\n for i in 0..P {\n padded[i + PLAINTEXT_LENGTH_SIZE] = plaintext[i];\n }\n padded\n}\n\nunconstrained fn get_random_bytes<let N: u32>() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n address_point: AddressPoint,\n) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, address_point.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's address point --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point,\n) -> [u8; OUTGOING_BODY_SIZE] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n let mut buffer = [0 as u8; 96];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_address_point =\n point_to_bytes(recipient.to_address_point().to_point());\n\n for i in 0..16 {\n buffer[i] = serialized_eph_sk_high[i + 16];\n buffer[i + 16] = serialized_eph_sk_low[i + 16];\n }\n for i in 0..32 {\n buffer[i + 32] = address_bytes[i];\n buffer[i + 64] = serialized_recipient_address_point[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field,\n )\n .to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext,\n compute_private_log_payload, MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n };\n use dep::protocol_types::{\n address::AztecAddress, point::Point, public_keys::OvpkM, scalar::Scalar,\n };\n use protocol_types::public_keys::AddressPoint;\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `encrypted_log_payload.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n let ovsk_app = 0x191ac5e29bbc8f80f29ed06b75eaf30c036ed7952d844833860c527077c8c3b4;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x07f696b8b233de2c1935e43c793399586f532da5ff7c0356636a75acb862e964,\n y: 0x156e8a3e42bfca3663936ba98c7fd26386a14657c23b5f5146f1a94b6c465154,\n is_infinite: false,\n },\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(\n (MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES as u64 + 1 + 30) / 31,\n );\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let sender = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let _ = OracleMock::mock(\"getAppTaggingSecretAsSender\").returns([69420, 1337]);\n\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let payload = compute_private_log_payload(\n contract_address,\n ovsk_app,\n ovpk_m,\n recipient,\n sender,\n plaintext,\n );\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let private_log_payload_from_typescript = [\n 0x0e9cffc3ddd746affb02410d8f0a823e89939785bcc8e88ee4f3cae05e737c36,\n 0x008d460c0e434d846ec1ea286e4090eb56376ff27bddc1aacae1d856549f701f,\n 0x00a70577790aeabcc2d81ec8d0c99e7f5d2bf2f1452025dc777a178404f851d9,\n 0x003de818923f85187871d99bdf95d695eff0a9e09ba15153fc9b4d224b6e1e71,\n 0x00dfbdcaab06c09d5b3c749bfebe1c0407eccd04f51bbb59142680c8a091b97f,\n 0x00c6cbcf615def593ab09e5b3f7f58f6fc235c90e7c77ed8dadb3b05ee4545a7,\n 0x00bc612c9139475fee6070be47efcc43a5cbbc873632f1428fac952df9c181db,\n 0x005f9e850b21fe11fedef37b88caee95111bce776e488df219732d0a77d19201,\n 0x007047186f41445ecd5c603487f7fb3c8f31010a22af69ce0000000000000000,\n 0x0000000000000000a600a61f7d59eeaf52eb51bc0592ff981d9ba3ea8e6ea8ba,\n 0x009dc0cec8c70b81e84556a77ce6c3ca47a527f99ffe7b2524bb885a23020b72,\n 0x0095748ad19c1083618ad96298b76ee07eb1a56d19cc798710e9f5de96501bd5,\n 0x009b3781c9c02a6c95c5912f8936b1500d362afbf0922c85b1ada18db8b95162,\n 0x00a6e9d067655cdf669eb387f8e0492a95fdcdb39429d5340b4bebc250ba9bf6,\n 0x002c2f49f549f37beed75a668aa51967e0e57547e5a655157bcf381e22f30e25,\n 0x00881548ec9606a151b5fbfb2d14ee4b34bf4c1dbd71c7be15ad4c63474bb6f8,\n 0x009970aeb3d9489c8edbdff80a1a3a5c28370e534abc870a85ea4318326ea192,\n 0x0022fb10df358c765edada497db4284ae30507a2e03e983d23cfa0bd831577e8,\n ];\n\n assert_eq(payload, private_log_payload_from_typescript);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let address_point = AddressPoint {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `address_point` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, address_point);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n };\n\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let ciphertext =\n compute_outgoing_body_ciphertext(recipient, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 97, 221, 53, 168, 242, 56, 217, 184, 114, 127, 137, 98, 31, 63, 86, 179, 139, 198, 162,\n 162, 216, 158, 255, 205, 90, 212, 141, 55, 9, 245, 6, 146, 202, 137, 129, 36, 190, 31,\n 17, 89, 151, 203, 43, 196, 203, 233, 178, 79, 202, 70, 250, 182, 18, 191, 79, 42, 205,\n 204, 145, 14, 13, 35, 255, 139, 142, 66, 193, 240, 175, 233, 180, 37, 153, 235, 41, 88,\n 232, 52, 235, 213, 50, 26, 153, 227, 25, 242, 161, 92, 45, 152, 100, 106, 29, 192, 131,\n 101, 121, 126, 31, 118, 191, 90, 238, 43, 24, 82, 49, 18, 199, 107, 83, 7,\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"
|
|
5831
|
+
"151": {
|
|
5832
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr",
|
|
5833
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"
|
|
5717
5834
|
},
|
|
5718
|
-
"
|
|
5835
|
+
"156": {
|
|
5719
5836
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr",
|
|
5720
5837
|
"source": "use crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\nuse dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__SECRET_HASH,\n },\n hash::{poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice, sha256_to_field},\n point::Point,\n traits::Hash,\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"
|
|
5721
5838
|
},
|
|
5722
|
-
"
|
|
5839
|
+
"157": {
|
|
5840
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/generators.nr",
|
|
5841
|
+
"source": "use dep::protocol_types::point::Point;\n\n// A set of generators generated with `derive_generators(...)` function from noir::std\npub global Ga1: Point = Point {\n x: 0x30426e64aee30e998c13c8ceecda3a77807dbead52bc2f3bf0eae851b4b710c1,\n y: 0x113156a068f603023240c96b4da5474667db3b8711c521c748212a15bc034ea6,\n is_infinite: false,\n};\npub global Ga2: Point = Point {\n x: 0x2825c79cc6a5cbbeef7d6a8f1b6a12b312aa338440aefeb4396148c89147c049,\n y: 0x129bfd1da54b7062d6b544e7e36b90736350f6fba01228c41c72099509f5701e,\n is_infinite: false,\n};\npub global Ga3: Point = Point {\n x: 0x0edb1e293c3ce91bfc04e3ceaa50d2c541fa9d091c72eb403efb1cfa2cb3357f,\n y: 0x1341d675fa030ece3113ad53ca34fd13b19b6e9762046734f414824c4d6ade35,\n is_infinite: false,\n};\npub global Ga4: Point = Point {\n x: 0x0e0dad2250583f2a9f0acb04ededf1701b85b0393cae753fe7e14b88af81cb52,\n y: 0x0973b02c5caac339ee4ad5dab51329920f7bf1b6a07e1dabe5df67040b300962,\n is_infinite: false,\n};\npub global Ga5: Point = Point {\n x: 0x2f3342e900e8c488a28931aae68970738fdc68afde2910de7b320c00c902087d,\n y: 0x1bf958dc63cb09d59230603a0269ae86d6f92494da244910351f1132df20fc08,\n is_infinite: false,\n};\n// If you change this update `G_SLOT` in `yarn-project/simulator/src/client/test_utils.ts` as well\npub global G_slot: Point = Point {\n x: 0x041223147b680850dc82e8a55a952d4df20256fe0593d949a9541ca00f0abf15,\n y: 0x0a8c72e60d0e60f5d804549d48f3044d06140b98ed717a9b532af630c1530791,\n is_infinite: false,\n};\n\nmod test {\n use crate::generators::{G_slot, Ga1, Ga2, Ga3, Ga4, Ga5};\n use dep::protocol_types::point::Point;\n use std::hash::derive_generators;\n\n #[test]\n unconstrained fn test_generators() {\n let generators: [Point; 6] = derive_generators(\"aztec_nr_generators\".as_bytes(), 0);\n assert_eq(generators[0], Ga1);\n assert_eq(generators[1], Ga2);\n assert_eq(generators[2], Ga3);\n assert_eq(generators[4], Ga4);\n assert_eq(generators[5], Ga5);\n assert_eq(generators[3], G_slot);\n }\n}\n"
|
|
5842
|
+
},
|
|
5843
|
+
"171": {
|
|
5723
5844
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr",
|
|
5724
5845
|
"source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n"
|
|
5725
5846
|
},
|
|
5726
|
-
"
|
|
5727
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/
|
|
5728
|
-
"source": "use crate::utils::point::point_to_bytes;\nuse dep::protocol_types::{
|
|
5729
|
-
},
|
|
5730
|
-
"152": {
|
|
5731
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5732
|
-
"source": "use dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5733
|
-
},
|
|
5734
|
-
"171": {
|
|
5735
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr",
|
|
5736
|
-
"source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize},\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context, let N: u32> Storage<T, N> for PrivateImmutable<T, Context>\nwhere\n T: Serialize<N> + Deserialize<N>,\n{}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(self, note: &mut Note) -> NoteEmission<Note>\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"
|
|
5847
|
+
"173": {
|
|
5848
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/secret_derivation.nr",
|
|
5849
|
+
"source": "use crate::utils::point::point_to_bytes;\nuse dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, point::Point, scalar::Scalar};\nuse std::{embedded_curve_ops::multi_scalar_mul, hash::sha256};\n\npub fn derive_aes_secret(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret = point_to_bytes(multi_scalar_mul([point], [secret]));\n\n let mut shared_secret_bytes_with_separator: [u8; 33] = std::mem::zeroed();\n for i in 0..shared_secret.len() {\n shared_secret_bytes_with_separator[i] = shared_secret[i];\n }\n\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_derive_aes_secret_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let key = derive_aes_secret(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158,\n 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159,\n ];\n assert_eq(key, key_from_typescript);\n}\n"
|
|
5737
5850
|
},
|
|
5738
5851
|
"176": {
|
|
5739
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5740
|
-
"source": "
|
|
5852
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
|
|
5853
|
+
"source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"
|
|
5741
5854
|
},
|
|
5742
|
-
"
|
|
5743
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5744
|
-
"source": "use
|
|
5855
|
+
"178": {
|
|
5856
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr",
|
|
5857
|
+
"source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, get_order_hints_desc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_value_array::{\n assert_sorted_transformed_value_array, assert_sorted_transformed_value_array_capped_size,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n assert_split_sorted_transformed_value_arrays_desc,\n get_split_order_hints::{get_split_order_hints_asc, get_split_order_hints_desc, SplitOrderHints},\n};\npub use assert_split_transformed_value_arrays::assert_split_transformed_value_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::{sort_by_counter_asc, sort_by_counter_desc};\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray<let SRC_LEN: u32, let DST_LEN: u32>(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec<T, let N: u32>(array: [T; N]) -> BoundedVec<T, N>\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\npub unconstrained fn find_index_hint<T, let N: u32, Env>(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub fn array_length<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\npub fn array_concat<T, let N: u32, let M: u32>(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\npub fn array_merge<T, let N: u32>(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n// Helper fn to create a subarray from a given array\npub fn array_splice<T, let N: u32, let M: u32>(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n assert(M + offset <= N, \"Subarray length larger than array length\");\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\npub fn check_permutation<T, let N: u32>(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = unsafe { find_index_hint(values, |v: Field| min.lt(v)) };\n assert_eq(index, 2);\n}\n\n#[test]\nfn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = unsafe { find_index_hint(values, |v: Field| min.lt(v)) };\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concated = array_concat(array0, array1);\n assert_eq(concated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n"
|
|
5745
5858
|
},
|
|
5746
|
-
"
|
|
5747
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5748
|
-
"source": "
|
|
5859
|
+
"196": {
|
|
5860
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
|
|
5861
|
+
"source": "pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"
|
|
5749
5862
|
},
|
|
5750
|
-
"
|
|
5751
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5752
|
-
"source": "
|
|
5863
|
+
"206": {
|
|
5864
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr",
|
|
5865
|
+
"source": "use crate::{point::Point, traits::{Deserialize, Empty, Serialize}};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pub pk_m: Point,\n pub sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"
|
|
5753
5866
|
},
|
|
5754
|
-
"
|
|
5755
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5756
|
-
"source": "use crate::{
|
|
5867
|
+
"265": {
|
|
5868
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
|
|
5869
|
+
"source": "use crate::traits::{Deserialize, Serialize};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n"
|
|
5757
5870
|
},
|
|
5758
|
-
"
|
|
5871
|
+
"268": {
|
|
5759
5872
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr",
|
|
5760
5873
|
"source": "use crate::{\n address::{aztec_address::AztecAddress, salted_initialization_hash::SaltedInitializationHash},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize, ToField},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n pub inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
5761
5874
|
},
|
|
5762
|
-
"
|
|
5875
|
+
"269": {
|
|
5763
5876
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
|
|
5764
|
-
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n
|
|
5877
|
+
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse ec::{pow, sqrt};\nuse std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key};\n\n// Aztec address\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secrect can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n function_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n function_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"
|
|
5765
5878
|
},
|
|
5766
|
-
"
|
|
5767
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5768
|
-
"source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::scoped::Scoped,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped<PrivateLogData>) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog { fields }\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage())\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\npub fn compute_tx_logs_hash<let N: u32>(logs: [LogHash; N]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; N * 32];\n for offset in 0..N {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"
|
|
5879
|
+
"272": {
|
|
5880
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr",
|
|
5881
|
+
"source": "use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n pub inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
5769
5882
|
},
|
|
5770
|
-
"
|
|
5771
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5772
|
-
"source": "use crate::{point::Point, traits::{Deserialize, Empty, Serialize}};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pub pk_m: Point,\n pub sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"
|
|
5883
|
+
"284": {
|
|
5884
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
|
|
5885
|
+
"source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::scoped::Scoped,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::{arrays::array_concat, field::field_from_bytes};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n tx_hash: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n compute_unique_note_hash(nonce, siloed_note_hash)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped<PrivateLogData>) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog { fields }\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage())\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\npub fn compute_tx_logs_hash<let N: u32>(logs: [LogHash; N]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; N * 32];\n for offset in 0..N {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as std::hash::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks<let N: u32>(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> std::hash::poseidon2::Poseidon2 {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::<N, (N - 1 - (N - 1) % 3) / 3>(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge<let N: u32>(\n in_sponge: std::hash::poseidon2::Poseidon2,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> std::hash::poseidon2::Poseidon2 {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::<N, (N - (N % 3)) / 3>(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop<let N: u32, let M: u32>(\n in_sponge: std::hash::poseidon2::Poseidon2,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> std::hash::poseidon2::Poseidon2 {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert(input[in_len - remainder + i] == 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = std::hash::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let two_pow_64 = 18446744073709551616;\n let empty_sponge = std::hash::poseidon2::Poseidon2::new((in_len as Field) * two_pow_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut contructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(contructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == contructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"
|
|
5773
5886
|
},
|
|
5774
|
-
"
|
|
5775
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5776
|
-
"source": "use crate::traits::{Deserialize, Serialize};\nuse
|
|
5887
|
+
"307": {
|
|
5888
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr",
|
|
5889
|
+
"source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"
|
|
5777
5890
|
},
|
|
5778
5891
|
"308": {
|
|
5779
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5780
|
-
"source": "pub
|
|
5892
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr",
|
|
5893
|
+
"source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"
|
|
5781
5894
|
},
|
|
5782
|
-
"
|
|
5783
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5784
|
-
"source": "
|
|
5895
|
+
"311": {
|
|
5896
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr",
|
|
5897
|
+
"source": "use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress},\n constants::CONTRACT_INSTANCE_LENGTH,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n pub salt: Field,\n pub deployer: AztecAddress,\n pub contract_class_id: ContractClassId,\n pub initialization_hash: Field,\n pub public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n pub fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"
|
|
5785
5898
|
},
|
|
5786
|
-
"
|
|
5787
|
-
"path": "/root/nargo/github.com/noir-lang/
|
|
5899
|
+
"320": {
|
|
5900
|
+
"path": "/root/nargo/github.com/noir-lang/ec/v0.1.2/src/lib.nr",
|
|
5788
5901
|
"source": "// Elliptic curve implementation\n// Overview\n// ========\n// The following three elliptic curve representations are admissible:\npub mod tecurve; // Twisted Edwards curves\npub mod swcurve; // Elliptic curves in Short Weierstrass form\npub mod montcurve; // Montgomery curves\npub mod consts; // Commonly used curve presets\n//\n// Note that Twisted Edwards and Montgomery curves are (birationally) equivalent, so that\n// they may be freely converted between one another, whereas Short Weierstrass curves are\n// more general. Diagramatically:\n//\n// tecurve == montcurve `subset` swcurve\n//\n// Each module is further divided into two submodules, 'affine' and 'curvegroup', depending\n// on the preferred coordinate representation. Affine coordinates are none other than the usual\n// two-dimensional Cartesian coordinates used in the definitions of these curves, whereas\n// 'CurveGroup' coordinates (terminology borrowed from Arkworks, whose conventions we try\n// to follow) are special coordinate systems with respect to which the group operations may be\n// implemented more efficiently, usually by means of an appropriate choice of projective coordinates.\n//\n// In each of these submodules, there is a Point struct and a Curve struct, the former\n// representing a point in the coordinate system and the latter a curve configuration.\n//\n// Points\n// ======\n// Points may be instantiated using the associated function `new`, which takes coordinates\n// as its arguments. For instance,\n//\n// `let p = swcurve::Point::new(1,1);`\n//\n// The additive identity may be constructed by a call to the associated function `zero` of no\n// arguments:\n//\n// `let zero = swcurve::Point::zero();`\n//\n// Points may be tested for equality by calling the method `eq`:\n//\n// `let pred = p.eq(zero);`\n//\n// There is also the method `is_zero` to explicitly check whether a point is the additive identity:\n//\n// `constrain pred == p.is_zero();`\n//\n// Points may be negated by calling the `negate` method and converted to CurveGroup (or affine)\n// coordinates by calling the `into_group` (resp. `into_affine`) method on them. Finally,\n// Points may be freely mapped between their respective Twisted Edwards and Montgomery\n// representations by calling the `into_montcurve` or `into_tecurve` methods. For mappings\n// between Twisted Edwards/Montgomery curves and Short Weierstrass curves, see the Curve section\n// below, as the underlying mappings are those of curves rather than ambient spaces.\n// As a rule, Points in affine (or CurveGroup) coordinates are mapped to Points in affine\n// (resp. CurveGroup) coordinates.\n//\n// Curves\n// ======\n// A curve configuration (Curve) is completely determined by the Field coefficients of its defining\n// equation (a and b in the case of swcurve, a and d in the case of tecurve, and j and k in\n// the case of montcurve) together with a generator (`gen`) in the corresponding coordinate system.\n// For example, the Baby Jubjub curve configuration as defined in ERC-2494 may be instantiated as a Twisted\n// Edwards curve in affine coordinates as follows:\n//\n// `let bjj_affine = tecurve::Curve::new(168700, 168696, tecurve::Point::new(995203441582195749578291179787384436505546430278305826713579947235728471134,5472060717959818805561601436314318772137091100104008585924551046643952123905));`\n//\n// The `contains` method may be used to check whether a Point lies on a given curve:\n//\n// `constrain bjj_affine.contains(tecurve::Point::zero());`\n//\n// The elliptic curve group's addition operation is exposed as the `add` method, e.g.\n//\n// `let p = bjj_affine.add(bjj_affine.gen, bjj_affine.gen);`\n//\n// subtraction as the `subtract` method, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.subtract(bjj_affine.gen, bjj_affine.gen));`\n//\n// scalar multiplication as the `mul` method, where the scalar is assumed to be a Field* element, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.mul(2, tecurve::Point::zero());`\n//\n// There is a scalar multiplication method (`bit_mul`) provided where the scalar input is expected to be\n// an array of bits (little-endian convention), as well as a multi-scalar multiplication method** (`msm`)\n// which takes an array of Field elements and an array of elliptic curve points as arguments, both assumed\n// to be of the same length.\n//\n// Curve configurations may be converted between different coordinate representations by calling the `into_group`\n// and `into_affine` methods on them, e.g.\n//\n// `let bjj_curvegroup = bjj_affine.into_group();`\n//\n// Curve configurations may also be converted between different curve representations by calling the `into_swcurve`,\n// `into_montcurve` and `into_tecurve` methods subject to the relation between the curve representations mentioned\n// above. Note that it is possible to map Points from a Twisted Edwards/Montgomery curve to the corresponding\n// Short Weierstrass representation and back, and the methods to do so are exposed as `map_into_swcurve` and\n// `map_from_swcurve`, which each take one argument, the point to be mapped.\n//\n// Curve maps\n// ==========\n// There are a few different ways of mapping Field elements to elliptic curves. Here we provide the simplified\n// Shallue-van de Woestijne-Ulas and Elligator 2 methods, the former being applicable to all curve types\n// provided above subject to the constraint that the coefficients of the corresponding Short Weierstrass curve satisfies\n// a*b != 0 and the latter being applicable to Montgomery and Twisted Edwards curves subject to the constraint that\n// the coefficients of the corresponding Montgomery curve satisfy j*k != 0 and (j^2 - 4)/k^2 is non-square.\n//\n// The simplified Shallue-van de Woestijne-Ulas method is exposed as the method `swu_map` on the Curve configuration and\n// depends on two parameters, a Field element z != -1 for which g(x) - z is irreducible over Field and g(b/(z*a)) is\n// square, where g(x) = x^3 + a*x + b is the right-hand side of the defining equation of the corresponding Short\n// Weierstrass curve, and a Field element u to be mapped onto the curve. For example, in the case of bjj_affine above,\n// it may be determined using the scripts provided at <https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve> that z = 5.\n//\n// The Elligator 2 method is exposed as the method `elligator2_map` on the Curve configurations of Montgomery and\n// Twisted Edwards curves. Like the simplified SWU method above, it depends on a certain non-square element of Field,\n// but this element need not satisfy any further conditions, so it is included as the (Field-dependent) constant\n//`ZETA` below. Thus, the `elligator2_map` method depends only on one parameter, the Field element to be mapped onto\n// the curve.\n//\n// For details on all of the above in the context of hashing to elliptic curves, see <https://datatracker.ietf.org/doc/id/draft-irtf-cfrg-hash-to-curve-06.html>.\n//\n//\n// *TODO: Replace Field with Bigint.\n// **TODO: Support arrays of structs to make this work.\n// Field-dependent constant ZETA = a non-square element of Field\n// Required for Elligator 2 map\n// TODO: Replace with built-in constant.\nglobal ZETA: Field = 5;\n// Field-dependent constants for Tonelli-Shanks algorithm (see sqrt function below)\n// TODO: Possibly make this built-in.\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n// Higher-order version of scalar multiplication\n// TODO: Make this work so that the submodules' bit_mul may be defined in terms of it.\n//fn bit_mul<T,N>(add: fn(T,T) -> T, e: T, bits: [u1; N], p: T) -> T {\n// let mut out = e;\n// let n = bits.len();\n//\n// for i in 0..n {\n// out = add(\n// add(out, out),\n// if(bits[n - i - 1] == 0) {e} else {p});\n// }\n//\n// out\n//}\n// TODO: Make this built-in.\npub fn safe_inverse(x: Field) -> Field {\n if x == 0 {\n 0\n } else {\n 1 / x\n }\n}\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\npub fn is_square(x: Field) -> bool {\n let v = pow(x, 0 - 1 / 2);\n\n v * (v - 1) == 0\n}\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\nmod tests {\n use crate::montcurve::affine::Point as MGaffine;\n use crate::montcurve::curvegroup::Point as MG;\n use crate::swcurve::affine::Point as SWGaffine;\n use crate::swcurve::curvegroup::Point as SWG;\n use crate::tecurve::affine::Curve as AffineCurve;\n use crate::tecurve::affine::Point as Gaffine;\n use crate::tecurve::curvegroup::Point as G;\n\n #[test]\n fn smoke_test() {\n // Tests may be checked against https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/tree/main/poc\n // Define Baby Jubjub (ERC-2494) parameters in affine representation\n let bjj_affine = AffineCurve::new(\n 168700,\n 168696,\n Gaffine::new(\n 995203441582195749578291179787384436505546430278305826713579947235728471134,\n 5472060717959818805561601436314318772137091100104008585924551046643952123905,\n ),\n );\n // Test addition\n let p1_affine = Gaffine::new(\n 17777552123799933955779906779655732241715742912184938656739573121738514868268,\n 2626589144620713026669568689430873010625803728049924121243784502389097019475,\n );\n let p2_affine = Gaffine::new(\n 16540640123574156134436876038791482806971768689494387082833631921987005038935,\n 20819045374670962167435360035096875258406992893633759881276124905556507972311,\n );\n\n let p3_affine = bjj_affine.add(p1_affine, p2_affine);\n assert(p3_affine.eq(Gaffine::new(\n 7916061937171219682591368294088513039687205273691143098332585753343424131937,\n 14035240266687799601661095864649209771790948434046947201833777492504781204499,\n )));\n // Test scalar multiplication\n let p4_affine = bjj_affine.mul(2, p1_affine);\n assert(p4_affine.eq(Gaffine::new(\n 6890855772600357754907169075114257697580319025794532037257385534741338397365,\n 4338620300185947561074059802482547481416142213883829469920100239455078257889,\n )));\n assert(p4_affine.eq(bjj_affine.bit_mul([0, 1], p1_affine)));\n // Test subtraction\n let p5_affine = bjj_affine.subtract(p3_affine, p3_affine);\n assert(p5_affine.eq(Gaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_affine.contains(bjj_affine.gen)\n & bjj_affine.contains(p1_affine)\n & bjj_affine.contains(p2_affine)\n & bjj_affine.contains(p3_affine)\n & bjj_affine.contains(p4_affine)\n & bjj_affine.contains(p5_affine),\n );\n // Test CurveGroup equivalents\n let bjj = bjj_affine.into_group(); // Baby Jubjub\n let p1 = p1_affine.into_group();\n let p2 = p2_affine.into_group();\n let p3 = p3_affine.into_group();\n let p4 = p4_affine.into_group();\n let p5 = p5_affine.into_group();\n // Test addition\n assert(p3.eq(bjj.add(p1, p2)));\n // Test scalar multiplication\n assert(p4.eq(bjj.mul(2, p1)));\n assert(p4.eq(bjj.bit_mul([0, 1], p1)));\n // Test subtraction\n assert(G::zero().eq(bjj.subtract(p3, p3)));\n assert(p5.eq(G::zero()));\n // Check that these points are on the curve\n assert(\n bjj.contains(bjj.gen)\n & bjj.contains(p1)\n & bjj.contains(p2)\n & bjj.contains(p3)\n & bjj.contains(p4)\n & bjj.contains(p5),\n );\n // Test SWCurve equivalents of the above\n // First the affine representation\n let bjj_swcurve_affine = bjj_affine.into_swcurve();\n\n let p1_swcurve_affine = bjj_affine.map_into_swcurve(p1_affine);\n let p2_swcurve_affine = bjj_affine.map_into_swcurve(p2_affine);\n let p3_swcurve_affine = bjj_affine.map_into_swcurve(p3_affine);\n let p4_swcurve_affine = bjj_affine.map_into_swcurve(p4_affine);\n let p5_swcurve_affine = bjj_affine.map_into_swcurve(p5_affine);\n // Addition\n assert(p3_swcurve_affine.eq(bjj_swcurve_affine.add(p1_swcurve_affine, p2_swcurve_affine)));\n // Doubling\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.mul(2, p1_swcurve_affine)));\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.bit_mul([0, 1], p1_swcurve_affine)));\n // Subtraction\n assert(SWGaffine::zero().eq(bjj_swcurve_affine.subtract(\n p3_swcurve_affine,\n p3_swcurve_affine,\n )));\n assert(p5_swcurve_affine.eq(SWGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve_affine.contains(bjj_swcurve_affine.gen)\n & bjj_swcurve_affine.contains(p1_swcurve_affine)\n & bjj_swcurve_affine.contains(p2_swcurve_affine)\n & bjj_swcurve_affine.contains(p3_swcurve_affine)\n & bjj_swcurve_affine.contains(p4_swcurve_affine)\n & bjj_swcurve_affine.contains(p5_swcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_swcurve = bjj.into_swcurve();\n\n let p1_swcurve = bjj.map_into_swcurve(p1);\n let p2_swcurve = bjj.map_into_swcurve(p2);\n let p3_swcurve = bjj.map_into_swcurve(p3);\n let p4_swcurve = bjj.map_into_swcurve(p4);\n let p5_swcurve = bjj.map_into_swcurve(p5);\n // Addition\n assert(p3_swcurve.eq(bjj_swcurve.add(p1_swcurve, p2_swcurve)));\n // Doubling\n assert(p4_swcurve.eq(bjj_swcurve.mul(2, p1_swcurve)));\n assert(p4_swcurve.eq(bjj_swcurve.bit_mul([0, 1], p1_swcurve)));\n // Subtraction\n assert(SWG::zero().eq(bjj_swcurve.subtract(p3_swcurve, p3_swcurve)));\n assert(p5_swcurve.eq(SWG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve.contains(bjj_swcurve.gen)\n & bjj_swcurve.contains(p1_swcurve)\n & bjj_swcurve.contains(p2_swcurve)\n & bjj_swcurve.contains(p3_swcurve)\n & bjj_swcurve.contains(p4_swcurve)\n & bjj_swcurve.contains(p5_swcurve),\n );\n // Test MontCurve conversions\n // First the affine representation\n let bjj_montcurve_affine = bjj_affine.into_montcurve();\n\n let p1_montcurve_affine = p1_affine.into_montcurve();\n let p2_montcurve_affine = p2_affine.into_montcurve();\n let p3_montcurve_affine = p3_affine.into_montcurve();\n let p4_montcurve_affine = p4_affine.into_montcurve();\n let p5_montcurve_affine = p5_affine.into_montcurve();\n // Addition\n assert(p3_montcurve_affine.eq(bjj_montcurve_affine.add(\n p1_montcurve_affine,\n p2_montcurve_affine,\n )));\n // Doubling\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.mul(2, p1_montcurve_affine)));\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.bit_mul([0, 1], p1_montcurve_affine)));\n // Subtraction\n assert(MGaffine::zero().eq(bjj_montcurve_affine.subtract(\n p3_montcurve_affine,\n p3_montcurve_affine,\n )));\n assert(p5_montcurve_affine.eq(MGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve_affine.contains(bjj_montcurve_affine.gen)\n & bjj_montcurve_affine.contains(p1_montcurve_affine)\n & bjj_montcurve_affine.contains(p2_montcurve_affine)\n & bjj_montcurve_affine.contains(p3_montcurve_affine)\n & bjj_montcurve_affine.contains(p4_montcurve_affine)\n & bjj_montcurve_affine.contains(p5_montcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_montcurve = bjj.into_montcurve();\n\n let p1_montcurve = p1_montcurve_affine.into_group();\n let p2_montcurve = p2_montcurve_affine.into_group();\n let p3_montcurve = p3_montcurve_affine.into_group();\n let p4_montcurve = p4_montcurve_affine.into_group();\n let p5_montcurve = p5_montcurve_affine.into_group();\n // Addition\n assert(p3_montcurve.eq(bjj_montcurve.add(p1_montcurve, p2_montcurve)));\n // Doubling\n assert(p4_montcurve.eq(bjj_montcurve.mul(2, p1_montcurve)));\n assert(p4_montcurve.eq(bjj_montcurve.bit_mul([0, 1], p1_montcurve)));\n // Subtraction\n assert(MG::zero().eq(bjj_montcurve.subtract(p3_montcurve, p3_montcurve)));\n assert(p5_montcurve.eq(MG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve.contains(bjj_montcurve.gen)\n & bjj_montcurve.contains(p1_montcurve)\n & bjj_montcurve.contains(p2_montcurve)\n & bjj_montcurve.contains(p3_montcurve)\n & bjj_montcurve.contains(p4_montcurve)\n & bjj_montcurve.contains(p5_montcurve),\n );\n // Elligator 2 map-to-curve\n let ell2_pt_map = bjj_affine.elligator2_map(27);\n\n assert(ell2_pt_map.eq(MGaffine::new(\n 7972459279704486422145701269802978968072470631857513331988813812334797879121,\n 8142420778878030219043334189293412482212146646099536952861607542822144507872,\n )\n .into_tecurve()));\n // SWU map-to-curve\n let swu_pt_map = bjj_affine.swu_map(5, 27);\n\n assert(swu_pt_map.eq(bjj_affine.map_from_swcurve(SWGaffine::new(\n 2162719247815120009132293839392097468339661471129795280520343931405114293888,\n 5341392251743377373758788728206293080122949448990104760111875914082289313973,\n ))));\n }\n\n}\n"
|
|
5789
5902
|
},
|
|
5790
|
-
"
|
|
5903
|
+
"339": {
|
|
5791
5904
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/account.nr",
|
|
5792
5905
|
"source": "use dep::aztec::{\n context::PrivateContext,\n hash::poseidon2_hash_with_separator,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n};\n\nuse crate::auth::{compute_authwit_message_hash, IS_VALID_SELECTOR};\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"
|
|
5793
5906
|
},
|
|
5794
|
-
"
|
|
5907
|
+
"340": {
|
|
5795
5908
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr",
|
|
5796
5909
|
"source": "use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage()\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage()\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"
|
|
5797
5910
|
},
|
|
5798
|
-
"
|
|
5911
|
+
"341": {
|
|
5799
5912
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr",
|
|
5800
5913
|
"source": "use crate::entrypoint::function_call::FunctionCall;\nuse dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage()\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage()\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"
|
|
5801
5914
|
},
|
|
5802
|
-
"
|
|
5915
|
+
"344": {
|
|
5803
5916
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr",
|
|
5804
5917
|
"source": "#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"
|
|
5805
5918
|
},
|
|
5806
|
-
"
|
|
5919
|
+
"345": {
|
|
5807
5920
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr",
|
|
5808
5921
|
"source": "use dep::aztec::{context::{gas::GasOpts, PrivateContext, PublicContext}, hash::hash_args_array};\nuse dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::{\n CANONICAL_AUTH_REGISTRY_ADDRESS, GENERATOR_INDEX__AUTHWIT_INNER,\n GENERATOR_INDEX__AUTHWIT_NULLIFIER, GENERATOR_INDEX__AUTHWIT_OUTER,\n },\n hash::poseidon2_hash_with_separator,\n};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR: Field = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` has authorized the current call with a valid authentication witness\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([\n context.msg_sender().to_field(),\n context.selector().to_field(),\n context.args_hash,\n ]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context\n .static_call_private_function(\n on_behalf_of,\n comptime { FunctionSelector::from_signature(\"verify_private_authwit(Field)\") },\n [inner_hash],\n )\n .unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allows the same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` has authorized the current call in the authentication registry\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub unconstrained fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n) {\n let inner_hash = compute_inner_authwit_hash([\n (*context).msg_sender().to_field(),\n (*context).selector().to_field(),\n (*context).get_args_hash(),\n ]);\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` has authorized a specific `inner_hash` in the authentication registry\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that has allegedly authorized the `inner_hash`\n */\npub unconstrained fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n let results: [Field] = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"consume((Field),Field)\") },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default(),\n );\n assert(results.len() == 1, \"Invalid response from registry\");\n assert(results[0] == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N],\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash =\n compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computes the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that has authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [consumer.to_field(), chain_id, version, inner_hash],\n GENERATOR_INDEX__AUTHWIT_OUTER,\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub unconstrained fn set_authorized(\n context: &mut PublicContext,\n message_hash: Field,\n authorize: bool,\n) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_authorized(Field,bool)\") },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub unconstrained fn set_reject_all(context: &mut PublicContext, reject: bool) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_reject_all(bool)\") },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\n}\n"
|
|
5809
5922
|
},
|
|
5810
|
-
"
|
|
5923
|
+
"403": {
|
|
5811
5924
|
"path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr",
|
|
5812
5925
|
"source": "use dep::aztec::prelude::{NoteHeader, NoteInterface, NullifiableNote, PrivateContext};\n\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::{get_nsk_app, get_public_keys},\n protocol_types::{address::AztecAddress, constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note_custom_interface, generators::Ga1 as Gx_1, generators::Ga2 as Gx_2,\n generators::Ga3 as Gy_1, generators::Ga4 as Gy_2, generators::Ga5 as G_owner, generators::G_slot\n};\n\nuse std::hash::from_field_unsafe;\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: u32 = 5;\n\n// Stores an ECDSA public key composed of two 32-byte elements\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note_custom_interface]\npub struct EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\n owner: AztecAddress,\n}\n\nimpl NoteInterface<ECDSA_PUBLIC_KEY_NOTE_LEN> for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = owner\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n\n [x, last_x, y, last_y, self.owner.to_field()]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x:[u8; 32] = serialized_note[0].to_be_bytes();\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes::<32>()[31];\n\n let part_y:[u8; 32] = serialized_note[2].to_be_bytes();\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes::<32>()[31];\n\n EcdsaPublicKeyNote { x, y, owner: AztecAddress::from_field(serialized_note[4]), header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] = [0; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = EcdsaPublicKeyNote::get_note_type_id().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn get_note_type_id() -> Field {\n comptime\n {\n let bytes = \"EcdsaPublicKeyNote\".as_bytes();\n let hash = aztec::protocol_types::hash::poseidon2_hash_bytes(bytes);\n let hash_bytes = hash.to_be_bytes::<4>();\n aztec::protocol_types::utils::field::field_from_bytes(hash_bytes, true)\n }\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn compute_note_hash(self) -> Field {\n let serialized = self.serialize_content();\n std::embedded_curve_ops::multi_scalar_mul(\n [Gx_1, Gx_2, Gy_1, Gy_2, G_owner, G_slot],\n [\n from_field_unsafe(serialized[0]),\n from_field_unsafe(serialized[1]),\n from_field_unsafe(serialized[2]),\n from_field_unsafe(serialized[3]),\n from_field_unsafe(serialized[4]),\n from_field_unsafe(self.get_header().storage_slot)\n ]\n ).x\n }\n}\n\nimpl NullifiableNote for EcdsaPublicKeyNote {\n\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m_hash = get_public_keys(self.owner).npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let owner_npk_m_hash = get_public_keys(self.owner).npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], owner: AztecAddress) -> Self {\n EcdsaPublicKeyNote { x, y, owner, header: NoteHeader::empty() }\n }\n}\n"
|
|
5813
5926
|
},
|
|
5814
|
-
"
|
|
5927
|
+
"404": {
|
|
5815
5928
|
"path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_r_account_contract/src/main.nr",
|
|
5816
|
-
"source": "// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaRAccount {\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note,\n
|
|
5929
|
+
"source": "// Account contract that uses ECDSA signatures for authentication on random version of the p256 curve (to use with touchID).\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaRAccount {\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note,\n macros::{functions::{initializer, noinitcheck, private, view}, storage::storage},\n };\n use dep::aztec::prelude::{PrivateContext, PrivateImmutable};\n\n use dep::authwit::{\n account::AccountActions,\n auth_witness::get_auth_witness,\n entrypoint::{app::AppPayload, fee::FeePayload},\n };\n\n use dep::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n public_key: PrivateImmutable<EcdsaPublicKeyNote, Context>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\n let this = context.this_address();\n let mut pub_key_note = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n storage.public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(\n &mut context,\n this,\n this,\n ));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[private]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\n // Load auth witness\n let witness: [Field; 64] = unsafe { get_auth_witness(outer_hash) };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n std::ecdsa_secp256r1::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n hashed_message,\n )\n }\n}\n"
|
|
5817
5930
|
}
|
|
5818
5931
|
}
|
|
5819
5932
|
}
|