@aztec/accounts 3.0.0-nightly.20260104 → 3.0.0-nightly.20260106
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 +25 -423
- package/artifacts/EcdsaRAccount.json +25 -423
- package/artifacts/SchnorrAccount.json +92 -640
- package/artifacts/SchnorrSingleKeyAccount.json +17 -17
- package/artifacts/SimulatedAccount.json +17 -160
- package/package.json +6 -6
|
@@ -1894,7 +1894,7 @@
|
|
|
1894
1894
|
}
|
|
1895
1895
|
},
|
|
1896
1896
|
"bytecode": "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",
|
|
1897
|
-
"debug_symbols": "rb3djqPLdWX7LrrWBSPWT3zRr9IwDNmtbggQZENtH+DA8Luf/FtjlNSoPLv39k1xZVZVTJLJOcnMXBzzP373P/74T//+v/7xT3/5n//yv3/33/77f/zun/76pz//+U//6x///C///Id/+9O//OXts//xu9f7Hyt/999W/Ofvf7f46O2D/f7Bef9g//53p74u++vyvF++/av4+C/vf/v+f/Ljo/v20evto3r/aL/9i3g7LT8v6vOiPy/O58XzefH2//rtxNfnxfq8eLsa5+0iPi/y8+LtlPt20Z8Xb6fcN7mea7//8+2juZn/+G9//eMf3//mh9v9dm/86x/++se//Nvv/ttf/v3Pf/797/6fP/z53z/+0f/+1z/85ePy3/7w17e/ff3+d3/8y/94u3w78H/+6c9/fJ/+8/f+79fP/+t67d5f/3294lUcsZ78pYfse+LrjHitX3VEZ3+d8Hx8wb4O6PtLD3ju+jrgvvqnB+TPD4iuuQ0nOSBf628OqG/uhZwDdp+fHvDLrsETPz3gm/vgxnwZbuZP74Pnt96Eb65Bnvt1QMfyGpxffMDumofjPit+zRHRex5L0ccjIvKXu2ItTNE/PJyeX/54rJPziO7wzlzrb6/Fyu8e03Nf3MhfcyX2XvOI2PuHR3XU3x6x+r/gjPPNw+LJeVzkU96fcfevO6O/OeP+9tuyv3ts9J0z1qlvzljfnHHrmTPuWT+9Ld9dj94vrBY/vze++cqu/Zy5FvF6/aozftm1+O4hmmvuip0dP/XJ/u4hGpmc8fKM83dfkW8eXef2PLqe1w9PIJH1t2d8k57nvOb+PH/zyPj7M755hAbxl8trsetvT4hvPf/MLdnx2j8/47vH5/JFwXrq150Rr8ujaz8/PyO+eULj+ejNML/qhLfXN7686W9uSX2XPKtMrx9endxfc0NO/bovaz8vnptv/PyM57/gS3J/85fk/tb74luT3AeT/Mp786zmZUa8fnpGfvfQOscngvtzo2X+1nvz2xPInLv7V53wSy2S5zdb5Nu78/rgvPvnd+e3zyWX16/148u2v3suqW9f+hX5+XZ3XB8bf/cy+vtD3p4LOOT54fnkl39Ds7J5DZrXZ5P6xS+EVxEZq+7zsxPqu29J1ppn1lg/+KT+9vm9vknPe394dPk6+O1V4N+c0L/9ubnOb39urue3PjfX/e3Pzf367c/N339ZcxI09g9e+/sv63dH7Dgc8YPX/u6Ijt/+vd53Z8QrN4/QV/4QPX/ntO8Pib08pH9q1+5v/arb1vPTbzu/v1OfuUfi7Yr89E797kEar4ev7Zt9z09vy7eHRHKHRPzw1PR3h5xvvwPuPU+Qb/M3X5rvrwlJ+nal6qdfmrO/e17ge/Fd+fMH2rdfmthj3cjXr7NMLiyT+VPLnPoveKSe/4JH6ndX5Jd69/v7o3mk5g8vaf/+/rjffQvrk+R+np89uzzf/cjqksn1+sFzb893/xdXg0f62rl/djW+PSLS1+a3f3pLvomxUx3zqvZtrvjZg+PJ/wLXfnfIXlW8Elv1w8v8vz/k+5vDz3TP20/Tzq875PCjllN3rZ8e8k0I3R+ecaN++lj/9svbvIZZP76o/L95hDzVvEB+/fSI+8335H3eflQ/P685tX76CPn+kIr0kP7pF/d+83Xpe+bL0vf+8FX55VfjaZ4s+zmv+6tuSxdfl+7ev+6B2ot79fTbDxZ/ek3Odzfn8Q754dcw/ctPuMFNub1+1Qm/6IsSv/lWxG+9Fd8+rZQvovqHly5/97Ty9tuu3/4tx3rlb/+e4+1bzt/6Tcfbt1a//Ycd63V++0873r7d/a0/7vj2iF/604q1Xr/5xxXf3yG/8OcV3z5U+/hQvfenD9UV3z7XrpfPtfnTCFvf/appPfwYfr0F609/hfv/c1V6H65K//A7yP/jqvR/wSuQb0/5xS9BvvsOZj/8Di9ef/e7iX94+/AP//ynv/7tpsL7b/nfH1vxvizwvhhwPy/z9XW5vi7312V8XebXZX1d9tfl+br8Oi+/zquv8+rrvPo6r77Oq6/z6uu8+jqvvs6rr/Pq67z+Oq+/zuuv8/rrvP46r7/O66/z+uu8/jqvv847X+edr/PO13nn67zzdd75Ou98nXe+zjtf552v856v8571btm3y/11Ge8/z3q7zK/LenfP22V/Xb6dV2+Ppud5/13V2+X9vLyvr8v3/Y23x+zd7w+Mt8v4unw777ydd+vrsr8uz9fl83V5Py/X6zXD+vy2+C2o3oZ4H963QvJ9yBlqhvdjz/vwfu7zPjwz3M/v4t6CbIb1vh3xPuwZYoZ898r7UDP0DGeG5/1X0e/Dff/V8tuw3895V3/ffrnv1/l9/+VzeN9d2e9Dz/C+v/J+zvsezOdwv4b3XZjP4f3A93/8vgjzcfL7KsznZ+rrdr2vw3xc53erfA7PDPfrqr675XNYM+wZYoa5yTk3Oecmv5vm45bm3OR323wM7775HNbXnfDumPffJ6x3y3wONUPPcGZ4v+0f/+t+De/G+RzWDHuGmCFnqBl6hjPDnNxz8pmTz5x85uQzJ585+czJZ04+c/KZk8+c/MzJz5z8zMnPnPzMyc+c/MzJz5z8zMnPnHzn5Dsn3zn5zsl3Tr5z8p2T75x85+T7dfJ+vWZYM+wZYoacoWboGc4Mzwxz8pqT15y85uQ1J685ec3Ja05ec/Kak9ecvOfkPSfvOXnPyXtO3nPynpP3nLzn5D0nx5wcc3LMyTEnx5wcc3LMyTEnx5wcc3LOyTkn55ycc3LOyTkn55ycc3LOyTkn15xcc3LNyTUn15xcc3LNyTUnjwf3eHCPB/d4cI8H93hwjwf3eHCPB/d4cI8H93hwjwf3eHCPB/d4cI8H93hwjwf3eHCPB/d4cI8H93hwjwf3eHCPB/d4cI8H93hwjwf3eHCPB/d4cI8H93hwjwf3eHCPB/d4cI8H93gwxoMxHozxYIwHYzwY48EYD8Z4MMaDMR6M8WCMB2M8GOPBGA/GeDDGgzEejPFgjAdjPBjjwRgPxngwxoMxHozxYIwHYzwY48EYD8Z4MMaDMR6M8WCMB2M8GOPBGA/GeDDGgzEejPFgjAdjPBjjwRgPxngwxoMxHozxYIwHYzwY48EYD8Z4MMaDMR6M8WCMB2M8GOPBGA/GeDDGgzEejPFgjAdjPBjjwRgPxngwxoMxHozxYIwHYzwY48EYD8Z4MMaDMR6M8WCMB2M8GOPBGA/GeDDGgzEejPFgjAdjPBjjwRgPxngwxoMxHozxYIwHczyY48EcD+Z4MMeDOR7M8WCOB3M8mOPBHA/meDDHgzkezPFgjgdzPJjjwRwP5ngwx4M5HszxYI4HczyY48EcD+Z4MMeDOR7M8WCOB3M8mOPBHA/meDDHgzkezPFgjgdzPJjjwRwP5ngwx4M5HszxYI4HczyY48EcD+Z4MMeDOR7M8WCOB3M8mOPBHA/meDDHgzkezPFgjgdzPJjjwRwP5ngwx4M5HszxYI4HczyY48EcD+Z4MMeDOR7M8WCOB3M8mOPBHA/meDDHgzkezPFgjgdzPJjjwRwP5ngwx4M5HszxYI4HczyY48EcD+Z4sMaDNR6s8WCNB2s8WOPBGg/WeLDGgzUerPFgjQdrPFjjwRoP1niwxoM1HqzxYI0HazxY48EaD9Z4sMaDNR6s8WCNB2s8WOPBGg/WeLDGgzUerPFgjQdrPFjjwRoP1niwxoM1HqzxYI0HazxY48EaD9Z4sMaDNR6s8WCNB2s8WOPBGg/WeLDGgzUerPFgjQdrPFjjwRoP1niwxoM1HqzxYI0HazxY48EaD9Z4sMaDNR6s8WCNB2s8WOPBGg/WeLDGgzUerPFgjQdrPFjjwRoP1niwxoM1HqzxYI0HazxY48EaD9Z4sMaDNR6s8WCNB3s82OPBHg/2eLDHgz0e7PFgjwd7PNjjwR4P9niwx4M9HuzxYI8HezzY48EeD/Z4sMeDPR7s8WCPB3s82OPBHg/2eLDHgz0e7PFgjwd7PNjjwR4P9niwx4M9HuzxYI8HezzY48EeD/Z4sMeDPR7s8WCPB3s82OPBHg/2eLDHgz0e7PFgjwd7PNjjwR4P9niwx4M9HuzxYI8HezzY48EeD/Z4sMeDPR7s8WCPB3s82OPBHg/2eLDHgz0e7PFgjwd7PNjjwR4P9niwx4M9HuzxYI8HezzY48EeD/Z4sMeDPR7s8WCPB3s82OPBHg/2ePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwjAfPePCMB8948IwHz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB5/x4DMefMaDz3jwGQ8+48FnPPiMB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB+948I4H73jwjgfvePCOB++7B99+Vf4+LabNFEzJVEzNdJgepvs1vf3xclyO2zEc07Ec2/E4Po6qLdWWaku1pdpSbam2VFuqLdWWalu1rdpWbau2VduqbdW2alu1rVqoFqqFaqFaqBaqhWqhWqgWqqVqqVqqlqqlaqlaqpaqpWqpWqlWqpVqpVqpVqqVaqVaqVaqtWqtWqvWqrVqrVqr1qq1aq3aUe2odlQ7qh3VjmpHtaPaUe2o9qj2qPao9qj2qPao9qj2qPao9qh2VbuqXdWuale1q9pV7ap2VTNLllmyzJJlliyzZJklyyxZZskyS5ZZssySZZYss2SZJcssWWbJMkuWWbLMkmWWLLNkmSXLLFlmyTJLllmyzJJlliyzZJklyyxZZskyS5ZZssySZZYss2SZJcssWWbJMkuWWbLMkmWWLLNkmSXLLFlmyTJLllmyzJJlliyzZH28hPicgun9aXN/TMX0ofSxxvWZI5/j43gZP3Pkc1yO2/Hjdn2c+5kjn2M5tuNxfBwv42eOfI7LcTuqdlQ7qh3VjmpHtaPao9qj2qPao9qj2qPao9qj2qPao9pV7ap2VbuqXdWuale1q9pV7aK2Xy/H5bgdwzEdy7Edj+PjqNpSbam2VFuqLdWWaku1pdpSbam2VduqbdW2alu1rdpWbau2VduqhWqhWqgWqoVqoVqoFqqFaqFaqpaqpWqpWqqWqqVqqVqqlqqVaqVaqVaqlWqlWqlWqpVqpVqr1qq1ambJNku2WbLNkm2WbLNkmyXbLNlmyTZLtlmyzZJtlmyzZJsl2yzZZsk2S7ZZss2SbZZss2SbJdss2WbJNku2WbLNkm2WbLNkmyXbLNlmyTZLtlmyzZJtloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhlqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllpRZUmZJmSVllrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ0mZJmyVtlrRZ8rlo+P7G4M9Nw89pMW2mYHr/gXJ9TMXUTO+/iu2P6eFzd6aP3/N+TotpMwUTGg8aDxofv+79nNB40LhoXDQuGheNi8ZF46Jx0bho3NH43EP8nBbTZgqmZCqmZjpMDxMaC42FxkJjobHQWGgsNBYaC42FxkZjo7HR2GhsNDYaGw3eqH14p/bhrdqH92p/ril+TmgEGoFGoBFoBBqBRqCRaCQaOY/dz5XFzwmNj/dwr4+pmQ7T8/XG7o/Fxc/p443cn9Ni2kzBlEzF1F9vAv9YYPyaHqY707vhP94j/rm7+HxMwZRMxdRMX0sQiw3GdXxrt+/t9s3dvrvbt3f7/m7f4P3DO7zR8D3evMmbbcbFOuNin3Gx0LjYaFysNC52GhdLjYutxsVa42KvcbHYuNhsXKw2LnYbF8uNi+3GxXrjYr9xseC42HBcrDgudhwXS46LLcfFmuNiz3Gx6LjYdFysOi52HRfLjottx8W642LfcbHwuNh4XKw8LnYeF0uPi63HxdrjYu9xsfi42HxcrD4udh8Xy4+L7cfF+uNi/3GxALnYgFysQC52IBdLkIstyMUa5GIPcrEIudiEXKxCLnYhF8uQi23IxTrkYh9ysRC52IhcrEQudiIXS5GLrcjFWuRiL3KxGLnYjFysRi52IxfLkYvtyMV65GI/crEgudiQXKxILnYkF0uSiy3JxZrkYk9ysSi52JRcrEoudiUXy5KLbcnFuuRiX3I9whykOYhzkOcg0EGig0gHmQ4/QB3QwOfsTi6WJxfbk4v1ycX+5GKBcrFBuVihXOxQLpYoF1uUizXKxR7lYpFysUm5WKVc7FIulikX25SLdcrFPuVioXKxUblYqVzsVC6WKhdblYu1ysVe5WKxcrFZuVitXOxWLpYrF9uVi/XKxX7lYsFysWG5WLFc7FguliwXW5aLNcvFnuVi0XKxablYtVzsWi6WLRfblot1y8W+5WLhcrFxuVi5XOxcLpYuF1uXi7XLxd7lYvFysXm5WL1c7F4uli8X25eL9cvF/uViAXOxgblYwVzsYC6WMBdbmIs1zMUe5mIRc7GJuVjFXOxiLpYxF9uYi3XMxT7mYiFzsZG5WMlc7GQuljIXW5mLtczFXuZiMXOxmblYzVzsZi6WMxfbmeuKb5HfIsBFgosIFxkuQlykuIhx+YHj8qWxX5JcRLnIchHmIs1FnIs8F4EuEl1AurxguryAurygurzAurzgurwAu7wgu7xAu7xgu7yAu7ygu7zAu7zgu7wAvLwgvLxAvLxgvLyAvLygvLzAvLzgvLwAvbwgvbxAvbxgvbyAvbygvbzAvbzgvbwAvrwgvrxAvrxgvryAvrygvrzAvrzgvrwAv7wgv7xAv7xgv7yAv7ygv7zAv7zgv7wAwLwgwLxAwLxgwLyAwLygwLzAwLzgwLwAwbwgwbxAwbxgwbyAwbygwbzAwbzgwbwAwrwgwrxAwrxgwryAwrygwrzAwrzgwrwAw7wgw7xAw7xgw7yAw7ygw7zAw7zgw7wAxLwgxLxAxLxgxLyAxLygxLzAxLzgxLwAxbwgxbxAxbxgxbzw+cLnC58vfL7w+cLnC58vfL7w+cLnS3TTD+wmNKQ3iW+S3yTASYKTCCcZTvh84fOFzxc+X/h84fOFzxc+X/h84fOFzxc+X/h84fOFzxc+X/h84fOFzxc+X/h84fOFzxc+X/h84fOFzxc+X/h84fOFzxc+X/h84fOFzxc+X/h84fOFz+GtbYBrG+LaBrm2Ya5toGsb6toGu7bhrm3Aaxvy2ga9tmGvbeBrG/raBr+24a9tAGwbAtsGwbZhsG0gbBsK2wbDtuGwbUBsGxLbBsW2YbFtYGwbGtsGx7bhsW2AbBsi2wbJtmGybaBsGyrbBsu24bJtwWyS2USzyWYTziadTTybfDYBbRLaRLTJaBPSJqVNTJucNkFtktpEtclq+wHWJq3tB1wbGgLbJLaJbJPZJrRNahs+l9smuE1ym+g22W3C26S3iW+T3ybATYKbCDcZbkLcpLiJcZPjJshNkpsoN1luwtykuYlzk+cm0E2im0g3mW5C3aS6iXWT6ybYTbKbaDfZbsLdpLuJd5PvJuBNwpuINxlvQt6kvIl5k/Mm6E3Sm6g3WW/C3qS9iXuT9ybwTeKbyDeZb0LfpL6JfZP7JvhN8pvoN9lvwN829LcN/m3Df9sA4DYEuA0CbsOA20DgNhS4DQZuw4HbgOA2JLgNCm7DgtvA4DY0uA0ObsOD2wDhNkS4DRJuw4TbQOE2VLgNFm7DhduA4TZkuB3iGeUzCmj8gdCIhoxGIY1SGsU0ymnE51DiNpi4DSduA4rbkOI2qLgNK24Di9vQ4ja4uA0vbgOM2xDjNsi4DTNuA43bUOM22LgNN24DjtuQ4zbouA07bgOP29DjNvi4DT9uA5DbEOQ2CLkNQ24DkdtQ5DYYuQ1HbgOS25DkNii5DUtuA5Pb0OQ2OLkNT24DlNsQ5TZIuQ1TbgOV21DlNli5DVduA5bbkOU2aLkNW24Dl9vQ5TZ4uQ1fbgOY2xDmNoi5DWNuA5nbUOY2mLkNZ24DmtuQ5jaouQ1rbgOb29DmNri5DW9uA5zbEOc2yLkNc24DndtQ5zbYuQ13bgOe25DnNui5DXtuA5/b0Oc2+LkNf24DoNsQ6DYIug2DbgOh21DoNhi6DYdup0BWiawiWWWy/gBlRUMsq1xWwaySWfE5TLoNlG5Dpdtg6TZcug2YbkOm26DpNmy6DZxuQ6fb4Ok2fLoNoG5DqNsg6jaMug2kbkOp22DqNpy6DahuQ6rboOo2rLoNrG5Dq9vg6ja8ug2wbkOs2yDrNsy6DbRuQ63bYOs23LoNuG5Drtug6zbsug28bkOv2+DrNvy6DcBuQ7DbIOw2DLsNxG5Dsdtg7DYcuw3IbkOy26DsNiy7DcxuQ7Pb4Ow2PLsN0G5DtNsg7TZMuw3UbkO122DtNly7DdhuQ7bboO02bLsN3G5Dt9vg7TZ8uw3gbkO42yDuNoy7DeRuQ7nbYO42nLsN6G5Dutug7jasuw3sbkO72+DuNry7DfBuQ7zbIO82zLsN9G5DvdslglkGsxBmKcximH/gMKMhiVkUsyxmfA4Bb4PA2zDwNhC8DQVvg8HbcPA2ILwNCW+Dwtuw8DYwvA0Nb4PD2/DwNkC8DRFvg8TbMPE2ULwNFW+Dxdtw8TZgvA0Zb4PG27DxNnC8DR1vg8fb8PE2gLwNIW+DyNsw8nbxPuZdvI95F+9j3sX7mHfxPubdvI95N+9j3s37mHfzPubdvI95N+9j3s37mHfzPubdvI9590u1pdpSbam2VFuqLdWWaku1pdpSbau2VduqbdW2alu1rdpWbau2VQvVQrVQLVQL1UK1UC1UC9VCtVQtVUvVUrVULVVL1VK1VC1VK9VKtVKtVCvVSrVSrVQr1Uq1Vq1Va9VatVatVWvVWrVWrVU7qh3VjmpHtaPaUe2odlQ7qh3VHtUe1R7VHtUe1R7VHtUe1R7VHtWuale1q9pV7apmlrRZ0mZJmyVtlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJZ+owc/pzvTxkmN/TIvpQ2l9jOGYjuXYjsfxcZwt4H3Y8d+HHf992PHfhx3/fdjx34cd/33Y8d+HHf992PHf56j2qPao9qj2qPao9qj2qPao9qj2qHZVu6pd1a5qV7Wr2lXtqnZVY8d/P+z474cd//2w478fdvz3w47/ftjx3w87/vthx38/7Pjv56XaUm2ptlRbqi3VlmpLtaXaUm2ptlXbqm3Vtmpbta3aVm2rtlXbqoVqoVqoFqqFaqFaqBaqhWqhWqqWqqVqqVqqlqqlaqlaqpaqlWqlWqlWqpVqpVqpVqqVaqVaq9aqtWqtWqvWqrVqrVqrZpY8ZsljljxmyWOWPGbJY5Y8ZsljljxmyWOWPGbJY5Y8ZsljljxmyWOWPGbJY5Y8ZsljljxmyWOWPGbJY5Y8ZsljljxmyWOWPGbJY5Zcs+SaJdcsuWbJNUuuWXLNkmuWXLPkmiXXLLlmyTVLrllyzZJrllyz5Jol1yy5Zsk1S65Zcs2Sa5Zcs+SaJdcsuWbJNUuuWXLNkmuWXLPkmiXXLLlmyTVLrllyzZJrllyz5Jol1yy5Zsk1S65Zcs2Sa5Zcs+SaJdcsuWbJNUuuWXLNkmuWXLPkmiXXLLlmyTVLrllyzZJrllyz5Jol1yy5Zsk1S65Zcs2Sa5Zcs+SaJdcsuWbJNUuuWXLNkmuWXLPkmiXXLLlmyTVLrllyzZJrllyz5Jol1yy5Zsk1S65Zcs2Sa5Zcs+SaJdcsuWRJvMiSeJEl8SJL4kWWxIssiRdZEi+yJF5kSbzIkni9VFuqLdWWaku1pdpSbam2VFuqLdW2alu1rdpWbau2VduqbdW2alu1UC1UC9VCtVAtVAvVQrVQLVRL1VK1VC1VS9VStVQtVUvVUrVSrVQr1Uq1Uq1UK9VKtVKtVGvVWrVWrVVr1Vq1Vq1Va9VataPaUe2odlQ7qh3VjmpHtaPaUe1R7VHtUe1R7VHtUe1R7VHtUe1R7ap2VbuqXdWuale1q9pV7apmliyzZJklyyxZZskyS5ZZssySZZYss2SZJcssWWbJMkuWWbLMkmWWLLNkmSXLLFlmyTJLllmyzJJlliyzZJklyyxZZskyS5ZZssySZZYss2SZJcssWWbJMkuWWbLMkmWWLLNkmSXLLFlmyTJLllmyzJJlliyzZJklyyxZZskyS5ZZssySZZYss2SZJcssWWbJMkuWWbLMEhmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQDBmSIUMyZEiGDMmQIRkyJEOGZMiQjM9dz/yYNlMwJVMxve8J1Md0mB6m919w9Ps0RIWIISrE567n5xRMyVRMaCQaicbHbsjHVGgUGoVGoVFoFBqFRqFRaBQajUaj0Wg0Go1Go9FoNBqNRqNx0DhoHDQOGgeNg8ZB46Bx0DhoPGg8aDxoPGg8aDxoPGg8aDxoPGhcNC4aF42LxkXjonHRuGhcNIacEjnklMghp0QOOSVyyCnxueuZH1MxNX97Pkkd8bHr+TXdmd7N/3z8u3fvf02bKZiSqZia6TA9n3yO+Nj1/JzeLf81Lab9Se+Izw3P52MqpmY6TA/T14ZOsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWndt33fFn7b+P1D5Tcaln7b+m3tt73fFH+z4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RlseAYbnsGGZ7DhGWx4BhuewYZnsOEZbHgGG57Bhmew4RnUIAc9yEERctCEHFQhB13IQRly0IYc1CEHfchBIXLQiBxUIgedyEEpctCKHNQiB73IQTFy0IwcVCMH3chBOXLQjhzUIwf9yEFBctCQHFQkBx3JQUly0JIc1CQHPclBUXLQlBxUJQddyUFZctCWHNQlB33JQWFy0JgcVCYHnclBaXLQmhzUJge9yUFxctCcHFQnB93JQXly0J4c1CcH/clBgXLQoBxUKAcdykGJctCiHNQoBz3KQZFy0KQcVCkHXcpBmXLQphzUKQd9ykGhctCoHFQqB53KQaly0Koc1CoHvcpBsXLQrBxUKwfdykG5ctCuHNQrB/3KQcFy0LAcVCwHHctByXLQshzULAc9y0HRctC0HFQtB13LQdly0LYc1C0HfctB4XLQuBxULgedy0HpctC6HNQuB73LQfFy0LwcVC8H3ctB+XLQvhzULwf9y0EBc9DAHFQwBx3MQQlz0MIc1DAHPcxBEXPQxBxUMQddzEEZc9DGHNQxB33MQSFz0MgcVDIHncxBKXPQyhzUMge9zEExc9DMHFQzB93MQTlz0M4c1DMH/cxBQXPQ0BxUNAcdzUFJc9DSHNQ0Bz3NQVFz0NQcVDUHXc1BWXPQ1hzUNQd9zUFhc9DYHBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPA+JhQDwMiIcB8TAgHgbEw4B4GBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAhHibEw4R4mBAPE+JhQjxMiIcJ8TAXPod4+DZtpmBKpmJqpsP0MKGBzyEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTDhHiYEA8T4mFCPEyIhwnxMCEeJsTD3LyPOTdMhNwwEXLDRMgNEyE3TITcMBFyw0TIDRMhN0yE3K1aq9aqHdWOake1o9pR7ah2VDuqHdWOao9qj2qPao9qj2qPao9qj2qPao9qV7Wr2lXtqnZVu6pd1a5qVzWYCBkwETJgImTARMiAiZABEyEDJkIGTIQMmAgZMBEyXqot1ZZqS7Wl2lJtqbZUW6ot1ZZqW7Wt2lZtq7ZV26pt1bZqW7WtWqgWqoVqoVqoFqqFaqFaqBaqpWqpWqqWqqVqqVqqlqqlaqlaqVaqlWqlWqlWqpVqZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWhFkSZkmYJWGWpFmSZkmaJWmWpFmSZkmaJWmWpFmSZkmaJWmWpFmSZkmaJWmWpFmSZkmaJWmWfEIZP6fF9P40uj+mYPpQWh9jObbjcXwcL+NnjnyOswWc9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxp33MaR9z2sec9jGnfcxpH3Pax5z2Mad9zGkfc9rHnPYxZ5slbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccskSGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJ/Nz1zI8pmYqpmQ7T+55AfUz3c6rXEBXqc9ezP6bN54IpmYqpmQ7Tw4TGQuNjN+RzQmOhsdBYaCw0FhoLjYXGRmOjsdHYaGw0NhobjY3GRmOjEWgEGoFGoBFoBBqBRqARaAQaiUaikWgkGolGopFoJBqJRqJRaBQahUahUWgUGoVGoVFoFBqNRqPRaDQajUaj0V+P3frc9fyc0Hj3/zupoz52Pb+mxbQ/uRv1sev5NSVTMTXTYXqY7kzvpn8+XPHu+a9pMwVTftI76nPD8/mYDtPDdGf62Pz6nL42dIoNz2LDs9jwLDY8iw3PYsOz2PAsNjzffsfxYlpMmymYkqmYmukwPUxoLDQWGguNhcZCY6Gx0FhoLDQWGhuNjcZGY6Ox0dhobDQ2GhuNjUagEWgEGoFGoBFoBBqBRqARaCQaiUaikWgkGolGopFoJBqJRqFRaBQahUahUWgUGoVGoVFoNBqNRqPRaDQajUaj0Wg0Go3GQeOgcdA4aBw0DhoHjYPGQeOg8aDxoPGg8aDxoPGg8aDxoPGg8aBx0cDnbHgWG57Fhmex4VlseBYbnsWGZ7HhWWx4FhuexYZnseFZbHgWG57Fhmex4VlseBYbnsWGZ7HhWWx4FhuexYZnseFZbHgWG57Fhmex4VlseBYbnsWGZ7HhWWx4FhuexYZnseFZbHgWG57Fhmex4VlseBYbnsWGZ7HhWWx4FhuexYZnseFZbHgWG57Fhmex4VlseBYbnsWGZ7HhWWx4FhuexYZnseFZbHgWG57Fhmex4VlseBad1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF53WRad10WlddFoXndZFp3XRaV10Whed1kWnddFpXXRaF8TDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXx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",
|
|
1897
|
+
"debug_symbols": "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LNlmyTZLtlmyzZJtlmyzZJsl2yzZZsk2S7ZZss2SbZZss2SbJdss2WbJNku2WRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWRJmSZglYZaEWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWZJmSZolaZakWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWVJmSZklZZaUWdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmSZslbZa0WdJmyeei4fsHgz83DT+nxbSZgun9B8r1MRVT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jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOe1jTvuY0z7mtI857WNO+5jTPua0jzntY077mNM+5rSPOdssabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZI2S9osabOkzZJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmyTFLjllyzJJjlhyz5Jglxyw5ZskxS45ZcsySY5Ycs+SYJccsOWbJMUuOWXLMkmOWHLPkmCXHLDlmiQzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVIpgzJlCGZMiRThmTKkEwZkilDMmVI5ueuZ35MyVRMzXSY3vcE6mO6n1O9hqhQn7ue/TFtvhZMyVRMzXSYHiY0FhofuyGfExoLjYXGQmOhsdBYaCw0NhobjY3GRmOjsdHYaGw0NhobjUAj0Ag0Ao1AI9AINAKNQCPQSDQSjUQj0Ug0Eo1EI9FINBKNQqPQKDQKjUKj0Cg0Co1Co9BoNBqNRqPRaDQajf567tbnrufnhMa7/99JHfWx6/k1Lab9yd2oj13PrymZiqmZDtPDdGd6N/3z4Yp3z39NmymY8pPeUZ8bns/HdJgepjvTx+bX5/S1oVNseBYbnsWGZ7HhWWx4FhuexYZnseH59juOF9Ni2kzBlEzF1EyH6WFCY6Gx0FhoLDQWGguNhcZCY6Gx0NhobDQ2GhuNjcZGY6Ox0dhobDQCjUAj0Ag0Ao1AI9AINAKNQCPRSDQSjUQj0Ug0Eo1EI9FINAqNQqPQKDQKjUKj0Cg0Co1Co9FoNBqNRqPRaDQajUaj0Wg0DhoHjYPGQeOgcdA4aBw0DhoHjQeNB40HjQeNB40HjQeNB40HjQeNiwY+Z8Oz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PY8Cw2PIsNz2LDs9jwLDY8iw3PYsOz2PAsNjyLDc9iw7PotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuui0Ljqti07rotO66LQuOq2LTuui07rotC46rYtO66LTuiAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDgnhYEA8L4mFBPCyIhwXxsCAeFsTDunyOuS5MhLowEerCRKgLE6EuTIS6MBHqwkSoCxOhLkyEulu1UC1UC9VCtVAtVAvVQrVQLVRL1VK1VC1VS9VStVQtVUvVUrVSrVQr1Uq1Uq1UK9VKtVKtVGvVWrVWrVVr1Vq1Vq1Va9VataPaUe2odlQ7qh3VjmpHtaPaUe1R7VHtUe1R7VHtUe1R7VHtUe1R7ap2VbuqXdWuale1q9pV7aoGE6FfMBH6BROhXzAR+gUToV8wEfoFE6FfMBH6BROhXzAR+vVSbam2VFuqLdWWaku1pdpSbam2VNuqbdW2alu1rdpWbau2VduqbdVCtVAtVAvVQrVQLVQL1UK1UC1VS9VStVQtVUvVUrVULVVL1Uq1Uq1UK9VKtVKtVCvVSrVSrVVr1Vq1Vq1Va9VatVatVWvVjmpHtaPaUe2odlQ7qh3VjmpHtUe1R7WPtxyfUzC9v4zuj6mYPpTWx3gcH8fL+Jkjn+Ny3I6zBdz2Mbd9zG0fc9vH3PYxt33Mbz/Tezkux+0YjulYju14HB9H1ZZqS7Wl2lJtqbZUW6ot1ZZqS7Wt2lZtq7ZV26pt1bZqW7Wt2lYtVAvVQrVQLVQL1UK1UC1UC9VStVQtVUvVUrVULVVL1VK1VK1UK9VKtVKtVCvVSrVSrVQr1Vq1Vq1Va9VatVatVWvVWrVW7ah2VDuqHdWOake1o9pR7ah2VHtUe1R7VHtUe1R7VHtUe1R7VHtUu6pd1a5qZol9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MbR9z28fc9jG3fcxtH3Pbx9z2Mbd9zG0fc9vH3PYxt33MHWZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmCVhloRZEmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZkmZJmiVplqRZIkOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmSLUOyZUi2DMmWIdkyJFuGZMuQbBmS/bnrmR9TMx2mh+nONESF7iEqdA9RoT93PftjSr5WTM10mB6mO9NB46Bx0PjYDfmc0DhoHDQOGgeNg8aDxoPGg8aDxoPGg8aDxoPGg8aDxkXjonHRuGhcNC4aF42LxkVjyCl9hpzSn7uen9NmCqZkKqZmOkwPExoLjYXGQmOhsdBYaCw0FhoLjYXGRmOjsdHYaGw0NhobjY3Gnufu567nxxRofPh/rY9xO757ZH3+D+8eWedjLMd2PI6P42X88P/X+KH2fIzbMRw/1J7//P3v/p8//PVPf/inP//xf//uv/3H2x//57//5Z//7U//8pevP/7b//uv8zf/9Nc//fnPf/pf//ivf/2Xf/7j//j3v/7xH//8L//8/ne/e73/5/0h+++rf7/XP7z9z+v//NJ+/9LbNfjvvX5/1j/8/vOvz/39k+9/Hf6L8/u937+UfGmv3+9+/1LxpVy/z48v9d9L/ed//sN//n8=",
|
|
1898
1898
|
"verification_key": "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"
|
|
1899
1899
|
},
|
|
1900
1900
|
{
|
|
@@ -1907,153 +1907,14 @@
|
|
|
1907
1907
|
"parameters": [],
|
|
1908
1908
|
"return_type": null,
|
|
1909
1909
|
"error_types": {
|
|
1910
|
-
"361444214588792908": {
|
|
1911
|
-
"error_kind": "string",
|
|
1912
|
-
"string": "attempt to multiply with overflow"
|
|
1913
|
-
},
|
|
1914
|
-
"992401946138144806": {
|
|
1915
|
-
"error_kind": "string",
|
|
1916
|
-
"string": "Attempted to read past end of BoundedVec"
|
|
1917
|
-
},
|
|
1918
|
-
"1998584279744703196": {
|
|
1919
|
-
"error_kind": "string",
|
|
1920
|
-
"string": "attempt to subtract with overflow"
|
|
1921
|
-
},
|
|
1922
|
-
"2967937905572420042": {
|
|
1923
|
-
"error_kind": "fmtstring",
|
|
1924
|
-
"length": 61,
|
|
1925
|
-
"item_types": [
|
|
1926
|
-
{
|
|
1927
|
-
"kind": "field"
|
|
1928
|
-
},
|
|
1929
|
-
{
|
|
1930
|
-
"kind": "field"
|
|
1931
|
-
}
|
|
1932
|
-
]
|
|
1933
|
-
},
|
|
1934
|
-
"3330370348214585450": {
|
|
1935
|
-
"error_kind": "fmtstring",
|
|
1936
|
-
"length": 48,
|
|
1937
|
-
"item_types": [
|
|
1938
|
-
{
|
|
1939
|
-
"kind": "field"
|
|
1940
|
-
},
|
|
1941
|
-
{
|
|
1942
|
-
"kind": "field"
|
|
1943
|
-
}
|
|
1944
|
-
]
|
|
1945
|
-
},
|
|
1946
|
-
"3670003311596808700": {
|
|
1947
|
-
"error_kind": "fmtstring",
|
|
1948
|
-
"length": 77,
|
|
1949
|
-
"item_types": [
|
|
1950
|
-
{
|
|
1951
|
-
"kind": "integer",
|
|
1952
|
-
"sign": "unsigned",
|
|
1953
|
-
"width": 32
|
|
1954
|
-
}
|
|
1955
|
-
]
|
|
1956
|
-
},
|
|
1957
|
-
"4261968856572588300": {
|
|
1958
|
-
"error_kind": "string",
|
|
1959
|
-
"string": "Value does not fit in field"
|
|
1960
|
-
},
|
|
1961
|
-
"4440399188109668273": {
|
|
1962
|
-
"error_kind": "string",
|
|
1963
|
-
"string": "Input length must be a multiple of 32"
|
|
1964
|
-
},
|
|
1965
|
-
"9791669845391776238": {
|
|
1966
|
-
"error_kind": "string",
|
|
1967
|
-
"string": "0 has a square root; you cannot claim it is not square"
|
|
1968
|
-
},
|
|
1969
|
-
"9885968605480832328": {
|
|
1970
|
-
"error_kind": "string",
|
|
1971
|
-
"string": "Attempted to read past the length of a CapsuleArray"
|
|
1972
|
-
},
|
|
1973
|
-
"10135509984888824963": {
|
|
1974
|
-
"error_kind": "fmtstring",
|
|
1975
|
-
"length": 58,
|
|
1976
|
-
"item_types": [
|
|
1977
|
-
{
|
|
1978
|
-
"kind": "field"
|
|
1979
|
-
}
|
|
1980
|
-
]
|
|
1981
|
-
},
|
|
1982
|
-
"10791800398362570014": {
|
|
1983
|
-
"error_kind": "string",
|
|
1984
|
-
"string": "extend_from_bounded_vec out of bounds"
|
|
1985
|
-
},
|
|
1986
|
-
"11021520179822076911": {
|
|
1987
|
-
"error_kind": "string",
|
|
1988
|
-
"string": "Attempted to delete past the length of a CapsuleArray"
|
|
1989
|
-
},
|
|
1990
|
-
"11692359521570349358": {
|
|
1991
|
-
"error_kind": "fmtstring",
|
|
1992
|
-
"length": 40,
|
|
1993
|
-
"item_types": []
|
|
1994
|
-
},
|
|
1995
|
-
"12327971061804302172": {
|
|
1996
|
-
"error_kind": "fmtstring",
|
|
1997
|
-
"length": 98,
|
|
1998
|
-
"item_types": []
|
|
1999
|
-
},
|
|
2000
|
-
"12469291177396340830": {
|
|
2001
|
-
"error_kind": "string",
|
|
2002
|
-
"string": "call to assert_max_bit_size"
|
|
2003
|
-
},
|
|
2004
|
-
"12913276134398371456": {
|
|
2005
|
-
"error_kind": "string",
|
|
2006
|
-
"string": "push out of bounds"
|
|
2007
|
-
},
|
|
2008
|
-
"13557316507370296400": {
|
|
2009
|
-
"error_kind": "fmtstring",
|
|
2010
|
-
"length": 130,
|
|
2011
|
-
"item_types": [
|
|
2012
|
-
{
|
|
2013
|
-
"kind": "integer",
|
|
2014
|
-
"sign": "unsigned",
|
|
2015
|
-
"width": 32
|
|
2016
|
-
}
|
|
2017
|
-
]
|
|
2018
|
-
},
|
|
2019
|
-
"14938672389828944159": {
|
|
2020
|
-
"error_kind": "fmtstring",
|
|
2021
|
-
"length": 146,
|
|
2022
|
-
"item_types": [
|
|
2023
|
-
{
|
|
2024
|
-
"kind": "integer",
|
|
2025
|
-
"sign": "unsigned",
|
|
2026
|
-
"width": 32
|
|
2027
|
-
}
|
|
2028
|
-
]
|
|
2029
|
-
},
|
|
2030
|
-
"14990209321349310352": {
|
|
2031
|
-
"error_kind": "string",
|
|
2032
|
-
"string": "attempt to add with overflow"
|
|
2033
|
-
},
|
|
2034
1910
|
"15764276373176857197": {
|
|
2035
1911
|
"error_kind": "string",
|
|
2036
1912
|
"string": "Stack too deep"
|
|
2037
|
-
},
|
|
2038
|
-
"16431471497789672479": {
|
|
2039
|
-
"error_kind": "string",
|
|
2040
|
-
"string": "Index out of bounds"
|
|
2041
|
-
},
|
|
2042
|
-
"17531474008201752295": {
|
|
2043
|
-
"error_kind": "fmtstring",
|
|
2044
|
-
"length": 133,
|
|
2045
|
-
"item_types": [
|
|
2046
|
-
{
|
|
2047
|
-
"kind": "integer",
|
|
2048
|
-
"sign": "unsigned",
|
|
2049
|
-
"width": 32
|
|
2050
|
-
}
|
|
2051
|
-
]
|
|
2052
1913
|
}
|
|
2053
1914
|
}
|
|
2054
1915
|
},
|
|
2055
|
-
"bytecode": "H4sIAAAAAAAA/+29CZhdV3Umuk/VValuVUlX8zxcyZIsybJs2diYycbIk2zZsi1rti2VbWHLGpFKk22ZJA4dIBgChLwkJGF4ockATWgICXnp/kIg4UscXujwAomTNAl5eUACxAlDhkeH5uCzVH/99Z99zzl3lXRBtb9PqnvPXutfa6+99trj2TcJz6eV2d/duwcfG9r74O5DR3fvOzS09+ihwQPHdu8+dvrQg7uPHN13YnBo7+5jQ9/9P6VNMp5aqJiSisLPLH6evjfj6wK87u/+a4Zi4ntJj3L8P/TqXgYsxR++x5+EqvKfL3/KU7H8occUAX7UxXAnfvdfP3y+heRX1P/V7eo/LaKz1c16oG+GQmmC8d6geL9x7HP/+ZmnP/SJXxp673t+auqzk36mf03fq1/zmn+c/7UFP/vca/5P470RdEpCYdk9xn+Tkn3tb3TvfOSD/364/+anPnDy2T+/4/ikBYO/u/i179n5e29e/OXd/8l4b1a8X3rD21/d+MBb3tm85FPf7Ln5TV/Z/fUNE6559lNPzP34j3z7y8+91XhvUbx/svPbf/XhxlsfO/X0Rx+/ZuX0wfe99XP/9PeffOa/NL7+N+9/1eeuMt4NUOYq7fDWavxTjP824K+Fcu0oTRur8Z/V//Zq/F3Gfwc8bNqHH/7FX/qr65/+1OV/++2+198++KOnrvzxz2z76mNz3rv87x59/4L3TTXeTYr3C0Pr3zw0++DVX+3946fXvWv+ws9/470f/uK3Tu+95itf/NJHlnzdeO8UvHOuuPhFR3760zP+cuXSv3j577xv7U/O/cayl/7lb97yruf+/Q/+NQzb7C4oc4k6O1vmu6vx14x/czX+buO/Bx424zwWZs6WfUs12Wf5t2rZyVNLj/0f9aeT23/3Ry798EDf7375+ne8Yv2nnvnR1y9uvO8dxrtN8K5+af2597z+ydeEv37vP7zxW6t/++WXTl10/dS1/8/bPzv/0NFdc58z3u3V9F5g/DuAn3SPJuPfGUbrXpR3VzXZZ9voveVln+W9rzzvWT+/38BCKZuf7Yt2V+OvG/+eavx9xj8I/CX6s6bxP1CN/3Ljf7Aa/zrjfwgeNkOh9BLj3QuyS9ju5cb/SuAvofv1xv9wNf6bjP+Ravz3GP++avyDxv9oNf4HjX9/Nf6HjP9ANf69xn+wGv8rjf9QNf6Hjf9wNf5HjP9INf59xv8qeNgMhdKjxnu0muwDxn+sGv9B4x+qxn/I+I9X4z9s/Ceq8R8x/pPV+I8a/6lq/MeM/3Q1/iHjf6wa/3Hjf7wa/wnjf6Ia/2njP1ON/3Hjf7Ia/5m+8Pxce8K85x+k8+9lWebxoX0H9g2dvv7Ysb1Hh9YfPnhkcGjfAwf2bjo6+OCBvVv3Hj227/AhBkzo+/qc56mcOSPl3Lx3aMvzn9Yf/u6yzKmhCYSb0Pcu+t5N32v03fAm5PAxT6tk6wo9pGOzGPudAxn9RNIHsXtJz2YolBYmhBfCyHIGwq+TLiXlJQnhmTwun9WZlb0udGmIPLZxXcipCzkNkXfAEeukI9ZBR6zjjlieZTzmiHXEEWvIEeuQI9agI5an7T3b0KkOxdrniOXpE5629/Sv/Y5Ynm3b0ycedcTyjNGPO2J1av9oY2wbO+BYI8n5a3L4mcmpE1bVcY8qV6+QF6OfGKHvK4ifjqsb2edsXH3D3geOP7zx8MOBEg91b8xRcQHRbYmoxrgJ/ePnC+hZt6DFlBZvVvY5K95Ne4cefOSewYcf3vvQdwt5jDkY6Yac5zwgRRobjPeRps1QKHUVcUrEr5MuVZ1SOY1qbKlVp2WfM6tuPDz40PrBI8eOH9jL0yycIrBVEBWfqTpNQDN81k10N9D3DYIvCOw032pugJ43Q6E0ybxiksi0vMmAPZHyGpBXp7wpgPUQ0HHicmJ5vrdlPm8Yl+lYV6yryZTXD3kNkM113ifkWNm6BH0/YfUJPquXVvK6BR9PWWPT6iIt0cqRpoaQwfU4BhFjRqdHDCtffzV50xPiR3mIafqYrQdEnmFZG+3JwTLeGtF/JPvbILo07SQZA0JffGb2SZeYPki6o23ZT9qxI+KZXvgM8euhLb9MYvWG5WM/qRh/pxWxO+rD8Zpti3GvJwfLeGtE//HsbyOM7hPYTyYJffEZ+sl/J93RtuwnFe14fVE/Mfx6aMsvk1i9YfnYTyZVk/fyInZHfVTfjbbFPrAnB8t4a0T/6exvg+jSxH4yWeiLz9BPnsk+9+bo2wyF0kk1pmE/Q7uUObpR1M8Mvx7aqvckZkfV3tS4zHgbIo+XnRtCTkPIaYi8k45Yxx2xHnXEOuCIdapDsY44Yg05Yh1yxBp0xDrqiOXp951or1g/VBYrTZ6+etoR67AjlqevepZxnyNWp7btM45YDzhi2XEIHucZfpp6w+i2V3ZugnimJz5D/DrpUlJeErOLGjNa+aZUkzc1IX6Uh5imj9l6qsgzLFtl7MnBMt4a0c/NDNogujTxmHqq0Bef4ZjaFlomC315faGsPyI/2wj52B/bqS/EMz3xGeLXQ1v+n8T8Q9nFyje1mrwpReoX9TFbTxN5hjU9+96Tg2W8NaJfRf44DXRif5wm9MVn6I/LkpG6o23ZTyra8caifmL49dCWXyaxesPysZ9MqybvhiJ2R33M1tNFnmHNyL735GAZb43oryY/mQ46sZ9MF/riM/STdRlub46+zVAscRsxDMRGuxSvh+SfivqZ4ddDW/WexOyo2puVb0Yleclz7BsoDzFNH7P1TJFnWLa32ZODZbw1or+B/AxlsG9YHuqLz9DPrqN4hLZlP6lmx/CKon5i+PXQjl8O+4mqN9XerHwzq8m7vojdUR+z9SyRZ1izs+89OVjGWyP6u8hPZoFOHI9mCX3xGfrJxgx3stCX199j7QVxG4Lf6JTPlYh7u1WdluB/lfHPqsZ/yup4Njzk9jQHnpfwt3VF25Ph10mXqu1pDsnj8vEa7FyhS4Py0vQI0HFet3jWFcE67Ih1wBFr0BHrUUeso45Y+xyxjjhiHXPE8vSJ/U5YKk62o9cpR71mOmGl6aQj1mlHrEFHrDOOWJ6x0LM9Djliedbjk45Ynj7haXuvth2cy+jpE8cdsTo1TnjqdSGMmcb7tPNne8/2eNARy6uM6edZTlieeqXJazzhXUbev8O5ZZL97RU6lJi3XpsQnumJzxC/TrqUlJfE7ILl43nyPKFLg/LSxPPkeULOPCFHYR12xDrgiDXoiOVZxiOOWEOOWKcdsTxtf8YRa7wey2E96Yjl6RP7HbGOO2J5xq9Tjlietvf0VU/bd2r88vRVT/865ojlWY+e/uXZhjz966Qj1j5HLM8ydupYzrOMnuOJTq1HT9t7jeXSz7OcsNLUqeMczzHm+HjiB6MNecYJT728/Cv9PNMJK02POWJ52t5zDGB9LZ8bM/w0tbkGtiQhPNMTnyF+PYyuS681MHUGzco3r5q8ZpF6QH3M1vNFnmHZnSU9OVjGWyP6W7JCNYQMPqNneagvPsOzV+uzL5OFvu3uRSA/2wj52B8r1ld3UX80/Hpoy/+TmH8ouyj/MF5Vr2z/ovUaw+J1YctPU6/gK2GPRlH7G349tFXfScwuKk5a+RZUkzeZ2zDKQ0zTx2y9UOQZ1qLse08OlvHWiH6Q4sFC0GknyVgo9MVnGA/uzb705ujbDIXSBmXrEvwv7g2jbVeC/3bjX1SN/0bjX1yNf3Mv0Zfkv9n4l1Tj3278S6vx32H8F1Xjv8H4l1Xj32htZzk85Di1Ap6XaMd3FI1Thl8nXarGqRUkj8vH/cTFQpeGyOM2erGQc7GQ0xB5Q45Yjzti7XPEOuqIdcQRa78j1qAj1jFHrAOOWKc6FMvTVw85YnnZXvXrneKrnu3xtCNWp7bHxxyxPNtQp9r+sCOWZ5zw7Gs9Y7Sn7T3t1an+5Tk28axHT9tfCHHijBNW+nmhI9YiR6zFHYiVplc66tV0xPK0/YwO1WuJI1aPE1aaPH1iqSPWRY5YnvXoqZenr3ZiLEzTI45Ynr7qVY+eeqWpU+3l6avLHLE827ZX/ErTk45Yg45YBx2xPNcUPMfknnMFz7VHG9/bOjaueyfZ394w2i/L7sUhnumJzxC/TrqUlJfE7ILl473GldXkTUqIH+Uhpuljtl4l8gxrdfa9JwfLeGtEPzszbIPo0sR7jauEvvgM9xqnZbi9Ofo2Q6G0ZiCMthX7GdqlRD2sKepnhl8PbdV7ErMjlo/3ilYLXRqUl6aHgY7zusWzrgjWcUesxxyxhhyx9jtiDTpiHXHE8rTX445Y+xyxjjpiedq+U/3rmCPWAUesUx2K5emrhxyxPG3v6V8HHbFOOmJ59mmebcjT9qedsNLPs5ywvMt4xhHrAUesJ52w0s8XO2GlydP2nv2jZyz0HOd4xgnP+NWp40KrRztnjnGDzzkXvTtUnTM3ugHBl2R/21x7KHxXOq89zKomL7r2oOzS5pz37F3psbk86qPmoBybLsm+9+RgGW+N6J+itQeUwe89FPXPdO3hyQx3stCX+7Sya2HIb3Q/aHIGBB+3r4r+N6Fo++I1l4rtObrmouxSZs1F2b8TxltjhWX+tyoip+gaofK/VT+gcgYEH7cntHcJ/y78u3qGXw9ttd8k5k/KLlb2S4QuDZHH5wIuEXIuEXIaIu+kI9ZxR6xHHbEOOGKd6lCsI45YQ45YhxyxBh2xTjhiebYhz3p83BFrnyPWaUcsz7bt6V+ebcgzrl4Itj/miOUZo3kNAMczvSSn7FgU+Y1OjZvSf81QKN3dG0aPPUrwbzX+NdX4N9m46FJ4mGR/DXstPC8xRnsqIbwQ9JjQ8OukS0l5Z8eEa0kel4/HhJcJXRoij9+BvEzIuUzIaYi8IUesxx2x9jliHXXEOuKItd8Ra9AR64Qj1klHLE/bd6qvnnbEOuCI5elfnjHnuCPWhWD7Y45YnmU81aFYnm37kCOWl+3TzwucsNLk6audOgbwxPK013i/Pd5vj/fb4/12K6zxfvv7v99Ok6e9OtVXH3PE8rSXZ8zxtP1hRyzPNuTZb3dqjO7U8YRnGT3Hvp716Gn7CyFOnHHCSj/3OGKtdsTyWidPP1/ihJWmVzpiPeKElX5e5Ig1wxFrqSPWGiesNF0Itl/oiLXYEavpiOVpL89YuMwJK01eMcc7rnq17TR1antc4oTlXUZPv/fstz1t7xlzPPXytJfX2MS7jBc5Ynn5apoedtTLMxZ62t6r7/CuR8/26Bm/PO3lWY+e/eOTjliDjlgHHbE895o81yc81008zw3x/UV4Zi3J/vaG0X6ZymmGQqk/ITzTE58hfp10KSkvidkFy2d2sbJfLnRpUF6a+B6gy4Wcy4WccaxxrPOFxWdMDT9NvWG0/5dob8uKtm/Dr4e24kkSs4uKe1b2dUKXhsjjOfw6IWedkNMQeScdsY47Yj3qiHXAEetUh2IdccQacsQ65Ig16Ih1whFrnyOWZ3s87Yjl6V+e9jrqiOXpX55tyDOuevqEZ1zt1Lbt2R4929Djjlie7fFC8K9jjlieYwB+pw/Hy/xOX9kxO/Ib3YDgS7K/vaRfEkqNod+aEJ7pic8Qvx5Gl7nKmF3ZX9nFyn6F0KUh8ngd9goh5wohpyHyhhyxHnfE2ueIddQR64gj1n5HrEFHrBOOWCcdsTxt36m+etoR64Ajlqd/ecac445YF4LtjzlieZbxVIdiebbtQ45YXrZPPy9wwkqTp6926hjAE8vTXp79tqftPccAnjHaczzRqb7q6V/j/fYPRtseH5OP+xfnjY8Lz59/deK4ME2e9upUX33MEcvTXp4xx9P2hx2xPNuQZ9/RqTG6U/s0zzIedcTyrEdP218IceKME1b6uccJK02vdNRrtRNWmh5x1Mtzf8jTXsscsWY4Yi11xFrjhJUmT59Y5IjlaXuvtu3ZHj3bUPr5EiesNHm1xzRdCP610BFrsSNW0xGrU9ujV7xPk2c/5Nm2vfqONHVqe1zihOVdRk+/9+w7PG3vGXM89fK0l1f/6F3GixyxvHw1TQ876uUZCz1t7zlX8KxHz/boGb887eVZj57945OOWIOOWAcdsTz30zzXv446Ynmee+R3etdAXpL9bfP8cF9CeKYnPkP8OulSUl70/DCWz+xS5vxwmvidy3bsP441jpWHZe8OYLvj31gs+44C8hvdgODjto9to0RbXFO07Rt+PbQVa5KY/ZVdrOxXCl0aIo/HQlcKOVcKOQ2Rd8QR65Qj1qOOWMcdsR53xDrgiHWyQ/Xa74g16Ih1xhHrAUesJx2xPO015Ijl2R5PO2J5+r1nLPSsx4OOWJ4xx9Mnjjliedp+X4fqdcIRy9MnPMcmnv22Zz12avzy9C/P9tipMdoTy9O/Djlime15rcLw09RLfEkoNXdamBCe6YnPEL9OupSUl8TsoubKVvYXCF0aIo/3Yl8g5LxAyGmIvJOOWMcdsR51xDrgiHWqQ7GOOGINOWIdcsQadMQ64Yjl2YY86/FxR6x9jlinHbE827anf3nq5VmPnnp5xglPn/Csx2OOWJ7xnu/hwbER38NTdnyG/EY3IPiS7G9vGD1GKTFe+k8J4Zme+Azx62F0mauMz5T9lV2s7FcJXRoij89OXCXkXCXkNETekCPW445Y+xyxjjpiHXHE2u+INeiIdcIR66QjlqftO9VXTztiHXDE8vQvT70869FTL8+46ukTnvV4zBHL0/anOhTLM04ccsTysn36eYETVpo8fbVTxxOeWJ72Gh8DjI8BxscA42OAVljjY4DxMcBY2qtTffUxRyxPe3VqnDjsiOXZhjq17/C0faeOTTzL6DmO9qxHT9tfCHHijBNW+rnHEWu1I5bX+n36+RInrDS90hHrESes9PMiR6wZHaqXVz1667XUCStNnj7hWY8LHbEWO2I1HbE87eUZV5c5YaXJK355x+hObUOecWKJE5Z3GT393nMM4Gl7z5jjqZenvTq1f7zIEcvLV9P0sKNenrHQ0/ZefYd3PXq2R8/45WmvTh1jPumINeiIddARy3MPzHOtw3MNxvNsFN/VMQPykuyvnTHEWJfKaYZCqZYQnumJzxC/Hka37xLyzp4xnE/yuHxmFyv7AqFLg/LSxPcyLBByFgg55wpL1Vf6rxkKpS29YbQ9SvDvN3suhIfsS9gPlKjbOUV9yfDrpEtVX1pM8rh87EtNoUtD5MXqqFs868rBStOQE1aruj9feqXpuBNW+nnACStNnmUcdMQ65oh1yhHrkCOWp71OO2I94Yh1whHrgCOWp+2POGLtd8TyLOMZR6wHHLFsbmD9F46dkuyvGhcU70uTv04Iz/TEZ4hfD6P7yCp9txpTYfnMLu2NTZLPJ8SP8hDT9FFjBe53bV7ak4NlvDWifzp7kUj1e1NJhuWhvvjM7DPhu/9e2ztSd7Qt+0nFMd6kon7CY7xqfhkf46mxt5WvWU3eQBG7oz5m62Uiz7BsPbEnB8t4a0T/s+Qny0AnnpssE/riM/STt2W4k4W+awk31l4QtyH42UbIx/7YhOdl6wvxTE98hvj10Jb/JzH/UHax8i2rJq+/SP2iPmbr1SLPsGxNuicHy3hrRP8r5I+rQSf2x9VCX3yG/vge8scmYM0j3KbAbQrchuA3OuVzjBNJf6PqtAT/O41/dTX+VcZ/STX+31TvpZbg/4jxX1WN/4eN/+pq/PcZ/wur8a80/muq8V9p/C+qxv8l439xNf5bjP8l1fg/avwvrcb/ZuN/WTX+9cZ/bTX+bxr/ddX432r8L6/G/5zxX1+NPzH+9cBfok9oGv+N1fi7Td8b8KHQyfCtT3kF0Cc5fw2L80xWnbBK6p7EdEf9uB+4AeRhGfOwbiiJ1SvyqtTJ+pBfLsQfiOjCeqaJ56NVy5ym/U5Y6eelTlhpOumoV9MJK00POuq1zBFrtSPWJY5YPY5YixyxXuCIdVWHYi1xxLraEeuFjljXOGK9yBHrxU5YaXrCUa+XOGGl6YSjXi91xHqZI1bTEetaR6zrHLFe7og1tUOxrs8+27oE9ksrSE6PkNMTkYP8Rtcr+Jr24RvHPvefn3n6Q5/4paH3vuenpj476Wf61/S9+jWv+cf5X1vws8+95heNF/u7EuPPbW2uw003/iXV+KcZ/9Jq/FPbXGe7gddkAvJe+xvdOx/54L8f7r/5qQ+cfPbP7zg+acHg7y5+7Xt2/t6bF39594+p9ZgSsq9v756wJPB6TAjl7XZ1JdlhsVqLKaH7c2otpqswf+hVazEl+K9WazEl+F/IazEBeJd99rcm/suvvKn2X//sucMnv7n6rX9489P//Vdf+pZPXXrtD23+25/62u1qHabMXoxaR6myjnBdNf7Jah2lBH+vWkcps6fX5jrKAM/ZA/J+6Q1vf3XjA295Z/OST32z5+Y3fWX31zdMuObZTz0x9+M/8u0vP/eTvAYzgvdPdn77rz7ceOtjp57+6OPXrJw++L63fu6f/v6Tz/yXxtf/5v2v+txZn7upmt79xn9zNf4Zxn9LELpHU/K99frV9ee/Wb+YnM0NYSJ8traUpglheF1oC9GkqUb0t0wZ5lubyRsgngCfe4m/pE3mYhksqXUsw6+H0WWvso7VRfK4fHx2rSZ0aVBemvgsQ03IqQk5CutJR6xBR6wTjlgHHLGGHLH2O2IdccTyLOMhR6xO9a99jlgnHbFOO2J5+penvY46Ynn6l2cbOu6I5ekTnnGV34fAPB4HTIDnJfrlrqLjAMOvh9H9cpVxwASSl2eX/u/+m5Z9Pj6078C+odMbDw8+tH7wyLHjB/biaAJHCCwlIVR8loSRpce8bnrWTXQ30fcNgi8I7DTfam4iPW+GQukW84pbRKblbQBsHlndCnk1yrsNsB4COk5cTixP+rd/3jAu07GuWFcbKA9Xom4F2VznE4QcK1uXoO8hrAmCz+qllbwLuZWqejLehsjjdlp0VlAlejSyz1n0uGHvA8cf3nj44UCpRt9vzFFxDtFtyFEtEbgJ/ePnc+iZMgVixyaIRVwmTdwBYd4WkjPeAY13QGfTeAcUOqsD6hZ8vDzEy0ZpatqHH/7FX/qr65/+1OV/++2+198++KOnrvzxz2z76mNz3rv87x59/4L3TUtlvZ2WwlBf9mcr24QW5asR/ecbw3zvyOSlrXB2lp+1wlccP7D/7r1DR/ftPbH3u/H8WKDUquncQd83CT6VzCVUUzbzVgxOhYOh4deDruZmKJTOBkM1S8HyVQuG7BBolRD8g+Em+l4lGPbQ82YolEoHQ+7CMRhyoGwnGFp5ygZDrCsOhtiIORgqL0U5VrYuQT+BsGKBrJW88SHL82l8yAJpfMgSOmvIwnwTwuhWbbw1ov2jbGjQZmsecYKGdRzv659P4309pPG+PnRWX6+iTEIYY7lUgrKjE6wvDK1/89Dsg1d/tfePn173rvkLP/+N9374i986vfear3zxSx9Z8o02I8rWNiPhlpTvSzTB47Pp+Nl6rbyzDsZbI/qv1Yf5vgITvOVZfhZttg4e2PfQ4NDeGw+96vje43sfuuPw0N5j1x966MYTew8NlZ7u3UzfbxF8KvWF4QLzJVBYyDRxo5+ZfbcXT5mGDWT0/5wZJTXY8qwhK6czfQaIP4TR3dQs0r0ZCqXC3ZTh10mXqt3ULJLH5avWTbE7o1UQFZ9x2MC8c9FNzaHnzVAole6meigPu6mZlNdON2XlKdtNYV1xNzUb8ribwjqfJeRY2boE/WzCmiX4uJvKk9ct+HgIktBzXDubIWTz2ll/3/N/U9uunJdvB7x6jjHtuxr0s70tP01t+uu2opHG8OthdN1XiTRzSB6Xr1qkQU9BKVsJ1WiQFtNW0Azp+TvXXk3wcTKcGum8LPOi1PtmZp8nh9Hlmkx6K2/HZzyAQn6jU3L625TTL+SYJ08Evh2U1xvJqwPmZMqbBHy8h9aAvJ2UNwUw+ylvagRzmsBM6+7jfcN46b8m0ClPt6hqdYAvVyAvfp9AtGm6N/tbI9oXgl+tIr/CVsx+NbuF3jG/mh3y5fS3KadfyOHeKk3sO3NEWS1vLvBxPc+DPPad+aJc6mIkxlwoMNP6+a2+kXRNoOOIvwyel5mwFI34hl8nXapG/GUkj8vHk7nl1eRtSYgf5SGm6WO2XiHyDOvi7HtPDpbx1oj+hqw++YWsNPFlNiuEvvgMD7lfR36Ctk1y/houP+P2hWVvhpFyMN5sAX025MQ8HElhXLPJMseqP4JdyI0Uq5Cf6645rFbb5W+G0WWcHEbbpg8+5/n3soicvkh5xqo++0gOxlmsz+1Un8shj2N0+nlJ9rlG9L8O9bmL6lO1RWVn7pfK2nmykDPWdub+ZYWjHMTil1xWEhbb2erJ7Hwx5K0kvlWQh3Q461oJz1cJ2QrfMFr54IE+XbY8HzRZNaL/WfDBwxV9cAXlYV/RDCP1ND3QDki/JOhy9eTQ55XrBMw6L5k3EtP40VZYFxx/jf40YK6dp/XEcmF/wAvByh9WinIpm64KrWWjnTfkyO4JcV+sEf0PCZtyv4D8qh1NJ10ubqE7t2/kN7oBwdduHFE6t2qTryvZJu1lZfbdp6BNvoHaZMxHUGeeR5S1c7+QM9Z25jnCKkc5iMX9wqWExXa2ejI7r4G8S4nvMshDOuwXLoXnlwnZCr9ov/DzfbpseT5osmpE/wj44Dsj8+KYD66iPLRpM4zUs1U85MuNTO+eEO9va0T/3ki/oNorxlruF4z+VyL9gsnFcsX6BeWLa0S5lE0vJaxFAgvtzP2CsimWfxGV3+g/WLBfMH61HrGL8nA9YjnlzYU8HrPiZaMrKA/XI3htBC9H5niHP46BPsLrERMj5ekFDF7vw3W7OZQ3CfLmUl4D8uZRHq7bzac8PF7Cl21Pg7yFUFZbt+ON09/Pnre5pyePvMTWRZOcvyEU6w/4uBbKmeUoB7FuIjmzHeXwjgPKmSvkWH3NI75mKJQK78Eafj2MbrtV1snmkTwuX7WdEYw2bBVExWdJGFl6zDsXe7AVr3MvvQfLEQn3YDkitbMHa+UpuweLdcV7sBjxeQ8W63yekGNl6xL08wlrnuCzemklr1vw8X5lQs/z9mANo0b0X4Qeeh2NUJQsbFE8SjDd806QsA5G/w+gw/J5GrOWU645OZj/Abs3X+vTmEFgqnLNp3KxDvNIB6P/ZzH66Q6j/U/52Dz6jqPB+Tn6qXpiXbE95ZWH68no/zVST3OFDvhTIRta6MA083N0+LbQQUT09YePnM4ieqDEh+w5IrPlea96rsDJS4afeqF5pDpZMUfw8fuVXUKntORWc2dfGT2wd2hvTtm7hG5KZlfQicfgxpcm630q9uOFxw2GXw86SjVDoZSw55o8Lh8felURXf2gAdYv+1FMTlqntq6U1enmocNH86q06IAiEWqFkD+wSMLIqkCeC9kNyg0f2QnQKoiKz2KWb1XbHu+rVPzVqNLDRz6mh8NHHlq2M3y08pQdPmJd8fARGzoPH7HO5wo5GGSZfh5hxYZ+reSp4SUfA+SokDd85GGW0S/NVmbxCB/Lsu+r4TMf0RuDiejUopHk+3siOoVQjQZpMU0BzZA+dkQvTbcKPk4cSVbQ82YolM7ZRPRVQMdJRRIrT+rtLygRSbDVFYkkapJ6G+XhJH8j5eGy5O2Uh8dB7qC8JuRtojzc1r2T8nA7+K7sM0eKl2WRos2Dt3I50LAmh9H2xiVU9utu8YyXz5B/ZkTOlDblTBFyBoKOpGlq046Fx1l8gLndVyXUAWZlF9ULG29D5JnPm9/ZsvrvZn73vaNR/SOx8XUYtmvFt3avLmpXw6+TLlXtOpHkcfnYrr1ClwblpelhoOO8bvGsK4J13BHrMUesIUes/Y5Yg45YnmX0rEfPMj7qiOVZxmOOWCccsY46Yh1wxDrtiHXEEcvTJzzb46AjlqdPeNrrkCPWKUcsT9sfdMTytP1JRyxPe3nGwn2OWJ726tRY6Gkvz5jj6V+dOmby9AnPftvL9unnASesNHn6vaftDztiefq9Zxk944TnGMDTXmccsez3PGyNCdcheDdJzfknRuQg/8QCWGr9IFbGvCsvnG41NhWvIroNOaolAjehf/z8KnrWLWgRG6+hKbKZUfEn4K5ICC8Evaxk+F6bGeqksNrMUG+DGm9D5PFPOhZ9i7Mh8o47Yh1zxDrhiHXUEeuAI9ZpR6wjjliePjHkiDXoiOXpE572OuSI5Wmvg45YnvZ6zBHL01f3O2JdCPV40hHL016e/dA+RyxPe3VqP+RpL8947+lfnjHHsz16+oTnmMnL9unnASesNHn6vaftDztiefq9Zxk940Snjr/OOGLxMgnOq3mZRM1hF0XkIP+iAlhqPhwr4xgvk5iK64huQ45qicBN6B8/X0fPWi2T8KmcK7K4ZcsiFU8VydNgfEoLl4OaYWQ5yq7UIX9vRE69TTn1gnLWtilnrZAzIPiSnL8mh5/FVvbXkpyZjnIQa0v21+yGS2FN+MxNONaslR/MzcHCm6b3AA1fkoYvzwchewfkI/0tWRtKl0XfkR0VVW9m4CUQtw7EdUVe1LVG9LfCJRC3Z5jKzlbvyg/45ZmZQq7C5LZVtu7qQocYFtbXJKK3uujJoedX6Yx+G9QdXzZhNHn+wzpjHQXCSBP7j9HvquA/9w3EdWX/mRR0+deA/+wh/0Ebx/xnEuWp9yBUzOSTumVj5hShn5LDl3nOFLonYXTcig0TGoLf6KwvPVdXcE+hPDx1P5XyboO8aZS3EfK4D7od8viyijsgD+3BqZu+o41S3383+D7TBZIZO8mvrvW2usdxCg9Pp5Ku/Cw2PJ2ag4WvS6sLgWpEvzG7eS9tj2cGRpYLL+w1m7Tpa1cW6d8Rv066lJQXPX2O5ePtrEVCl4bIuwg+c/wtMuXAvCOOWKccsR51xDruiPW4I9YBR6yTHarXfkesQUesM45YDzhiPemI5WmvIUcsz/Z42hHL0+89Y6FnPR50xPKsR8/45WmvE45Y+xyxPO3l2YY8xxOe9jrqiOXpX+Nx9fzYPv084ISVJk+/97T9YUcsT7/3LKNnnDjkiOVpL8/x6oOOWE9mf23tIe/+D8xDOXMictSlVWrdD9cceC5tNGmydYSKP8rSnRCe6YPPEL8eRsecKusI6scUVP3EfiRFbefzLR/tHA1YSFhF1z4S4m9VRsetS1PxCqK7K0e1LoGb0D9+fgU9y9u6NGxrRrj01CRMNGPMtGr7aFpEzqQ25UwqKKfeppx6QTlT2pQzpaCcmW3KmVlQzuI25SwWcrqFHNyW4rua04RbNP2TRuqkbgbFZWML1Xwz6B2ThvkmTxppA9zmsLcy1AsrfE8z/tYcdwENeF4iJBe+yMTw62F026jSBTRIHpcPw2Pxa564JaJVEBWfJWF09EpAM3zGm/oTia/KhXFT6XkzFEqlN5zqlIcbTpMor50L46w8ZS+Mw7rizSGMXHxhHNZ5Q8ixsnUJ+imE1RB8Vi+t5HULvjphJPQ878I43vg1+pVZhrpvWMnCFsUHmEx323xnGtbB6NeADnyPbQN4VLnqoA/a375je7o3R/71EFkvn6TlByGfy4e+2pOjb4N0MPoXgA34buKpgj/kPGPfnkp5UyO0PVQW/K58ke8xtqiaV3auf6N/SaT+JwkdTK80bWihA9P05OhwndChvXuMObJzLXFNTBI4ecmskXqseS9bh1uHepbnAe3eY9ybI7Mr6MS/r2F8IQz3ahXHB4XHI4ZfDzr6NUOhlLDnmjwuH09JVU/REHl5rbSVnDbvMc4bqKhgwfyBeBPxLE348u65OiWo5ExqU86kgnLG4uSckjOlTTlTCsqZ2aYcdWKMsdS0KU3mwHwycg8E9rU5l+R35WBuJh3UKqA6FWb0sVUpZUtcIVpWQHbsxx+KHnQ3+osFPa5eLSJdUb+LS+p61znWda7QdUDI5i6Hfy60GQqlwl2O4ddFGap0OTG7fE+x7G+5KTB6LFsFUfFZEkaWHvNiPUuabqbvVabAq+h5MxRKpafAiygPp8ArKK+dKbCVp+wUGOuKp8ArIY+nwFjnFws5VrYuQb+SsC4WfFYvreTFWrdhKL70+w2CJ7b3UaTVpokHbisdsdQPaZpPr4HnJXx6ZtFoZPj10FYbOhuN1pA8Lh+X/VKhS0Pk4WIn5qGcS4UchTXPEWu+I9YCR6yFTlhp2jmONY41jjWOVRBLnSlaRXnYf96f/VUzokmkn9oPXxjRD/kXRuQsblPOYiFnQPBVHSs0IjpbebDvZrupH3BeFZGD/KuoPHnvpX18kpap3ktL057sL/+Q/cvgPZjfn5RfRrSzlYt17gUZlldiXDOQjr3PLByWg+MU09Fw89oPjuFuyj6rPnsa5WFdG0arOvg01QH+SDDXAepTI/oVUAefoTpAfpxP5LUbJY99pCeHnn9Rwuj/TGydKP0W5chDe6Cdb86R95diRUn5nclu0+9mKr/D9sp+V3TcXdRPzSbKT3mVSp1pQj/gVSrj7wm6Dvh3roz+i6LOi/o516vR/33BenWKJ7Je0VZcr2o1UfVDMT/A+uL357DOi7yHjXVdpF7nCHyu129G6lUdnEE9uV6N/l8L1qvZcizqFW1VpF7Vmc9Y/63ecW+E0f1kg7BUjI6tKqt6jf3qj9F3Z32Iqle1sh+Lw0bfA5jnKw6jrYrUa+xqmlb1ynEY63U55aldhqox2rCKxmijnybqnMf8HBfy9Mv7vT7HDc2Lc9SYIfgD8Sb0bEYOluGkz3Bhnk1+1sWDXgJlkxv9XGFy1UxRHxWirDy29IjVPRYbIYZfD6NdosrSY2zo+T3Fsr/qtXJuZrGmVOZHap1cNU0356iRCP5AWIl4hnnKVXFPlHcR8HAS9tD9NFNAF+KZgop8auRv9DYCzRtdGF6N6C+J9EKxUXCaOFpfJuhxZMy/gYhluIzykG9RjhzsHTHyc+9o9FcU7B1N9lj0jmgj7h0vh7xuQc/2XifoLwcaXlVaB3mxJn0ZyWkVOtj/lZ+q2bcajU8K+eVtNStj/0KfuJTy1GxO+YLRjcVKCZaHfSHWltLEton5DtqmEVr7CbbLS0lOLC6lKeYLuLpgq2G9gI1ymqFQutj4u6rxP2D83dX4L7Vy8lHHNBk21m0Jn3kQbWJJDRUMv066VB0qTCB5XD4eKvQIXRqUl6ZXAh3ndYtnXRGsQUesE45Y+xyxTjpinXbEOuKI5Wmvo45Ynv415Ih13BHL0ycOOGEZv5depxyxPH3iUUcsT5845ojlGVc927aXr6apU+Oqp094xq9BRyxPn/C01yFHLE977XfE8vRVT7087XUh9Nue9vIcr3rGaM8xwGOOWJ7xq1N9wjNOdGo/5DmH8SzjE45Y43H1ByN+edVjEkavuXWKvTo15nTquPCgI5Zne/Tsaz3rsRPHq0kYvYbdKf7lGVcPO2J5xolOXWfy1MvT9p0aJzzH5BfCvNaz3368Q/XynNd61qNne/Scw3iu+3piefoEt6Ek+477pDvg8y7IR3r7lSG1j11i7/ahAeAJgIHYFfehH0oIL4SRY41A+AM58tJUF3m1Arr86szfue+Gi75zb0L8pgs/KzI3UXvaZquJpHszFEoPqDMkJtvycH9+AuWhXUyH9O+bF47Ur6eifkXsh/gNQc9vxRWti6lhpC+gvxf5kcxWd4fk3Uzbk0PPvxxn9OuyNqnenlkB/PUceajfCmGHhuBfkYOV98bG0hzdXwi6890u6hYBdS2S0a8U9HgkmM9bYRlWUh7y9ebIwbJiXe8JI8tq9NeKsqr2Z7LbPMPVr85woY34DJc6K4X0Rd5OwTNsfCsznmFbQXlo45WUV/bHY4ue7zJe/BW+Incixe7GKdqu5wo9uG1sKtiumznyUL9Yu0b+Mu06TbtzdN9Ssl03hX6d0K6xrveEkWU1+nsvsHZtNvFs11XfVlPtGt9G4l9nvRTyDBd/ZfCS7DOfO98f8efLhK4x+7Y6+8q/colnWi+nPOS7mPLUmVnTYZ2wA+rFd7EZ/TGww8+BD1pZAunVpq9fr3wdz5Gzr+NV9N2CnuviSkF/BdCYTRpEz/WC3xELbcqvCJmNegQ94vF7AU+KfsH0w/i2jnRfVVL32UJ39cuc2KZ+vu/5z+aD+J5Ik2SuishkXowzPTn0/M6I0b9W2CsW89FOEwjT6H88Eg9U/FS/8hCz/RpRLmVTfk8Adcd78gybMdtsn6/wvFEhTWXf0bH6b4TR8ZD7G2wba0iOGmMU9X/0odf1ady8/mZJ9pn96+cj/qXazXJ4VrY/5/4G/WsN5anxvXpHhceRqt9Fep4fGv17CvY3Tv487Xy/98K3pmF/wPFQ+SzWNfc36naONQKfb8v4tUh/g283X0q6ryipe5X2doD6m+VA1ySZKyIymRfjRV5/Y3g1ov+tSH+zHHTnuZnqb4z+v5WcT8X6m1bzKdNH2ZTnU6i7+YJqn0bXZvucrtonlp/bZ6ysaWLbxOZKqr+JvcEfu193uZBT1P/Rh7ZTf9MkXMRCv4j5YxNorJ7YHz8d8cdYO0sT27zVbaHN7LPyR57zNCEv5o9G16Y/blX+iOVnf4yVNU1l2yrPxdFXY/7I/XNTyMEYwv6IftSEsm7oG0k3ETCS7K/tCeDaQAmbF76SwPDrpEtJeWffM+wleVw+q7tydzPjzghbBVHxWRJGlh7zeEetm+huou9V7maeRM+boVAqfTdzD+Xh3cwTKa+du5mtPGXvZsa64haCuyV8NzPWea+QY2XrEvR1wlI/HGb10kpet+DjnbqEnmNPoXb/akT/L9BTrJyXbwfcgWNM+75a6Ml1YfkhDPtrxR8CmVo00hh+PbQV2c5GmjrJ4/L5RBqTMoVQjQZpMeEPZCE9f+cfQrtV8HHiSDOLnjdDoeQaaXopDyPNq4COk4o0Vp7UNi8oEWmwhRaJNJaHkfo2ymtA3kbKw98LuZ3y8L6YOygPf2JxE+XhlUp3Uh7uBdhvS9So7NMzpdo8UzBC/xB0/Y+PWzpt3HIHfa8ybplNz5uhUOrYcYuVx3PcghHXc9wyi7DGetyi+JIwcobF9dRDtCG03RMV/j1tw6+HtqLb2VY/i+Rx+cwOaoXBeBtBtxv7jHkoR832FRb/qtWUgjq3eRkbf+/NUaNL8Afi5aZa5CAfBl9epDVdekLczWtEf02mtLo3UPGnqYjbn+vOrl23V2Ei5vZThC4NkYc25Do8R66apjty1FC9aCCsRDzDPOWqOCvbkCO7J+gZIbuq0d8kXLURRuqI/Cnm2+sjZaMdusPo8rGum0hXRYO6Gv1G0HU56Yq253HwJtCFm9SdpHszFEqFm5Th10mXqk3qTpLH5as2fmTvQ6sgahC0QeS1ajk30Pcq48e76XkzFEqbzSs2i0zLuwewE8rbAnk8q9oKWGXHj1aesuNHrKt7KA9/GXALyOY6v1PIsbJ1Cfq7COtOwWf10kpet+BLCCOh57judYeQzW9K7IXIweteKIvnNSp68FwrTWzvEEZHmor+ur1opDH8ehhd91Uizd0kj8tXLdKgp6CUbYRqNEiLaRtohvT8nWtvkeDjZDg10vnJzItS7zucfZ4cRntvH+mNOsRidkPwG52S09+mnH4hxzwZ62EH5dVEWfm9nTRtobwNkLeT8m4V5VKzcsbcGMG8XeR9L3JMHUmH0SjJ+ZumbvGMbXqn0NXqDiMAv/+hWtvdETnIb3QDgq/d8iid1bgKfynndVOGebCnxaiNftzMPteI/mtzh/neQO0Nf0vYdFR25rZY1s59Qs5Y25nb1D2OchALRzLpv62ExXZuZp/Nzsi/lfi2QR7S4YhgKzzfJmQrfMNo5YM/P0WXLc8HjbdG9J8BH3xnRR+8h/JwdMn9oemBdkD6ZtDl6smhzyvXeyPzvjsFv9KdV4zuieieJvZF5OeR61j4PMps5T+/Rv6Decp/+H1Ao/9t8J8Pkf/gCG0syh9r1ziSs3451q5V/GA+bKPTC+iwVejcEPxGp2ZZ7fqG0rmVb3yMfGMb5Cnf4PdYjP494BufIN/A+Gk6KjvzGLCsnfuFnLG2M4/vtjvKQSzu33YSFtvZ6snsvAPydhLfLshDOuzf8F3nXUK2wi/av/3pFF22PB80WTWifz344J9F5jQxH9xOeWhTXknZLuyg6iAhvXty6LdTuYz+86J/i7XX7YDJsdzovwCYfM5yhyiXmi3HfHGHKJeyKb9Dr2SjnTfkyO4Juvx5vvLliE2Nf0JOedimRv+ViE2VjWI2VW1spyjXZFHmXYR1l8BCOxexKZafz1EY/dcj47B7BL8aO/AYUo3DkJ5/ZVK1MTU24Tb2bwXHkDy2wbWFXZSHawubKQ/3M3guhvXBawS4tsDrHLdBHvd/GyFvG+XdDnkjfD9bW6hRWXuy523uO8jzMnx+J28NDf+GUKw/5TtlUM5YrJsoOXc5ykEs24VQczb+leey6wbIH5sb1tqUUxNyGMticppwTMTvtxj9nMzJ0nb9joUjMTcL/fAunA2RsnJ7RiyrM2sfGPvGYl/O8OukS0l5SSzmYvl4q3uL0KUh8vLqFOXEfveqqF79YfgMYraKf8PeB44/vPHww4FSjb7fmKPifKLbkKNaInAT+sfP59Mzte2M2Oeq6Z1POZPblDNZyBnrpc7JJCdvunPF1GEedOG86c7S7DMvKZ+C6c5VGaaa7uQ1O/S12HEMk5d3xGFCjn4vhtC7nIbDE0SZl0Z03gwyWG6aduTocB0NVSqGYjlU4aVQHNLxdV4YynhzGIc43eIZ+9wmIYex8rpJsysP6W4q2U2ib2+IlHUz5WHXxHZQclR4V3aIyWm0Kach5MS6/aqxROnMU4k0YSzZTLHkHshTQxqbPtSI/pUQS7ZGYgnqyN9VXM7rJ/Niyd05+u2KxBI1NLw1ojNOAVlumnbk6LCHYglvBTVDsaRiSWx7dVoYqX/ZvhD5z1VfOI3kjPW2n1ru5/iitqO2ROSoLbVW7fHQVC1TtUfu15B+LbTHV1F79Niqy2sTIRTb7tos5OTFoBDifZDRn470Qa2G/rGpWp5+eLAK6adCmfOwgnhm9Nj/8fLFFqK9J0LLeqMNr8o+WyziLeVmKJS2mT9vE5m8pYE6WR4uI/JBS0x8RAl1Tuv73XQFSxBYarq5PQdTtfl7iRaPaTEubxdhO2Z77czRges4Teuzv9zef3rqMP4bqZ/B5fIyh+3UlpQlrj+2HSdVf6ZXWn+frlh/ecexgshT8Ti117vPk714zo/pfNiLl59b2cvyrLxdgo8PoZq8T4K/vofwaiCL/T9vu6cm+EMYPRaz778MfcX87Bzk5DC6f+UrUxFbjY+5n5uTo5cqJ8bJraS30X6CfJW3W5uhULre6phjD2LvqoidEF4IetmR/Q3lmV51kVfkmvNVl7/kj/6m8TN/mBC/6cLPeB58r6CfI+jNVvcBfwlbvUxdAWOyLQ/9cRfl4ZqB6aCuOb+3on5F7If4DUGPtilTFw0hZ5Mj1j0Vsez6dbWdyjE3iDzV96f1+Hc0Tsd6n026lo1DyF8mDvFY12i/QHGo4vjxBWocyHFoZ0XsonGIj0qreq2LvCJxaO0Ln73sk5/pfTQJo+Ntt3hWZBtfvcTaZju/XMUhjjXojzspD+OQ6aDiUMU+5fIi9kP8hqDnOFS0LhpCziZHrHsqYlkcUmNwFYe4v90myoNxiOcYX4Ex2xfptYEi4+4QRre1eyJ5WwVmKvv/zxl/2stIOI/kOZo6VmTf8Rn6OvLw2oPRfwNs80+kH87/sZyonxqr47rkt6bm022L0BUd3/OWrDo2XbRe1DEtXi9SR9zxWWy9yOi4T5o4bVgXW0BUfek80qVsX4r8RlfkVaG7hQ6qneJc69PTRtKhjZKcv1YOfsblUPWTbn3bJQvZ1vfNe4c2PzJ4dO9Dm/c+eHTvUDdpwDsY3Kp2kEYqmZY8MrmdvvMLbLwqvFXgtJKpdilmwmeWq3aw2LIzhc7nU87cNuXMFXJUdG/XI5XOrVbM504b5kGfyNvB4sOHRv+rc4b5FlD0ULuOys54FUsVO88alzOmci5uU87FQs5Yt4OLSU5eO1jn1A7uh3bwggLtgOWFUGyHBfl5BLy1BRYfAEb+2OH8TQXkxF4QKfoSQJHyxOScz/IYlno5Aetgc0Sv7YS1owUW70KqA/jKB1nnsiczkD92AmR7m3K2F5RzrsqzjfJwhsOxWNXdjogOyM8jYLXKUzVGKp1bxcjtFCPVi0Kx0y5GvxFi5K5IjGTf/UGz805HOYhV9LTEw1SfuyCvSH0a/QugPh8tUJ/KNpsj5cHTREXiYZEXpLZH6NWqoeoHzL68s52mNnc2Cl9RbPh10qWkvLOHz+8neVw+POQ9I/uczXSv33ts3RXX3PDdae7pI0NsU8PFqwBRf6YP9J35Ut34NPQOISNN7D87iY7r3Z4zfhGdWtG2ylft5l6iLduvIX/eCcK800JWP3yy94msnavTQmochT60IVJWvvxha47u3aIMfTl8Lw9aPyzzhkiZjf6pSJm3tygzj7nVeI9jE9N1izL0htE+gBhFxi+4kjU/jCxX2ZXG+ULOWK++zSc5ef3dT1B/p140xTZ/ffaZV6uXQH/31kh/d67K36pNY1nYp7Bc6mRkmvgUiNH/XFb2Nk9TyBO5sYuisP3+AtWpKnusTo1+OtTpuwrUaax9xMYiKk7cE6FXYx21xjJ2J1KSvy7io4ivdnurjEXUKRK1k1d2LGK4n4cCof6txiLMp8Yi23Jk5LU9Hh/wWKbVWETplEdbdiyC6xx8gqzsGqDaBTb/rPjiZNN0uQf0UKdsOE7iSVFui4p+E+nH+HnrD7WgbcMXKhn9r8M4YxGdrkMd5uXoF0KxukD+c7Ueyzt3Y/EGT5pil029Aj5jnsnJi8kNwR875b+zTTmxUw6tfP3a7HOrMdEnqf9Ul5vVhB48Nv747GG+P4zsHsf2F/jtrtjlDuqt2Ni1urgbrPTiNx7L7morffgtv7+FHfY/JV2wz1lJupR9QxH5eXyAfNaWesNoe5SIv4VflDf8ehhd5irjA1VHyi7q0g/jbYg8fmtOyYn9EPyEgno5vihv+ZcQ3YYc1RKBm9A/fn4JPVNDDMROZe2bNSwHzfD/0dSBu9ZmKJbU1IFDDFYPN/OyTQv5817+xe5eHUxRoW85YZXtypF/Uw5WTeieJp7eGX339Of/tjk8uzP2EmKbB2DvLBp68u6jQ73qIq/IIdUrvnbqzS9/6apvcxdquvAz9hs1hVwu6M1WuDxUwla3q0OquESRJjXNVodUTQd1SLXiC0C3F7Ef4jcEPS+Vlt3SxbwNFbHsYKmaSpyvmJS3vMtTEKOvZ21fLXWq2KReOo9dvsAxjcvIMSdNzaDTdygZntl/opDFL/4a7RQo95JFI3XdLHS1GNEdkRHEsyTk24ZldAnel4SRut1TQDf10jBidOXomWKo6Q37bdnpTdGXpVe0KWeFkDOWL8ajzFbTr6XTh3kwnuRNv16afebp1wdh+rU8w1TTHJ5GqstocMxS9gIJjidGvxraFV8goY5avRQw2c9QBpcrTTyeMfrLaDxTccwhx5y89IPTZI6tabotp0wYp9VFA3l+EkL8ri+17Iw+yTFb3YvKWHnbZyx7ZwvZvDWWd5ctfkfZd0Vk39tCNvfL6qU89uWvzhzW4aXUfvGIhKr3jYRp9H8+YxjzupKYt+dg3jl9GPMVFBMw1i8MI+WVHX8g//hyQ/nlBh4TKDkLhZyEsFrpNQbLDbOJznO5YTY9K7PcYG6OJz+uIPxbAaNbPGM3R36jU3J625TTK+TEsK4QWEZ/m6DP+8FxJ9cwFRcQ3ZaIaozbyjUW0LM817DUTTLTz7zixFXDOk4WGLVImbrFM67qmpCl5FzZppwrhRzezD9BoyOUXyJavpZvPDYMxK642vfaopE/bzML9VK/olhktefrG+/46I/9xde+mBC/6cLPuEmqw1tXCvo2r0x8jVrtwQ2WNKmNGbXagzNpXu2puCr4miL2Q/yGoOfVnrKrppi3oSKWrfbgDd+xtnyuYsZYyIlhxa4dNNv0CHoVk4z+h2DWyD9+rOwdxLOuMDoe8WoDYs3I0V3JNvw0NQS/0Y1hTJxQNibWw+gyVxkNq/ah7MIb/cirNu55xlf2sGunY6Fv8i8HWL76a3L4GcvBtjqD5IzVoY4ifl5VDmLxiw1jdXjEViDa7IO3qNfTLamdKPYLdcWEuhaQ7a9erFAHBB8COk7d9J3HAcsWDeMynSW1msv9UtnVXLXqp1YbcEXt/dO1TFxxVDsyvPLzMVil+bXp+WXkGX3VFctfPwcrlj9IPl7Fj3dV9GMee6lDR+qwv5VDxWv+9QaMsVsoD/tv/mU9jGX8a0RqPKNW/NWYciPloQ61AnJi46ZaQTkL2pSzQMgZy34LZbaKU39CcQoPr6k4tT77zCc3PgBx6k8ju0GoI38vMq43eUWvEzf6ZyO7QarM6yM6o4xAGGni2Gr0n/c53SJjK+8q8BoD6l92zpo3Z+e6Mn3aLF/h1XbDr5MuJeWdnV+o8bW6Zr3cb8bz2SjuOdR+RRJGlh7zuunZBKK7hb5vEHxBYKf5bV50v5V7X0xle1++uB5fSyk7irTypK2/f94wLtOxrrFXq7Bn5tfpWp3JsLJ1Cfp7CCtvT7a7gDy18sGzfsWXfr9R8HjO6jzPQ6gRIUejiiPZ6UWjkeHXQ1tt6Gw0Ume/1I8XqHbFozPMw1VWzEM5sdctEetWJ6w07RzHGscaxxrHOg9YRWa/2E/x+SGMgzzaLrsZj/yxTf8VbcpZIeQMCL6qfXIjorNawWC7lf3xHuTnVdu82e9VM7TMorNfo38nzH6vmTFSZzX7DUGvNGA9GAbz9oIOlldifDE5HQOfgR+jYLvy+CA2Dkk/27lJPs+OZVe+ULSO1lMd1SBP1RGfVzX610Ed3ZR9VmfT+Lxq7AwWyuN22JNDz6/qGf1tmU648xg7z87y8s7vLsmRtwnkraU5Efodng4IobLfTVd+h3GG/U6tsql4FosXarWwEUb7MO82q/OI6uxqQvw9QdcBvqeF9DtFnRf1c65Xo7+vYL2aLceiXtFWXK9qJ1+95hrzA6yv2Coo19MGgYV1zfSt2rLRc9t6JFKv/H4M68n1avT7C9ar2XIs6hVtxfWqxh/qTGjMD7B/MJuoXYvbKU+90xOL3+gHReocafLi90lR5zx25LjQqn8JYeSqY7aAbKuOm4cOH92bLTsGSrFlwvR73hHgaYI/EG9Cz/j3KlX4jC3qm+y8wzocPo3+SWHyWPhNU5Fj4qjfWCxcG77XMfFWYY2XimLNLDaVOQ+umqZbctRIBH8grEQ8C0Ef3Y69tRSLbspU6vwZ0vPFlkb/xkjP0WoflSOfGrlj72j0qvx8iTHybcqRgz0autESKqvRv61gj+Y085E9GtqoyMpo7K1q9caTWi1tED3aXvVo/KZXq2ZoTZpDHfKqmZXyl9jILGYf5V/qJ1DUeYXYLBjPkITgOwvG8rAvxOo2TWwbdYka1jePWvFsCa88YVviy+DUrKeoL8RWQjYVxDV6dQke+jDPyo3+QyIGGKY6pxXzR2ULjON8RgaHQLHLm/DMhmEHomvTHyd5rsqkqWpbVbs8fB4e+4K8VRy0N54zOVcrf3yO7vfBz/J+arroipLR/0HEd1UZYr7bapWNY6n6wYFzvXvP5+owvvGOMcY3PgOFK/p8djTv5x858RgQ7VD07Ggs7hSNqehL7yefx5h5GclUQ3h8xj6P/Hx+DuX0timnV8iJYV0msIxejaHH+NVAU/EiotsSUY1xE/rHzy+iZ92CFpOqplqO3iEUqybkz6smDG84G+ff8sDhxuWEVXaTCfnz3ixVuqeJj9EZ/XeysNvma4NvK/KKTMUjbG9LCC+EED3Cpg4c8WuDfEFKM8TTH9/5mQf/4tfetTghftOFn3FzVWHwckHf5i+ZviU2rFKvDfIrhUV/ybTicfO3FLEf4qsj0e3ep495d1fEKvLa4FjHJF4CqM18/i8Oy861LjZsqXeALjYUmtwBulgfOV3oEusPsO/kvgV1jx1uOFeHKNa0KWeNkDPWhyjWkJy8jfPmzGEebOtqmpOm3dlf3qR8Fi6fuSj7rJYM8/r3JMTHHawfHu1Hmrtz9FsJ/slH+7nMWE6l80aQEQgjTTwmMfpLMx16SdeSfY082s8HoWPjlYpyC+9cGL7XK713kzwuX7Uj97ydz7/nrPZ+kjCy9JjXaoPiJvpe5ch9xdHJveYV94pMy8NfhOJJ+/2QxxPz3YD1ENBxUpNvfOGtzJF7rKv7KA9HW/eDbK7zu4UcK1uXoN9MWHcLPquXVvLURgvPUBRf+n214BkIo6NQ1d6E7eiBFbtit+JCVOFfIjP8emirDZ2NRrEF5DRx2bcKXdQxOF60r3pFbPp5hyPWLkesqlfXKqxNTlhp2jmONY51AWMVeekb+wPrV8/VbFPJWdumnLVCzoDgq9r3NSI6n+sXcPNmf0/M1DKLzv6M/hmY/b165kid1ewvTWqmjfVgGMzb5iZqv9pERbvyJqpa4UT6Pdnf2DE+5QtF6+j1VEexI7+oD5+D+zDU0dM0Q8dV3SLXfip53A6LHm03+rfADD12tP22HHlFfx3Y6H8K5J2Do+1Tld9hnClyVFbFs1i8UKtl6vAQH5VFG/OYreyxd3VUNnbs3ejfLfyB+yL2jTz9lN2cj8rm/VrCFMEfiDehZ1NysAwnfYYLIEWOyqozfRwiflmYPFZlaRo/Kvt9d1T2phw1EsEfCCsRz0JofVSWe5WYiZWpqr5k8VHh0rEIq0ZYsZEAVm/sqCxf7aiu82U56uWPEEb3aEb/OwV7NKeRlOzR0EbcoxVdOTH6VseduKnFXipUM5uizbDoUVkeqXkfTWT/Ui8iq6NfsVG109HE/k4+mriJ8tQPgyRhdPsv6ws4e3oiZ18tD5eHDxsBS60m83FDo/+fIgYYpjoDEPNH5b/qulB1/J/jHeoeO7ptdG36Y5/yRyx/kVle7NxL0baqXiTdSHnYF3A/2cpvYv6I+5pNmvFh7FhFMsuuPCA/H59GOb1tyukVcmJYqwRWrC2M8TFDU3E+0W2JqMa4Cf3j5/PpWbegxaSq6dYcvUMoVk3IH3OHsVjwUnIubVPOpUIOH3+ZkQ1927w1+zWxzbd2b95PCC8EPZvK+y0y1EttphU5bvjby9e/9l3bf/LOWNiNDQnV7yZdKujNVripXcJWP6K6JpOtjhvyUUTsXkwHddyw4nHIHyliP8RvCHo+blj2xmPM21wRy44bqlvYz1XM4OOGc7O2rI7VnStd7Ljhog7QxTaJLjqPuig5a9uUs1bIURsCSc5fk8PPWI7SudWi/9pZwzzYPoou+hv9L8we5lsXWZ7JG07hGAIPonB7t+94LE/dScn6XQ0+xcfy7qYyYzmVzvjbqSw3TTtydHgJ9d0V+1d5LI+nQTjN43aiDgipm2VVOzG6c31QjI+z4kExPpyERyr5ENkeyJtAeYOQt4PyHoA8XsbExEuaaKPU9949fxiX6QLJLHv4TC35rYPPmGe68jOue+SPHV2+u005dws5aukTx6uxw2jmnxWPhBbeEeDXYiq+/nN2RyB2v9D3FMv+qjEzT/cxL+84NMpZJ+SU1WsMfkjvEqLL+3GlROAm9I+fX0LP8qax9v18vh1wrpoYDklaDR/20vAhdqqfu06k/+VZw3yPwGfe6UGsO8PIPLTjXaS/OmfTK8o+FiHC8OukS9UQUXS/vtwp9bxTAQmh4rNYS+G9Qebn1l/llHrF4L5JDb4tWd6dgM0DBfzBZV4XxYHUQ0DHSQ0UrDxlT6ljXd1Jedgh3QWyuc5vFXKsbF2C/jbCUlvTVi+t5HULvgmEkdBzjDB3CNk1on8KJgDraAKgZJW5lI1p8vaIfywyCcG9VlUuPgbCgx5sT/fmyP85iKw/PkvLD0I+lw99tSdH37wrpd4ENoj9pKHyR36HTf00T9533vvGz/hd+eIdRH97i7Jz/Rv9T0Xqf4PQwfQKYbT9WQdFo3T4WaGD6CnWHz5yOufUB4+vOLJzLXFNbBA4ecmskXqseS9bh1uHepbnAWnJZ2Sfzw5XD+wdyjvxwmXN60W7gk4DQeuWpvN1iGlCNXnRQ0xYvqqHmPJaaSs5bR5iyhuoqGDB/IF4E/EsZGqvrj//+Xz+ltjdbcrJezUNv+etJFpFcAfxXyFArc25c7ArB7PI7oBa6TL6VpvtbEt1MCYmO3aWcmtJXdUdcHhQhVcEUb/tJXW96xzrulHoOiBkc+jEco1F6Dx7OYMoQ5XQGbPL9xTL/pabyvGxM7QKouKzJIwsPeZxhOTO9mb6XmUqV3F/8j5eK8ak1op5zxnXirdS3h7AKjuVw6tfykzlsK7upzx8IWs3yOY63y7kWNm6BP1Owtou+KxeWsmLtW7DUHzp9xsET+zF3iKtNk08ANnpiHWvwGrzTMDMotHI8OuhrTZ0NhrdR/K4fFz2+4UuDZHHS0v3Czn3CzkKa5sj1g5HrF2OWJucsNK0cxxrHGscaxyrIJbaO+SzXdh/8t7z+Tifs7hNOYuFnLE+n7OYyoN9N9tNnUW8NyIH+e+l8uCyMW7kzZytZarXAtK0J/tbI/o3wTmgObPzy4h2tnKxzm0ezR9QR/NxjFNkXIJjOHudTfXZfJs+1jWf3cirg6VUB/iaB9cB6sMvyZ+COlhOdYD8HD9Uu1Hy2Ed6cuj5fJ/Rr850Ui9gx16fUj6Jdr45R95akBd7Xc3plZCZyu+wvbLfFR13F/VTs4nyU16lUq99oB/wKpXx9wRdB4bH59ZfJOq8qJ9zvRr9SwvWq1M8mVn2Qge1mqj6oZgfqN+Fa4TRdZ63+opYWNdF6lVtr3G93hypV3UYBPXkejX6WwvWq9lyLOoVbVWkXtVZqFj/HXtNC/tJricVo2OryqpesQ7y3jPZEqlXtbIfi8NGv70D4jDaqki9qt2PovXKcRjrlS/CULsMVWO0YRWN0Ub/kKhzHvNzXMjTT9nN+SKM7TlqzBD8gXgTejYjB8tw0me4MF/kNAQugbLJjX6/MLlqpqhPkWOvFV8LK7wRYvhex15jQ8/vKZb9VcdeuZnFmlKZY6yOF2HcnKNGIvgDYSXiGeZ5vbi7l45aogvxTEFFPjXyN3obgeaNLvjAktGfifRCsVFwCKOj9W5Br94iUOXfTXlqR4nlYO+IkZ97R6P/0YK9o8kei94RbcS94x7I6xb0bO9BQb8HaHhVaRDyYk16N8lpFTrY/5Wfqtm3Go3HLjFoNStj/0Kf4FU0NZtTvmB0Y7FSguVhX4i1pTSxbfYIeqxHntnsgTz2E2yX95OcWFxKU8wXcHWBV8PUS/xFzp1gDECavN/wereIAYbp/Rtepk/sN7zUb9PF/NHoOv2Sl1Y71ryiikNNvq40dgaold/E+mZ8E5Pf0mz125g8PN0GWKq812Wfa0T/6xF/VDaMnQFq9RuU7HO407uD8lR9KH80urH4fU4sD/sj7pB0C3q2zS5Bj2MuvmQKd5u3UR62Y36LEcuPv5O7dPpIOrwEKcn5a7rys7wLkgKUiU+7eMhBLC43thdccX+G4vwOyFPt5Nrsc43ovwgr7v83rbgj/3bit7z/Ae3sLYvy+fl3atXlU6qNcP+kyon01+WU83Og589BewhhZB2ZXm22u0bZdqf6/1i7i628o03Uiiv/DrKKyeiTeTG5J8TjIcfkL0RWabAv2kG6by6pu+pPWsWRT2aHFCeTDhzP8voDVVdqBWpHDlaX0B/bLdd7t5Ct6HF+qsb2fNWw0f8j1NXbFmnMkKPD1hyde3LoeQ5t9F+PzKFVHED/30WYRv8twOQf4WqFeX0O5r9FxhqqnWIfW3YuZvooP+W5GOrO/eJ9IJ9pbyH5mId+znJDRF/uU1vpy/2N5U2Z8/zftI5q2edewisZq7tjdfUKoW/RutoaKR9jGV8tjPbHWBtBe/TP0ZgTSmJOznCwT1djlV2AP4VkqxiplqF5nMPt8Bkak2A/s430t35iFugfW4/yGWMnf132IkVlm9hFirExOcZw1d9MpTz1e+SJ0KFsX4pzvl+YNhJ3ewQ3/byU9Gg1xnth9pnj8HJR7zEbxmzeal5j+qg4vIvylM+ea3/E8rM/xsqapiK7hzivY39U/YfyRx5nxfwmTTF/3A5l/Qka2+2KyCxaNo6xPTn0eTH2ReCrRfYHYr7aan/AdFZrtLH9gR05ctT4KE384rTRv7xgPHbaH5jayfsD/LYB2ng35aFv8il91WaLtg3stx+mWL2zIG4isFSc5Fht9HdGYrVqgzH/bzUXPvtjwGG0Le+jPBWrxvBk1lTPk55pqhobGkSPdlK+yidDsfw7QfftBcYCsbpttfbKsU2NI1U/zHPU7RE5qFdD8G+PyJnVppxZQs5YrkGiTDW24fKUXQtBfl7r3OFYHqWzeiMP11SP0hwG/bhb8HJ/Z/RvgDnZ8eyz2qtivynqu3xGIbaGlCa8UiqEsRhzhgnne8zJ40qM43zOQb0zjr4X+zEI03Es7IXtucicUcWNmH2xTfBeINpyK+WhvxV5/77oOAT3mtdNa62/er+8qH/we/o4RuE1tV2ivMoXjG4sxgDn8tQ9+wKOD/jtKqx/vh1bjR1VvOQ6zhs78p6V0f9cybFjzG88x45qnX8MY0hH+01s7FjWbziGqBsAsP+OrZElYWQ/mfeT0Hn7K3zWIqHnffAc+a6hMvMYibFfRPRWzp4cer652eg/FFln2NlChxeTDrta6LCTdDD63xA6xOyfptiYsDeMbosl2k0tITzTB58hfj1o/2iGQilh+5k85Qdp4ras2hPm8Vym7FuXiLXZEQvHlm3UV+kbt3legXFsM+Xh/Bjrl1M3fcfypH7904uGcZmOdcX6wv1c9rGdgnenwD5f7WFnNXnR9qDmAGXbA69bXujtgc8udVp7UOtKykZpaoZiqUh7qXjrzJKi7cXwvdqL8j3VXtq8xaeZ/rZuXxgdq14An9F2KGcX6dBu/cXuTDvX9dfunWlF5yae9Ydtq0z9qbW/mfAZ87A8sbU/5D9Xa38zSU7e2t+/0dqfmpvG1v7O9o1zh/m+HVn74/U99K3YOXWja3Pu2N3J54Jj59S5b/daf5qbs/6UAO61gpfbNtLvEnoYPe8bMw2fXzu71pD5l7qIWfks6pW3njIVMM/1+TW0c+xdoth6itO7REvO97tE7Pd7IK/V/m+abhVYMV23tqEr1yPW1R7CUrefYHnYL43+IuGXY3huYEnZ9TRl09h62h5BH9tv3QN5sXMDvJ6mYm/R9TSMIf9G/Zc6s59QHsrEZ7Ebpfgcn/XLV0L981ld7LtV3L81B/PqSKxTZYjderI9UmbUJ3aPseLD9796haymffhOPBme+cpEIYvP2RrttWCnJYu0Lgnr0yLF3tHpDaP9usyYNyG8EPSY3vDrYbQtqozp1RhY+b2Vr+IccDGO6dGPcEyf985C7B5qbEe3zB3myWtjOE69OvvMbewOGAPfloMZQvnxGupzaOpI3FhbTFO77/ShzWN783dTntpzNR3U+QKk57NTRr8V2mbsXSan86T/1Ml7+/zeqvIvtbfPfpP3borh1Yh+EOqA32XC3xaI3U5ZRPeiZ+Zj7bjoHCnW7lHvpdlnbvePRvpW9Z5WrG9VfXHR3wjgdw2RD9c7DTsQ3Vjsy2J5uL14xy6eWyt/Vu/W4dl0jr04V95MsVe9N1Dklqe8OwaWZJ/5joEnIv51Pu8YQD5r+8q/jK5N/5qm/AvLw/4Va0tpKjuu5TtOYncMYCzkXynAOQC+P3IF+ZfqJ5H3kuwz95NPR/xlV6SMaSrbR/E7zEXPF8XeEeOzVvcJO6Bee7O/vGb0toLjBafzTNef7zPNfP4e59j8voda10Sb5p137wkhel6I19jeGRkvqP1g1baK6K7irmpv2Kb+dMrzn9U8P+8XWZRM5sW+J+9Gv7z5568Ie3E8y3s/bBlhGv37I/FA9al3wbOy7+Tx2V71nlPsXPrYjefDK8732j/3H7E7QfLOZyEtyinq/+hDHyP/x/78TpIZG8cyL8rJ8/+8uxI+FvH/VvPyRYRp9J8oufYV8/9WY4TYGCl27j12J47T+PzG8z0+Z/+Pjc8x/nJsbXVLc8z/0Yd+bcpIXLwXQ/lsM/vMd8F8tqR/xd77KToGjd1Vo2Ivr8+osSvXY14/sySMtIPR/8+C4y2nu2amn+94znfNqPFtLH6OxV0zXy64PsNrS/eU1L1oe8M29fPU3+Dcl/ubeyIymRfbdV5/Y3jcN3w90t/g3EytB3F/Y/TfKjlfj/U3rebrvB6k7gxSc/nYfN3o2myfM8b6TsBWa2Xc36g7IFTbKHInYFH/Rx96Xeb/7dn11KsT0MWwuwVljf4aTV/mk3WQb39rBfR49ve++dkP33rFwanEnyaro3TPJq3/CfOGdUiAduq8Yd0nwx636WCJz0vhPc04l1uaYdh+Uw/QNUOh9GIry0TAtboJhGtl6QUA8w11X+RkwY9+gHIXgm1mzxvGQmzWLU0PEZ7RzifbTAS8Eu05cH0jltUP5vWArovnVaNDX9hFsjh+GMbSiKwaYWBMMbzUd6u2jfm/vffT1/3l3/9lq7ZRFf91V9SmvnHH7beMFf6nJ/7DN575/Yd/Yqzw/9/eO2/s+vU3LB4r/J/+xh1XPTXnon8sE5vMFyYBrfFZm5kMz0u0mT7U31I3PUP8OulSUt7Z/fnJJI/Lx+8YNIQuDcpLE6/FNYSchpAzjjWOVQaLxwu7oE+8I/s8OYyO75NIl0TokkR0Yf40VR2XWF5PJG9iJK83kleP5PVBGSZRXj/wbaG8AYGZluvB+c9/tlg4E+iaoVDaZ/rMAlyLbYFwzfazAaDI2Ar5ZxPWnBZYdxEW8s8hrLktsHgPFfnnEta8Fli8boP88whrfgssPmeM/MZr7c7q6Z+h3e2jsajxqLHoqwjPaA/SWHQB4LU7FjWsAaFPkvM3hNH9cZo4LiAW/8r7fCGnzfL1F9ET8eukS9VxwwKSx+XjccNCoUuD8tLEfcRCIWehkDOONY51vrDMx7FNtBtHMB7MJzmzgA/3Kd5Ia4gYd7sF757sL8fev4BY/mYaQ2HcMB0nC515fKTixYJI+ScJOWNtZx4DTXKUg1i8briIsNDOadqT/TU7YyxdRHz4i9dI1w00i+D5YiFb4RtGKx989zxdNuWDKKtG9L8DPvge8kHkZx9E/5xEeTxXRj2Vf2Kd7SF607tH0CNejejfl5VF7SMYP9oK9eJ3Noz+A4DJ+wgqvuFYj9fKlS+qvlvZdBFhdQksLA/vZSmbYvvsovIb/UeETXk8hvxqvY/fg8V1nNmUh2sgcyhvCuTNpTwci86jvGmQx/fxTYc87gtmQB76z475w89btcM07cn+cjv8eMS3VOxQY0Cjbwr6xaLck8Nof2pSHvKxTzYhj/uhJdl3tEMT9LKzcDWifwbsENuzNr3a3BPrU3tiS4CA17SXQl63oOe6uEjQLwWaZva5QfSqnauY0YRn3M7NRj2CHvFqRP/ZSDvHOLGEdJ9UUvdZQnfu97hNvTsyTuK+ZmFEJvOinJ5Qrg/960hfo8aGqBf3NUb/t5F4oGwZ62tU/FgkyqVsupjyVB+l2qfRjcXv2GH5uX3GypqmqrGyEUa3n/mUh22D/V+tBRX1f/ShNxbYI+G/JpOfxcbO9+fogxi9QbfBZiiUCq+pGH49jLZNlTWVVnXB4xc1R+Q6TxPPecvOxcaxxrHONVZszbRqHMF4wGNsXLfF+ex0GkfjvkS34N2T/eX18dfOH+ablX1W81ke34/BmnHhvebxNeNxrHGs87fOOxaxL01F1h/V2kAnrT/mxeuXFFj3UPMBnjsdhHh9LcVr5Oe1BxXLY2uTRWPjHqJXa2VqbZ7Xym7MiIrOCWPrj0Z/C2Ce6/VHLPP5Wn/cJGyq1h6+X9YfuykP1x953ITrj+g/tv5Y9Xwmn4lBm/CZGLQJn4lBm/CZGLSJOhMzjfL6IW865Q1A3gyww4NkB6xzPmOKaxETI2Xtozx1NlXZtpfy0Eb9lIcxrofysE7qlIe2NZvYvTyt4nGa9mR/OR4ficQY1YeoebPRNwU99lumj+c6NK/pLcm+l12HPgV2GF+HHol1rtahn4rE+9g69PySuncL3VX7xDb1ksjcssiYA3H5t6xU/6jGQtw/Ph0Zc6j5dGzMYfQ/cR7HHGoPQJ2BwPG8YTPmWKxDY/m5fcbKmqaya/RWpkYYHQ95jRr9fyHJmSXkFPV/9CFbr6n6XsDbPnHpLf9411cXVXkvAM/hGp+t1aA+Jer3Y6i/JbVWY/h10qWkvLNrNXWSx+Xje/v6qsn7nYT4UR5i1klefzV53bw/wXWT/rNxZk+OLsZbI/qP0FhvQPA0KC9NvFaBed3iWdd5wpoksNCOVidpO3wfnQVnGzdDoXQFj8sNA7Er+sK2om3L8OuhLV8/27b6SR6Xj+eJA0IXVV+vBLp26/50h2IdcMQ65oh1whHL015HHLGGHLEOOWINOmJ5lvF4h+r1qCOWZ3v0rMf9jliebeiUI5ZnPXr66uOOWJ7+ddIR6wlHLE+/79SY41nGM45YDzhiPemI5Wkvz7GJp3916rjQ0+87dSy3zxHrqCOWp9936liuU/3ec2ziWY8XQp/WqWO5To2FnmM5z1joWY+e9vL0Vc/x14OOWJ06/jroiOXZtj3bkKe9PPshzzbUqbb3jF+e63IHHLE61b88x76dOsb0tL1X35F+rjthpcn6jsk52PhZ7Y3WI3ISoXO3kINnFAayZ7hXZDi9YbQtSuxDFf49e8Ovky4l5SWx+sHy8b7XJKGLOlfJdRXbp0Q5CqvmiMVnL2oCS+37JcSP9Mpe/WH4/OPxoX0H9g2dvmHvA8cf3nj44UCpRt9vzFFxK9FtzlGtW+Am9I+f80+WdwtaxJ4cRldNT47eAfDUzxs1BH8tIidpU04i5AwIPm7a6Dolmtqqok3b8OthdJmrNG3lqsouVva60KVBeWl6BOiqhF7MO+yIdcQR65Qj1qAj1qOOWMcdsYYcsU47Yp10xNrniOVZj5728vTV/Y5Ynr56wBGrU+OEZ3v0tH2n+upjjliePuHpq572OuGI5RmjPccAjzti7XPE8mxDnepfF0L8Got+yMbyeDU1vor7uQUjZU6AvG7iTUBmjehvWTjM9+yCkbITkG2fewkvCaXmNGsSwgtBz6EMv066lJR3dg7VRfK4fDyH6ha6NCgvTQ8DHed1i2cxrOOOWI85Yg05Yu13xBp0xHrcEWufI9ZRR6wjjlidWo+evurZHj31etQR64Aj1ilHLE+fOOiI5ekTJx2xPO3lGb889TrtiOVZj556dWrf4VmPnrb3bNueZTzjiPWAI9aTjlie9urUftuzbY9FX2v7ajgf6yU5au7TFZGD/DwvQr4k+9tL+tnnZiiUuhLCMz3xGeLXw+gyl5CXxOyv7MJ7isjboLw08au9Sk4i5CQCK6aX49a0qXgJ0W3IUS0RuAn94+eX0DNlCsRWvyzWK2RZipm2kcOfpoGIHOX2tgzTF3Tz4+3zss0P+S1PyUnalJMIOWxXtZyUpr3ZX/6FuLuy5SS8OaRbyEOsIqGl4pZ94dM4vGXfbmhRW/ax0NIjdGF/SNN9QMd53eJZzLe6HbGcuoIJZo8JIlPZiu2IfrWZ8vCGjR2AwambvmN5UvyfXjSMy3SsK/qY6a3aMh+LKduWkb8rB0v9cmKadkE+0tvNN23W6WpVp+wvPRWxi7bv2C1r3Pb5+FIzxNO717+9/rJdg2vLtiOjnyjo1fEes1XF22dWDoCMQLItTx0Dszx1213K/2byk4q/bL2yiP0QX8VHHnoVrYupQfczacIbaxDL6ALoVIM8JadG9D8M2y9P0Y1z3IfYs5+I0CU5f5XOqI89qwv6bkFvsvsEveXhaUq0K9KgvRCrDvlI/6as7FYnGNONvyHkY5sJOXrnnRZlrG7xzOjTcr524cgyVBy7JHazY5o4RuBflGF26hX0eOLYEtd/HzzvFlgTic/o3071gr5v/A0hH9t1yNFb3YwV81e11Zra5ycXDutcJ5yisf5DV6158aTtK35orH45fdLv/eamv/nXIyuq3JCmjrwWjQN544k03Zv9bbOv7lL9QyjOnxQZR1TsG79TdBxh+PWg+4tmKJTOzhPY37l83PfXq8n7j/SWXosneXNVtB3K4TFCt+BR4wfDSPn/16KR5ag4v/qPNn3wf/H2fprwWMVHFg7jYtnzbjjHfh3p/y/o1z8KsdFwjR/j6OQwun1wmzZ7dwla/KzGYcpuSG/1lXcDaQ+V1eg/BnP+5fM0ZtFjKUb/CbGOYJjqNkPVZow+diMc6qPeTuonPtQd+xl+puonIVrUIU33Cp3yvtcFTp4OvQJHzRvrpKual2C7sbVBdWQG281HoC4n0C+PV3w1ovQ6QUJ5WLatQMepm76jzinGu2ksHgSWsg/PRz36bns+AZ6z3G6i7SHa2G3x7cwzeHwxQehg3ydG9E8IJ3arO7c39beovonQV/Ul7cpBrG3Z3zb7vPmxNey0Hv6hQJ+nxgzc5z0Hfd7XCvZ5lsfjtjRth2cc03kchBhp4n0Li5E9gI80vVQmo/+m6NtUDDGstOz/QvbshbxYP1Ij+pmLhvn+neyJ9uJX7DiOB/jeB7ogbZruzbFBF+jxnYX5snCemVfGFKO2SNOhDkjHGFX7NTW+4rZbZHzFbRX5lAyOx3l9t/lGf4t8dXNzEM+6BH1vTnmDkF1vgTtR4Kj4Xqe8RORx7MHyYtziMQfGBYxb/xBpL0kYWa6zfi5oeyO69xGmmstNjOiu7Ifxo+oawo994Tt/9obH535trNYoXvaOk68buOoDHxwr/Pf3/8kr/ts7eu8vswZi9axePWbfUmvcadoB+Ui/muauFdcYApdHxY3Y/IzXmFn/zTn6r4f4vXbRSHlqfqLaTF7/O6GgLkZ/ZSYf53WxfYk2f8Ghpn7BAeMaj3dVvFXriUbfam5pNmmE0fGVZas9Y7Qpj2nMRj1Bz+8Nj/3hWqgD/oUVFZstTx0xUn0h71+rfceUZie1q4rj24lqHGGJ936xjOp1ed5P5tvoMQ/rktfRMak5pJU11XlXgf1kFR+4vap1ldh4UbU7w++0dme+3wij64X9ragP543nlDy0A/bV5sN5a/LYpnHOdf+iYTy0O8ZT5OV4avTHIbYPUmxHG7M/qDjBuoRQ7ByImssPCD6rlzb3iSdg/aKe+Azx1b5+lbV6NTaNrdVXHCfUuI9FeaoepgRtU7Wez3NFtd4TmyfF4olqf9w21TqC6kNi8zmTjWvmRcZNqm0hL/eTp6FtvSkybsobG4Wg5wFMH4t9qKuyfR/lqbm/fe6PyFF6xW6UUnphTEZelt2qDEX7Kqcx4gTVV2GdcBtRdondNKVuucLbxbiNqF/9Kdu39VGe6uNb9W1vyumjsBwY/3h+q9oY9n1V54cvWf7GOfP/4FUDYzX/nFCb/zPND+zZWGb+qeJKF+GiHXi9PU33ZH+L7HNX7DsLn4flvrPdfe6ifacar3NfgOssfN5LrcGo8yPnCkvNTbguK44TCo+D+MxCRd+JnllQ/ZuaX/G8Efsftn871yh0Iha2/9j4uEi9KjlqTD/We3d5v6TsIUddfaHOcrcrR50LV/uyOH/7GPWNaj0MefPWw74MY8xPLBpJY7r/PtD8D1ozwTKXaMt1NSe3pNY+2G/VONDycGzD/oFjG37HZjLogGchOKn1FKNL5TUWD+MynSW0ZZH3jPj8bkJ4vHZs9J+l+uK9+GYoltTaMZ6P/EHxhSr1fVOB+lZ1HHsfg+c2sbmpWpNTsTIvviG+ikm7CB/tEdsjU2U2Xtx7j8Uu9n2k/wruT1M8VHNaFYPteat19Nget/G2+Wu5/ezPmJQ/cztQtxNzbFPtoAF5HBOnQB7PZzCpNmJ2KBMT/z2nXzMZWBdp4jmf2nfH/tLKV/UMcQKYppOVHfXid1ewPdXoWcUztWdtp86W4HiL197OrncsHomjzsDEzr6rdxK6hVx1Jr+/JFYvYU1sAwvXLZh+YkW9FBa/W1AXWHnvCiRZ3ZzLfeaZi4fLxH3i98M+89pM/9R+cxePlHeu95kXZfLH95nP3z7zKqiD87nPfCO1qwt1n7nMOHl8n3l0vZzPfeYbc/qjVvvMG2CMgXYvu8+8B2L7Rort4/vMz6fxfebxfeYQyu8zPwRt67HIuGl8n3l0TB7fZx6m/37dZ34sp4/CclTZZ7a+738DZSujwjioBAA=",
|
|
2056
|
-
"debug_symbols": "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PH6lD34VxotBLGeTik15McjMN0fK86JCXzq4nTUv7LVcqXm1/jhTymtbQdNYPV7akTbos3xen6XM21fapeZxLW28shGldJYCHC9lW6mZrw98bStUuAx7WiXqSyE6/e9jvrYjnJxVXtsRvqn0KOkv7YhlG5C1/kqAmTPHz2tDfWUnjpxs/WF1yJ8yfffM6f2ze+alzpTXBiJP7Wn65khuAmwvDmbLycWpx/x03mduJ480n5tPnZsPKOzmON6eXXhcYRgXKeWzy625exFKeJHyKJ9fsOn7E2nbIGsO7GAOrL4YZmrlI+bP03FfCiJ8OlyeP534tSD5ntt8/h7c14Lw1v9jlPuL5+rIUj6H1s25ejfI05v/XwwycmAfd2avBbk/zfmLob03hfyLbbk7//urMDcngOfuRa/7I7MNc28CeB/i1gTwL0K8OQF874nv9vqFRR370wXlx2/U70J0VrjtT4tkfSXEyAec5flX+yshprGK21FeCSEHj2qPpzbRr2wF68CtJRRfC8Hih6O8tCOPS2pmSeZrW8EK2aU9Lwn/hRDt6X3dpzvqjyHmbkWpb7hbqXkp9LiSeG0wGrNOz60Zr47nayGqMN8rz29QTrsfQvn80lOz/6shnp5bfylEXktVMX0pRM1ppwcdL4VoWXvrD5fIX9mK/rQWvbwf4rWDyguc9flG+EtjwWtkrb52UBvrFbVqr4UofN9DXzyoPa/0W39pK9YKtkw4tZdCPC2kO56v8j+EmLvPvhXhnv55nfMPvUf7X1WWOVd9bU9YKX228VqIzrrgryVJ4fHhYyavvLgjvKF8yNshyqtbweLX5aVsf/yeMxbN3t6Kjwf1fz/+3z/+65///s9/+du//vEff/7bX//j8S//ewX7+5//+C9/+dP1//7f//zrvz79r//4//89/pd/+fuf//KXP//bP//73//2r3/6P//59z+tSOt/++24/s//svXR68dkwPjf//RbWf//rPWfHk/Jjsf/X/1/7+t/t7n+9/UPen+k9eP/9PUf/F+sZc8e/0f+93+vTf5/"
|
|
1916
|
+
"bytecode": "H4sIAAAAAAAA/6VTvU7DMBC2GwcCiKEMwJiBgZk3QImExMIEq2UiD5ZSp7IP1DLxULwCr8DAe7ATE1syp/6k7knO+az7fs6RKRni2mfOxRvIhmvDlQZptGgt53apGz436lWA5Bb6r+ulHsNIYtBE8QvfX/g8ifiyfpVknHyBfOyGf68LTLgTnvzhKUnVH+Z3mMT5yUEwEuFjL4H3sF8n0f4U6Sf6r/f1f7bBc/g3VdRfklGRH5Nhzqk/cLNf+f0LqFbB8tZaaaDqZnMB6rmVD0Y0rXySxqpOY0KK6mrNudO5/K9zJ+Fx2FVd/yQWkCNeiuoJqjNUM1QHvnwNDmO2hbu7cPcM8ZWjGBZ1mCmLvGUrOhnKoefc56NIP2Q2wsf358/Xx/3NbIrwLsL9ujl/AXPqS809BQAA",
|
|
1917
|
+
"debug_symbols": "fZLRroMgDIbfpddcUEQnvsqyGFRcSAgapic5Mbz7YJGpF+yGUtr/42/SDQbVrc9W23F6QXPfoHPaGP1szdTLRU82vG5A44EcmoIAltBU3hNIHe3ilIoNJ0kAzdIpu0BjV2MI/Emzfppes7SfuEgXqpSAskOIAThqo+LNk0NN81JEntTIaPEFIFYXBOYRtWA7QRT8ANTiAmA/PFDE5IFWVRbxY4y6TFMIKrJD8DyA83IH8JODG7voy7y+qPiuLwQ7DETAI6Sy1+6yDT6inJadUXs6rrY/VZf/OVXSNs1u6tWwOhVJp5UK5x1vhLGHj7+9AQ=="
|
|
2057
1918
|
},
|
|
2058
1919
|
{
|
|
2059
1920
|
"name": "verify_private_authwit",
|
|
@@ -3854,7 +3715,7 @@
|
|
|
3854
3715
|
}
|
|
3855
3716
|
},
|
|
3856
3717
|
"bytecode": "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",
|
|
3857
|
-
"debug_symbols": "
|
|
3718
|
+
"debug_symbols": "rZfZbuIwFIbfJde58Nm88CoVqihNK6QIUAqVRhXvPsdgJ2EkW0zoDT/ZvhyfNf5p3ru38+frbv9x+GpWLz/N27Dr+93na3/Ybk67w17P/jQm/gA3K7q0DVwPbLNCPcB4QK5ZQduQV7noyfzs62nounjDDKavOG6Gbn9qVvtz37fN96Y/X2/6Om72Vz1tBr1q2qbbv6sq8GPXd/HfpZ2eNuVHxWF62IIbHwdHjwIwWEoEMoAzBDyKAAOQEGCsnRA+PIpwwWcneMM0IYDvEFxG+JA9EYiX2IBkQyIgAxdtsDUE84gw0zLcvRGu5ojRCG/M5EsF3yF8BeGMSwjnhIuIUEaQZF8yTDag3AOg5kz0ozPJYJkBlbwCm80A8LLMDgc22+HIlBlUscO5XCLgQmUtlewMLDk7xS8igEGcqqzijUp+sodsBnuZFXt43BnB5MBCwLIzajFhHmMi8671T6FBqHlDxgRTd4Qpsjb8B0RrZYT4WbnZh7uGoMsuFTLlxcTgFcttZgcZT1Kyow7xPicIaUu2iyAABCMEglvgEUaTEYzsix6pTRQbpoqbtzCtnbulVDqpWMoJInaW6w9PRhswR9YGKc8kDLX2Y8b00FYExTQl8/RUIXh+rBA+P1eInh0sxM8PFpLnB0s9smDNGFlEKEa2kqM0prm2xCVfbyKQjRBhLOYohV/oPnWI99N3ZCBcBtE6m7WwxZY81AerkF/og8JjzWlseEkfdDrYxpIz4R6x1sPNdjfc719A9HXtddMCmnngkvqk4aao+xxUNkJS3d2grhgpKcf6UpWkcROkXHRJfdJwu5/M7ZggaeTplCflkX6skvJY30OS1MYW0F73U5w2VFcNN2UTp4cqJMWklDTy1C6WW+9km9Ql9Te7OPK0nYhJCkkxaVqvcFJJmngS7Yt5+L0Zdpu3votOjnE477fZ53p4+nPMV/Ku8jgctt37eehifGZbS/190W80hPW4wbyeCi3yetxm6hnklnjd3i6rz1jWlxj1vw==",
|
|
3858
3719
|
"verification_key": "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"
|
|
3859
3720
|
},
|
|
3860
3721
|
{
|
|
@@ -4106,7 +3967,7 @@
|
|
|
4106
3967
|
}
|
|
4107
3968
|
},
|
|
4108
3969
|
"bytecode": "H4sIAAAAAAAA/+29CZhdV3UuuE/dq1LdqlJdlWaVplOS5UmegYSQBDCeZPCEJ/AAWLYLYWNbsubBk8ACQvBLgMykQ9IJIS9ARjovvE4awiOkCaHDF/pL0oRAIJ2ETGCm5CVN4mbDXaq//vrPvuecu650wbW/T7qnzl77X2uvvfba49k7C98K7c7v7j277prZu/cV93/jvx07Z276xqusE9Xs/C7u/Mb3k2FuMNo8lApZBdq5iSrwyEL/eQyF/vNohP7zaIb+81gU+s9jOPSfx+LQfx4jof88WqH/PEZD/3mMhf7zGA/957Ek9J/HROg/j3boP4+loTqPOnwmw8nhs6w87Texny/eVeG3PPS/jFaE/vNYGfrPY1XoP4/Vof881oT+81gb+s9jKvSfx7rQfx7rQ/95bAj957Ex9J/HptB/HnnoP4/p0H8em0P/eWwJ/edxWug/j62h/zxOD/3ncUboP48zQ/95nBX6z+Ps0H8e20L/eZwT+s/j3NB/HueF/vM4P/SfxwWh/zwuDP3ncVHoP49nhP7zeGboP49nhf7z+K7Qfx7fHfrP49mh/zy+J/Sfx3NC/3l8b+g/j+8L/efx/aH/PJ4b+s/jeaH/PJ4f+s/j4tB/Hi8I/edxSeg/j0tD/3lcFvrP4/LQfx5XhP7z2B76z+PK0H8eLwz95/Gi0H8eV4X+87g69J/HNaH/PK4N/edxXeg/jxeH/vO4PlTnUYfPDeHk8LkxnBw+N4UafG4mhnFDQ9xwEDcExAX7uKAeF7zjgnRcMI4LunHBNS6IxgXLuKAYF/ziglxcLIsLWXFxKS7+xMWZuHgSFzfi4kNcHIiT93FyPU5+x8npOHlsk7vT3/gXJy/j5GKc/IuTc3HyLE5uxcmnODkUJ2/i5Eqc/IiTE3HyIA7u4+A7Do7j4DUOLuPgLw7O4uApDm7i4CMODmLnPXauY+c3dk5j5zF27p7/jX+xcxQ7L7FzERv/2DjHxjM2brHxiY1DdN7RuUbnF51TdB6xcsfKFytHNN5oWLHQbwrFwQq3YP/Nr2z61uuRTvQQJKuwHyQbIXbV0j/2mREGrJQ+fDN9TDNSL/3Nlr5VL/03zTeGH4D0KIvhNjq/PwVpf4p4Gs2ngOZTRGPy1tN3+IEe8zs5Hubm0TACyDZaD3sZ5slCg94hfiv0VPZZRnjGj/NndWMcaIxfRnFNIafFLYI40390fWcDHZftCMWZLDH8FMU1IO5tnV8rE5Srgo5+ukd7eX4f7eXib0d7aVKch70gBtuLYcTwKYobhri/pLjFEPdp4P0seH6o89yjTzrhw2u2Qd/sEjB/xDJ5LTToNwbTk+l+RNBbXAviUPcxjML7hsBaTOmM/pmd34nOL5aNpW8L/sPEX8mtbDMTWA3xzuijfs4FmQ3zEqDN7eGre//sFz/6xG9+6Jf2vfMdPzb5ySU/OXbO6KPHj39x3RfW/9STx3/e0l4KsmShdHkPW/rLFO/n/rfGra/69X/fNXbFa3/14Cf/n2v2L1m/44Ob3vCOW3//zZv+/hWvs7SXq7Sff9PbHm3/6lt+Nt/2sa8NX/FD//SKr1y56Nmf/NhDa//Ha77+90++1dJeodL+ya1f/8v3tt965NAT7zv67DOX73j3W//sS//wBx/9lfZXPvueB//sWZZ2O+S5Tj/rynrpl1r6F0L6KntyLf2L6qU/If9V9dIPWfqr4WVuD8d+4Zf+8uInPnbBX3999I1X73j80DN+8BMv+ecja9659W/ufc/6d09a2mtU2s/tu+TN+1bf/13/PPLHT1z4c+s2fOar73zv3/3L4Zln/9Pfff63pr9iaa8VaddcdMb37P6Jj6/41Jmb/+L5H3j3eT+y9qunfd+nfnv7zz357x/5n2FWZ9dBniuU2Yk8v7he+qalv75e+oalvwFe5uk0J5piS3tjPd4n0t9UnreFRZb2Zp02e+3mvT/eeiK7+oOvOfe946Mf/PuL3/6CSz720cffuKn97rdb2peItGd/X+vJd7zxkePhr975j//lX87+neefO7nx4snz/u+3/em6B/bctvZJS/tSYxQq5Xm9pb8F0pPsyWDpbw3zZS+b9rZ6vE/U79ur8z6R9mXV056oIy83sFBJ5yds5RX10rcs/R310o9a+h310o9Z+jvrpT/hG++ql36Zpb+7XvoVln4G0lfoC+SW/pX4MpQKZ1nanfV4X2DpX1Uv/YWW/h5IX2VsZenvrcf/Ykv/6nrpL7H099VLf6mlv79e+sst/QP10l9n6XfVS3+jpd9dL/0OS/9gvfR3Wfo99dLfben31ks/Y+n31Uv/Sku/v176nZb+QL30r7L0B+ulv8fSH6qX/j5Lf7he+vst/ZF66R+w9Efrpd9l6R+ql363pX+4Xvo9lv6Reun3WvpH66XfZ+kfq5d+v6U/Vi/9AUv/mnrpD1r619ZLf9jSP14v/VFLf7xe+oct/evgZR5KhRN99dertOk5hNdb2jeotOk5hB+JcydxDuiJzsRPXOpa00m6f989992z7/AVM/tu+tbTJbse2DdzaB/O4UX98Fxqi/4epb/H6G+eX7T3ap6yTLA5wyWEF8Ls3OAE8clDqbAhI7wQ9Byv4bdIlor8TszxThA/zh/O8ca4tpClTXExcF+lLfi0BR+FtdcR62FHrH2OWEcdsTzzeNgR66Aj1hFHrP2OWDOOWJ6696xDjwwo1m5HLE+b8NS9p33tccTyrNueNvGgI5anjz7miDWo7aP1t63vgH2NrODX+PA749MKPfWzslS+JgS/FP2SBP3SkvhjgN3pF186c+f+nVft2hkocFf10gIR1xPdjQnRGDejf/x+Pb1rCFoMMXurOs+d7F0+s++uV924Y+fOmbu/kcm9nIKRLil4nzIq64y3SdI8lApDZYwS8U+2UUatLus8d7R61a4dd1+yY/fe/ffN4NYZNFPmkhEqvlNlmoFk+G6U6C6hv7eLdEFg47avSXqfh1JhmVnFMhFpccsBewnFrYC4CYpbCVivBDoOnE/MTxwSv3V0FpfpWFYsq+UUtxTiVgBvLvO24GN5GxL0SwlLDfmsXLrxa4h0PGRNDavL1ETLRwizzdASIXMfPcaKQfcYlr+l9fgtTzVriGnymK4nRZxhWR0dLsCytE2i/3znt010MdxKPCaFvPgOt/38NcmOumU76UWPiGdy4TvEb4We7DJLlZvqxvXqf8voHeVhf826Rb83XIBlaZtE/7XObzvMbxPYTpYJefEd2smTJDvqlu2kph5Lb/k0/FboyS6zVLlh/thOltXj9/wyekd5VNuNusU2cLgAy9I2id66e22ii4HtZLmQF9+hnfwHyY66ZTupqcf1Ze3E8FuhJ7vMUuWm/KoqN0ur9M3TxmX1rbAedsQ66oj1oCPWXkesRwYU66Aj1hFHrP2OWDOOWIccsTztflD19RpHLE9bfdQR64AjlqfuPfO42xFrUG31cUesnY5YtrVBzb9wXwf7AlXHFohncuI7xG+FnvpWWUovamxg+VtRj99kRumRH2LyPNBKEWdYNvc6XIBlaZtE/8KOQttEFwP3iVcKefEd9okv6+BOCHl5fqCqPabmyjAd22PN8rqsrD0afiv0ZP9Zyj6UXix/K+vxu7RM+aI8putVIs6wVnf+Hi7AsrRNor+V7HEVyMT2uErIi+/QHm/K5sqOumU7qanHF5S1E8NvhZ7sMkuVG+aP7WRVPX4Xl9E7ymO6Xi3iDMu2ig0XYFnaJtHvJDtZDTKxnawW8uI7tJM7yW+hvDxfVdYftkV6oxsR6XJ7SH92+As9ludLLP3qeumXW/o19dJfaunX1kt/cSyv3VRe+Ck0r4fZtsJFYbZe4pqppW0S/f8+MptuH/kR3roYwmyZ1vzEfG1ZP2L4Xp+B86eznD+e6xkTsrQpLgbuy44JPmOCj8I67og144j1kCPWXkesI45YexyxDjpieeZxvyPWoNrXbkeshx2xHnXE8rQvT30dcsTytC/POnTUEcvTJjz9qs17j4s47geMw/sK7XLp3Ul4jAe3y3X6AePEr0gv1XYnYW+ItYKo+C4Lc3OPcQ16x7uTLqO/6+xOqrlrY8qsYkpEWtw6wG5R3HqIG6O4DYBVdXeS5afq7iQsq3UUh73s9cCby1zxsbwNCfolhDUu0lm5dOP3dK6lqpwsrdpFxfW07Kigjvdw2hBrIq4huu0FomUCN6N//H4NvWuEtHtKDRDLmEwM3AAh1o3EZ6EBWmiAToSFBigMVgPUEOl4eoinjWLI7SF9ItSyODX12Y7iJoS8ODWEeVvUJX9Nor8epsL+psMv0toUYqcWvmD/fa++fmbfnntmDsyovf/dqs7V9Pc1Ip0KZhL8AXEMI6En51TaGRp+K+hizkOpcMIZqlGKOtCumjNkg0CtICq+y0J9Z3gN/V3HGdb8BLqyMxyhOHSG7Ch7cYaWn6rOEMuKnSFWYnaGWOZjgo/lbUjQjxNWypF147fQZflWWOiyQFjosoTB6rJwukVhfq22tE2iXdYxzB5r85zdyyzjQlv/rbDQ1kNYaOvDYLX1ysvwOnU/p0qQd3KAlT4296s9epSbe/SEN0Xve14nkzbAwzrCddxaraK9Dpa2SfQXD82mu6jzHPO8tRPf8TY377jvnrt37Ju57IEH98/sn7n7ml37ZvZe/MDdlx2YeWBf5eHe5fT3FSKdCqbUmhsfxlRH1IKqZKMUxxtMMA67QTwVyx/5YRxuEmpSHDaHiygON78OUxxuRFwMzxyU4zLdxnTvKeG4RsOsPtDRmiPAj395ftacmG0GYxo2WqO/bGhWxh0dz68cATtQPuQghFmb2kCy56FUKN11MPxWmN/w1Ok6bCB+nD+fIwVQK4iK77A2cNzJ6Dpsovd5KBVyswpFb3HTgM1HCmyGuPUUtwWwqnYdLD9Vuw5YVtMUtxHiNgNvLvMNgo/lTR0psJGwNoh03HUo4tcQ6bhbmNF7nM9cJ3jzfObLwXPcPVWsh3WhWA/2txqIsb4tPoYe7fUlZT2N4bfC/LKv42k2ET/OXz1Pg5aCXG4mVKNBWgw3g2RIz2dIcumNiXQcTGNNkvkgdJpeRZ00zNcykltZO77jTi2mNzrFZ2mPfJYKPtyvieEWiptMxKkPg/nDlhh4XVN9AKA2lvNBA2sSmFMCM5bdqsYsXvx3OtApS7fWycpgK8iDafHvRUQbg90x0CTaN4JdPUR2hbWY7WpjF7lTdrUxFPNZ2iOfpYKPGlyz7WwSeVWtNZfzNMSx7WwW+VKtNWOeJjBj+SxpzKXj8o/BPP4Z8L7KILKsxzf8FslS1+OfQfw4f/yByZn1+N2UUXrkh5gmj+n6LBFnWHa32HABlqVtEv2PdzLVJroY+AOTs4S8+A4/MHnL0FzZUbdZwa/h8juuX5h3Kx/jg/7mRpDnp4fm5gX9VCPM92vW82Rf9TxYGX47+SpMz2Wn6knd/J8u8jgR5uuGP0BU9n1Ggk87kZ9+lScfuIR+FsvzXVSeZ0Kc8tF3dX6bRH8mlOevUHmquqj0zO1SVT0vE3z6rWduX85y5INYfFjjNsJiP2jlZHo+G9Jvo3TnQBzS4ahrG7w/R/BW+IbRzQbfP6TzpmwQeTWJfgnY4Adr2uBZFIdtBbaLKAfqAcvsrqDzNSzoU/n6CIw6d07NxbT0qCssC/a/Rv9HgHnvlJYT84XtAW/hVPawTeRL6fSc0J036nl7Ae/hkLbFJtF/QuiU2wVMr+oRf8R8dhfZuX5jer7TFNP16keUzN3q5Kcq1kn7KJNt918Wz6b7DNXJlI2gzDyOqKrnpYJPv/XMY4RzHPkgFrcL5xEW69nKyfR8LsSdR+nOhzikw3bhPHh/vuCt8Mu2C08O6bwV2aDxahL9X4ANfiUxLk7Z4DkUhzrldqGbP1xL9Cb3cEi3t02i//dEu6DqK/pabheM/j8S7YLxxXyl2gVli+eKfCmdnkdYWwUW6pnbBaVTzP9Wyv8J22nM5j/VLlh6NR9xG8XhfMSZFJdDHPdZpyHuLIrD+QieG9kCcezvToM4tBGej5hI5AfXFXm+D+ftNlEcHo6QUxweSjBNcThvt5ni8DCBLRQ3BXGnQV5t3o4Xs9d23ve4pie3IaXmRbOC3xDKtQe4dsxrzhsc+SDWZcRnoyOfjYn85IKPlRfWl36swRp+K8yvu3XmyaaJH+ev3soIehvWCqLiuyzMzT3GnYw12C30Pg+lwmlqltUCz2Qpj4QePac4nDGougZr+am6BotlxS0MevzTgTeX+bTgk3eehwQ9r+dOi3RWLt34NUQ6Xq/M6H3RGqxhNIn+OdBC3089FMUrB/m4l2CyF+0gyUkGo38uyLBjSmM2C/K1qQDzxY1ZfVzc0JhBYKp8baZ8sQzTJIPRXyZ6P40w3/6UjU3T37i+vblAPlVOLCvWp6L85JQfo39RopxyIYPJFcP2LjIwzeYCGa4VMgiPfsmu3Yc7Hj1Q4O9OeW2aNc9r1bnAKQqmjWiFZpFqZ8UmkW4T/d0SMsWc2xzEic9475vZN1OQd26tRgt4DgUduA9u6WKw1ieH9/3oN+Sd51bQXioPpULGlmv8OH+8f3BayNIWcVi+bEcpPrFMrd/fKdMb9u3aU1SkZTsUmRCL0wfCysS7GJ7OZlCt+8hGkMPfiIrvUprvVtoe3xBxc5KHUmGLWsC3oAbMvE2vTNcyhqrdR8tP1e5jDnGnUdw0xG0F3lzmueCDTpbppwkrF+msXLrxU91L3gbIXqGo+8jdLKPfD83x3VNz88k3pL0e4niLXh7mpo2hx4HoZFlPYvjfngPRpYRqNEiLAe+dQvrUFr0YrhTpOLAnOYve56FUOFstJ1iwOJzeZG+BU5M5xeG06+uAjoPyJJafaO27p2ZxmY5lxVq3jeLQus+hOPTE51IcDvLPozj0sudTHHrZCygOB/AXUhwu615Ecbgc/IzOM3uKH6bpwJrttZwONKyJMF/ffFa36oaprfptkX59gs/qHvmsFnzGRTr2jjX1WLqfxRuYe/1UQm1gVnpRrbClbYfiFtrszuxkZWec9s2tUTQt34cr5r+rrF5P9RXzk0IWddfb/UDHcQ3xbiiBddQR6zFHrCOOWHscsWYcsTzz6FmOnnl80BHLM4+HHbEecsQ65Ii11xHrUUesg45YnjbhWR8965CnTXjqa78j1iOOWJ663+eI5an7hx2xPPXl6Qt3O2J56mtQfaGnvjx9ztOhz+RpE57ttqfuX+OI5Wn3nro/4IjlqXvPPHr6Cc8+gKe+HnfEOt75tTkmnIfg1SQ15p9I8MH0EyWw1PxBKo9FR144nTRtIj6L6LYXiJYJ3Iz+8ftn0buGoEVsPBqozGLGVsLOQ6lwUUZ4IehpJcP3WsxQO4VzeMfTSmcJWdQXWK8GOo5riHepr7mOOmIddsR6yBHrkCPWXkesRx2xDjpiedrEEUesGUcsT5vw1Nd+RyxPfe1zxPLU12OOWJ62uscR6+lQjg87Ynnqy7Md2u2I5amvQW2HPPXl6e897cvT53jWR0+b8Owzeer+NY5YnnbvqfsDjlieuvfMo6efGNT+1+OOWDxNguNqniZRY9itCT6YfmsJrFxgpfLY52kSE/FCotteIFomcDP6x+8vpHfdpkl4V87xDjObFqm5q2jeVA9iTRDP+Mwfl1edqcP0kwk+y3vks1zwGRfpLN896nEM9Ydy4jvEb4X5ea4zvaR2ySm9qN1glpZ3g8XAh4Tlgk8u+CxgLWCdKqzUbk/+NT78LtWUlfEjdfkgFh/+lkN69r858emmN/WJMWPZNwwx3AE0fDghHloRBO9bIB7pf72TIO4C/4vORxLqiyg8fOU3m2lZMS3K2iT634XDV36rg6n0zL5RfSPCZYd8FSa3aRYXQrmyWy5kSGFhea0keiuL4QJ6w+Oy+wCUHR/yYjRF9pOTDFhGgTBiYPsx+g/VsJ8PN9Oysv2sDDr/bwf7+QjZD+o4ZT8rKQ7tJw9zMTGOd8hX7RNh+lTfiw/RVbJnYb6vTXXP26FYRz3uxD+Ll84w8JcwqAf1JcwaisMvYaYoDg8P4rYBDwzaTHHnQxzqg0OD/kYdRTP8NNg+0wXiiWXIh/DgASd8wBweaMPDwjUkK79LtaVrCrDwmAJ1EFeT6N/fuS0k1se/bc7NFx6UbTrp0daekRFeCLqfz199TNXjl/zqA/PH/Xz1LWg7zPex9wEdx5UZ6mPcQUesRxyxHnTEOuqIdcwRa68j1sMDKtceR6wZR6zHHbF2OmIdd8Ty1NcRRyzP+vioI5an3Xv6Qs9y3OeI5VmOnv7LU18POWLtdsTy1JdnHfLsT3jq65Aj1oJfPXV+1VP3r3HE8rR7T90fcMTy1L1nHj39xH5HLE99efZXX+WIdbzza3MPRefuYBzy2ZTgow6LU/N+OOfAY2mjiaHHy5AaGeGZPPgO8VskS0V+ycuQVPmkLidqizg+Xafu1oT4fBphlZ37yCh9tzw6bhkwES8iuusKRBsSuBn94/cX0buiLQOGbdUIp554+QjVmFKtWj4yOsVnZY98Vpbks7xHPstL8lndI5/VJfms75HPesGnj9Oh42Xd2KmaDrX8nVaP31jKpSAmH6C1VcSxCx4uwLK0vOx1dNG3flXTycvpZZvhCHlg0Vw6lDeHNHzGfQy4xPbIorky5BDHywPY1PIS7e8tmk13rPOslqnsazb1oR+fb493dLLt41n/FWyj9AFQht8K831bHdtfRfw4f9i8lT8ejz0pagVR8V0W5uYe4xr0jjdLTFC6OgdtrqH3eSgV1quNIhb4pgLUjVowW0lx6JmqHrRp+al60CaWFVs+tjx8vzWW+SrBx/I2JOhXE9Yqkc7KpRu/hki3nDAyeo9eZZ3g3ST6t3U8iTqnXfHCGsUbP032orO3WQajfzvIwOd/r4I0Kl/LQR7Uv/2N9en2Av7vBc/684s0/yD4c/7QVovOQF9FMhj9O0EHfKb7GpE+FLxj215DcWsStEsoL+pedrRFPv99qkveufyN/lcS5b9SyICfj2/vIgPTLCmQ4TeEDL2d/86enUuJS2KlwCkKpo0o9Hupn4KltlykK6oxmLbX898nC3gOBR34XiJLF4O1ajX7B6X7I4bfCtr75aFUyNhyjR/nj6cUVEvRFnFFtbQbnx7Pfy/qqChnwekDpc3EuxiiJduhB9Z9xSEAD9NTw48YUsN0o1N8VvbIZ2VJPst75LO8JJ/VPfJZXZLP+h75rBd8GEsNm2K4p/PbJPpPgGPnq/Jw2klhXk8yqFlCtavP6NVs3xkij+pjo7NK8EZdckN4dkVZU1e6In91Pey2irJed5JlVdfpqbPAucnhK5LzUCqUbnIMvyXyUKfJ6XYtb70hMO9vR60gKr7LwtzcY1yqZYnhcvq7zhCYL0LNQ6lwHu9TxaD2qfJlkBdAHO8nxW/bqg6BLT9Vh8BYVudTHO7hvQB4c5lvE3wsb0OC/hzCUhcIW7l045eq3Yah0sXwBpFGXRuXFfyGML/WxsAdt3Mcsc4VWGbTfDFvHkqFlWW9keG3Qk916IQ3Sl0sGwPn/XwhS1vE4WQnxiGf8wUfhTXtiLXZEWuLI9ZWJ6wYbl3AWsBawFrAKollcdhmn0tx2H6+vPOrRkRF3+qhfKk9NZh+a4LPVI98pgSf1J4Z/jU+/K5ojxDytPxg2816UxfEn5vgg+n5tqAc0uGi53cNa544ese0d3R++aL3X4PvmL5nuDiPqGfLF8s8Ajwsrsqifux7v2/DLB/sp5iMhltUf5B+R+dXtdlF3yYhRrcyuITKYCvEqTIwefjbzp+EMricyiAHuXA8UVRvcsGPbWRY0CMe28iLOjLh0omS74wCfqgPlPnuAn7XAr976bYutLu889yj3a1Udof1le2ubL+7jJ2iTpSd8ixVLrBQp0VnxQwLesRrEv2toszL2jmXq9G/rGS5OvkTWa6oKy5XNZuo2qGUHWB55Z3ndphf5kWzr4iVw7sy5ZoLfC7XVyXK1dJjuaJcXK5G/+qS5Wq67Ee55kBQplyRnstVtd9qn2g7zG8nVxGW8tGpWWVVrqlNWkZ/IFGuamY/5YeN/vAA+GHUVZlyVasfZcuV/TCW65kUp1YZ6vpotTEv5aON/rgoc+7zs18okk/pzXlBc1uBGCtE+kBpM3q3ogDLcOI7nJhnlVt2h4OeAjU8rhJvEipX1TQH3n08Xb70Qojht8J8k6gz9dit68lTj2cIWcpUpW7NYh9MNYbLC8TIRPpAWJl4h3E5yRHf4ZqomSpve+UW+hHaooomxCMF5flyoCmawSzqXRhek+h/JtEKdRutsbe+QNBjzzgPxfm/gOLUihLzwdYR9cWto9G/o2TraLz70Tqijrh1xNWwhqBnfV8k6C8EGp5VugjiUlX6AuLTzXWw/eeCjxp9q9642p5cxh6VfWFv4HyKU6M5ZQtG14+ZEswP20KqLsXAuknZDuqmHbrbCdbL84lPyi/FkLIFnF2w2bARwEY+iJkIZ1j6oXrp77T0jXrpz7V88lbHGAwby7aCzdyFOrGgugqG3yJZKvI70VVYRPw4f9xVGBaytCkuhnuBjuMa4t1QAmvGEeshR6zdjlgPO2I96oh10BHLU1+HHLE87euII9ZRRyxPm9jrhGXpveR6xBHL0yYedMTytInDjlieftWzbnvZagyD6lc9bcLTf3nWIU+b8NTXfkcsT33tccTytFVPuRba7VOnL8/+qqeP9uwDPOaI5em/BtUmPP3EoLZDnmMYzzy+1hFrwa9+Z/gvr3LMwvw5t0HR16D6nEHtF+5zxPKsj485YnmW4yD2V7Mwfw57UOzL068ecMTy9BODOs/kKZen7gfVT3j2yZ8O41rPdvvYgMrlOa71LEfP+ug5hvGc9/XE8rQJrkNZ529cJ70Fnm+DeKS3W6LUOnaFtdu7xyFNAAzErrkOfXdGeCHM7WsEwh8v4BdDS8Q1S8jyrpUfeNmlW566PaP0Jgu/KzM2UWvapqvFJHseSoU71R4S421xuD6/iOJQLyZD/D2b5BuuKV8Z/SF+W9DzV3Fly2IyzLUFtHe1J4y/ak6dSByfi04WHi6g55v/jP4XOopXX8/g7uPlBfxQvtRJxpj+rAIs3OOGBwbeWSD7L4PsfLaLOlNEHYtk9N1OHTB5UuefTIh06wv4YF6xrO8Ic/Nq9L8u8qrqH9Ydw7G4CnVnTO3hQh3xHi78irMh6Mvsdsd9oXyqNu5vO4viUMfbKA7rFe8jVXv90O54f9cmgRX18OHEjZmTJXgifZl6nQs5uG58sGS9Pr2AH8qXqteYvmq9fkWB7P9nxXp9upBvEOo1lvUdYW5ejf6Pn2b1OvUVS916nZMMuZChbL22tFEPfLvueRBnuHjo7drOc5PoP52w5/PDfFlT+u2275xvKcW9v6l952dTHO6n5f36Fwo9oFx8FpvR/y3o4WNgg5aXQHL1aOsXK1vHvcNs66k95jFwWTxD0OO+c9NJm+i5XPBvxEKd8idCpqNhQY94/A3El0S7YPKhf7uQZD+nouwbhezqoGisU092FGw2iJ9kcTt1ToInp0U/M1xAb3j8tff/J/SV8vmop3HCNPr/TPgD5T+rfuV7rsiX0ul5FIey4+llhs2YPdbPF5zqL9ut/Nthvj/k9gbrxrnER/Uxyto/2tCnhjTuogLcuzq/bF9LOwWj7EvVmzPhXdX2nNsbtK9zKU7179X3K9yPVO0uysXjQ6NfA3pItTdO9rzM+4SQqm0/f9uC7QH7Q2WzqFNub0xHw0H7GcNrEv0WKANub/A7LD7x7ayKstepb++n9uZMoCszLkLcM4ne/EVRe2N4TaI/V+grIx5YD1BP3N4Y/QUJf6DGU6n2ptt4yuRROuXxlLpFS9VPo+uxfi5X9RPzz/Wz7HmqKd+KtsvtDfrD1Bf8ZxOfMwWfsvaPNvQuam9OJ1zEQrtI2SPWm7HOM9vjJQl7TNWzGFjnyn7V/IayRx7zoOwpezS6Hu3xZmWPmH+2x1ReY6haV3ksjraaskdun08XfNSJEnzKDaaNef3pobl0E4CRdX5tTQDH/xV0XvpIAsNvkSwV+Z34znCS+HH+rOyqnc28BJ5ZK4iK77IwN/cYxytqo0R3Gf1d52zmmhc5TKkL2yxYHF43soTicDZpguI2ANYrgY4D5xPzU/VsZiyrdRSHqyXrgTeX+aTgY3kbEvTLCUtdHGbl0o1fQ6RTV8bge2wpxgXvJtHfCy3F3VPFehhP6MHC64WcXBYWH4PZa82LQCbLehrDb4WePNsJT7Oc+HH+fDyNcVlKqEaDtBiWgmRIP0p/c+ldKdJxYE+zgd7noVTYyP0mDGrOmK0ph7hJipsGrNcBHQflaSw/sTbsprWCILC4HUW5lafJKQ499TTF4UlimykO7wvZQnF4XsxpFJc6ORU9++kUh56d17kt76/reBKzDfZUeSgXuIVV5b/Qbxm0fsvV9HedfstGep+HUmETewwMymOwNU1DHPdbNgNW1X6L5aeXfktOcehxp4E3l3nVfssGwup3v0Wli3+3RJpx+tviY+ixJSp9H7rht0JP3u1Erd9A/Dh/Vj/VDIOlbYu4UXjGOOSjRvsKi2+1Wl1S5h4PY+OOymSBGEMifaC0XFV5AK/udkPny5O0JstwSJt5k+jfJSYdU+ljKGP2J7ux69XslZtImf1qIUtbxPFleRMl+TiaagxXF4ihWtFAWJl4h3HKVLE12V7AezjoESGbqtG/L7GeMCLSxxHnZ7O5vPlad0yrZM1JVqYZIVmN/v0g6w6SFU2V++T5rCjzqtQ0yY60iVC6Shm+11Gc08SP81ev/4glzVpBVHyXsuJuNecS+rtO/3ELvc9DqXCaOmvYgppRHaE4nNXOKQ53nlbtP1p+qvYfsax4lLcZ4k4H3lzm04JP3nkeEvSbCWtapLNy6cavIdKNEEZG79UOSMRoEv2fJ+a9kBePKZT3WCnkVOMH9jQ17fWlZT2N4bfC/LKv42m2ED/OXz1Pg5aCXF5CqEaDtBheApIhPXcnc/p7lUjHwTTWJJm/1CnuaH2f6zyrPcptkjsH7JTPbov0Rqf4LO2Rz1LBxyy5BeluobixMD+vFoce60aKw5WGWyluncgXz0cpzA0JzI0iLpbdgdZcummgywp+Y2iId6zTaSGrlR16AO7Cqtq2JcEH0/OcIKbrNT9KZtWvwptyvj4ymyb+UzcS5IBrXXs+fv3A6Gy6p6i+4RndJqPSM9fFqnpuCz791jPXqa2OfBDrRqCP/1L3DGM5pdb3Ld2ZEId02CPANXC1B0PhG0Y3G1za0nkrskHjxbcu3AY2uLw1N/9lbXArxWHvcjrMlTO19o9lwPkq+k6tKF9Tnbyocd+0SK9k52/YtiZkjyH1DRv3XPth88izm/1sIfvBfRXKfmwdpkn0l4L9nE72gz20fuQ/Va+xJ2ejr1S9Vv6D02EdXVFChjOEzG2RHvcOcbpebUPJ3M02nkm2ofZt5YDL37EY/blgG99NtoH+k/f2oszcB6yq56WCT7/1zP27sxz5IBa3b2r/FurZykl9n7aN0p0DcUW3cOP+L7WXUeGXbd+2t3TeimzQePHe9mVggy8iG8T0KRtM7VHlPY5qP6Iqg4zkHi6gL9r3e71o31L1FffgsS83+psAs8y+XzVaTtli1X2/Kd6o5+0FvIeDzn+Rrdye0Kn6NhXzwzo1+lckdKp0lNJpt/3CvD8V88zf5G0WWKkrppROMf+bKf9G/8pEP2yrSK/6DtMki+qHIf0aold1TPVNuI7dV7IPyX0bnFu4jeJwboH3s+B6Bo/FcK8L72fBuYWc4tReF7X6fibFqW8PcG6hSXk93Hnocd1B7peZJtlQv1nBbwjl2lNcoR8lPtOOfKYTfDY78kGsSzq/aszGy9BV5w0wfWpsONYjnzHBh7HMJ8eAfSL+vsXofxDq9cc3zMVUV7SNwbvtibxyfUYsK7NTdUXeafX4Ja/IU7csqlUk/m4A44rKFPmo3ahV5RoLs/NOnVn8S2fu3L/zql07A4Um/X1pgYjriG57gWiZwM3oH79fR+8aghaxT1bVO5V8lvXIZ5ng0++pzmXEJ4d0ONx5Bw13UlPKMdzZ+eUp5QDDnV+i4U7Klebwt/FLbcew9EVbHIpc73vA9e6g7vA45RnzyTIiZlPwjeGWAhl+g7oqNV2j7KoY1gTJE5+tqzFCf1fku0XZrAVuelAGtfg/RnFlFv/j8xTF4fCNP07BYch6isMhxAaKU59CYr2z0KC/UbfRzt5TYrPBRJhfJtMUh/WHt7BPCVwrZ+ye96OpN/wWyVKRX6bankaYn796C+NYE1griIrvsjC/xDOQDN/xoGCM0tXZglNzG26uvL0Fta2FaygOTrmmYa2vugUHPwipsgUHy2qa4nCAydtmsMzXCT6WtyFBz5+xrRPprFy68WuIdOOEUdQKxXebBO8m0X8SWrb7C1q2LOgaxa2ryV7UurIMRv/pROu6DtKofKEdoP7tb6xPtxfw/0qH/zc3kLQ0/yD4c/7QVocL5F1HMhj934pJm0aYX5+VPXKvG217A8VtSNDydkO13QttkQ/x29gl71z+Rv/PifKfEjKkNrGyDEwzUiDDl4QMoqW4ZNfuwwXbknmcxJ6dS4lLYkrgFAXTRrRYs17WDtcO9a7IAmLObdntxLDzvpl9RVuyuRVsFfAcCjqMF8gWwmyrVrN/ULo/YvitoL1fHkqFjC3X+HH+eOpBtRRtEVdUS7vx6XGXfVFHRTkLTh8obSbexRDNeXc2l07NbOXwrmj6AhtCxLir89sk+manY6FWPNTuD2xYyqzs4xCFh1vqBGO16o/Df8MORIcOzuIqmK883Qnzswhw4z+1Q0itbBt9t5XGvPOsTkjiGTmcDuBVghzicFriHRVXaHmXgNGvTNjLOaE4jzFUPX0s7zyfytPH7un88uljG0APJ+H0sYsXTh+bf/rYmVAG/Tx9LBeyq/qGdWp7YgdNmV0IiHsm0asVUqQv2oVwkdAX+7OquxCelfAHp2IXwik6fewFp/r0sbzz3I/Tx3J4l7J/tKFnkv1jez5NPM9I8OS0yKfI/vmUCKO/MmH/akcl6mkVYRr9VQn7V7pM2X+3PkKqj8R1A2XHHQ+GzZg92v9lyv4x/2z/qbzGUPUkuLzzrE50PZ3i0P+yb1V93hzepewfbWhLxR3f/NWB0b+8on2p1dSy9pV3nqvuqttCcarvyuWo2pkY7ur8ctv1ypL9LZOrR3s+5adJ8mn5qn+b8p+pHXfKf6r2kv3ng4n+Fo5JzibZt1aUPReyq/qGdWpp4muIaeK5NcGT02K9LntLh9EfTbQ3askY9cTtjdE/UnG8nmpvuo3X+UsR1Au3RSh7arxudD3WzxWqfmL+uX6m8hoD6yY1vlftDfrD0ygO6wb3ZcrO83Qb338dTsCKoZ5eD30mA1kMW81pNenXaN7SsU9cmrXfMrejffL3v/an733hRffzcn0MVkaRRSz/J0ZnZciA9idhW8WPwcKZyWCBvyRdBHG3hlmMX+5g2JTsMNDloVQ40/KyGHCtbALhWl7UFCdOJfPuNkzPE/7G9x2gm7fD58mIzbLF8ErCM9qfJ90sBrwK9VluzzAsKx+MGwZZ3zlajw5tgXf+sv8wjF9O8GoSBvoUw2PbtbLDs5PYF0ExnbADfMdbmjD9aAFW0S5Me9ck+vdCu8O7MMeEfCk7RZnGKA7n11kPio+aj1Z64K0zmM7K0Gy45hJI6TNBDb8V5ue5zpLLOPEr0ovlr+ZBSkszSo/81HmtpusJEWdYtstzuACLz441+g93jIi/QI+Bb3VUBzKpUw5jnfg9qt9qaa5MOSNuO8zPO9sjrjPhVsOPjs7NyxjENUTaKzu/TaK/dmo23f9Fvgfbai4ftk37tcBjC0tftBDN/sXoPwH+hRfDVV/kSsAcK5ChKfjGcEuBDH9ObVk/ThEdIXlM5jyUC2WWjOvJnX2prP8yfK8l426ni7H/qnfqafZkGX+A8piu2yLOsOzr0aJD+Sxtk+j/lvxXm/KEPCwO5cV36L8+S/5LHeBX13+lfHw//GQMfGoJ6hb9VrdyVXwwvdH1aGMn0rdrpQ+bLP3Sevyf5L5nDNiefJXak0mI474b+lY+VHI1tCf/Su0J+mOzmYlQbENq+3WRTw8h7SPUZwrjBVhFfWA+ndDon0r0gZUPS32JNC74ZQX8lY+1PBdhBfHO6LH/zSdUtYl2iaAdEbzyUCpMGhZ/0aZ8bI91aZnVhWUi0uLw1A8+zX0F0F8LdBx4fgRljrbyCZqvDgKL/TXKxpjK5m4nWsuzKsc20eJpmqyvWwtkMFz82uumzi/f87BpbBZ/Zed5hHhVLNvlXH4YuPxYdxxU+ZlcsfyyjbO4TMc8Uc98ggf6ZJ57UmdPR32ddYr0pebfLJwKffH8TDd9WZzld0ik4098+JSYPJQKr7D0K+ulf9DSr6qX/hDPyX0M6tv5pA+e48P6y+NmXJPk9DHwOMron9HhGW3hKrAFTm/2MELpK9r2czPCC0GPWwy/RbJU5Jexfowf54+3uq4RsrQpLoZdQMdxDfFuKIF1wBFrryPWjCOWZx4POmIdccR61BHLU/ePO2ItlGM1rOOOWJ42sccR66gjlqf/esQRy1P3nrbqqftB9V+etuppX4cdsTzL0dO+POuQp3097Ii12xHLM4+D2pfzzKNnf2JQy3EQ+3LxeZUTVgyD2s/x7GMu9Ce+M+qQp5/wlMvLvuLzSiesGB5zxPLUvWcfYC88o/5sDg7XIHi92Gj/kOaBa86VXcxzUYaB2GtrYmeEF4KehzP8ccHP5GqJuDL7R8+64Hv/6LPtn/zDjNKbLPyO95ipz9fVnF6PxwV9v9objYfHxIDzrmspDvcnmgxxvvVskq/m8QHfX0Z/iN8W9C8Duipl0RZ8Wo5YkzWxJsN8X2j1UO234DUeta4Wy/Hq8bl0aG9cN2uuhV5Ytm4avtccudq7kpojXy1kaVNcDLuAjuMa4t1QAuuAI9ZeR6wZR6wHHbEOOWLtdsQ66Ih12BHL0yb2OGHF5xVOWDE84ijXSiesGB52xHrUEcuzbj/uiOXpCz3r4xFHLM9yPO6I5WkTnrr3qtvBOY+eNnHUEWtQ/YSnXE+HPtNCm3bqdO9ZH/c5YnnlMT6vcsLylCsGr/6Edx6Pw3MWZseHah7Nxvj83dgLO2NttWevwvj2mTxeNQzEXlMTOyO8EPRY3fBT+8taIq7MPNp53/3J8//gEyP3ZpTeZOF3PI+m5lRS82g156kuUPNoPFeG82hrKA7n0UwGNY9Wc070gjL6Q3w1f8zzaL3M3bccsSZrYtk8mmofxzt/4zwa7/1dJvKD82i8//zG8Vmaa8fnYqFNFu3JjoFvc24n4iYFZuR91/jse/RX9o36tRDH+/dXinT2N75DW8c04xCP9LeDbm4h+cbhGfOJ8nF5YbqI+fLxYrplCTosl9Teb76dCedH+Tu+buUyEebbF3+HhHO4DfGO68uYyO+4SMdtB7ZlFfxNu2zbYfitMD/PdeZ5lxO/Ir302O5OZJQe+ak6YrpeLeLYbw0XYFnaJtHv7diN6qsU7aVHeVW/J9rjAx3ckQJ581AqXNbjdwkvVWuNFdJf02M/aIK/a3gMfNVhqrPY/+Crh9CXpPoibZGe1yfwezluL8aFDKo9w+8xn1oylw77TVnBr+WD36XWvMwPxV/rk3eOw75iZt8Nr9qxZ+buG2bu2jOzr0ES8EkZfHnKOpJIBZOSD4sfob/5tO02/T0pcLrxHC/ADqHnVbXpst6WV9VqXiaUXFXD/LG3nazHL88oPfJDTJPHdL1exBmWuioCsSwtXxXxZvK26ylPyGO9kBffobd9E3kSlJd7y0rvbYHbFulZR2zbMfRYXo2y9mj4rdCT/Wcp+1B6UfZhaVW5sv7LlmsKK+UPyuhP8TnJ5Tw96OVs+Vtfj19eprxRHtP1BhFnWOqaFnVlDF+R8h7yO3zNFPLYIOTFd+h3fol6eShvpMtDqTCidF0h/Xep67MqpP9uS4+XvlUpazXiwx7Sb47P4mJ/Q51YEcN1nV++7uhH1s6m+y3y+ThKK+MnejslpPxJYYbv1W9QJ6Sk+g01/cXSMu0lysMjdNZt/Gf9zuECLJ7xNfoPUf1ln4s8Uv2cGLD+vp9sqN8n03yn8RkX6bh+1bS/RWXrF/fLa9bnZL9c6UXZO+92wzjWf1k7/XbE6nf/7CTYX2n/fqrsr8f+59Iy5Y3ymK6nRBy360XjwqJrFP+B/DuvJCEPtbtbXZYa/fvfJMaF3DZVHReqE+K69YO+OK55lu0HGf0V0A/6col+UCqPqROu1JgoZTdjQnal+0mK8/RHrZJ8yuQnxedU5idVF7AMrk/INUVY67pgvZiwMP06ihtLyFz1BGBMnzppeKpHPlMl+Zys/KylOPxKhX2XKrt1CRkwPV8ezpd9ql/jw++Yj5K5m49ctWQ2DaYr8pFXdn6bRP8s8JFrO5hKz5z/VF+i5pdCpfsSfLF4r30JZRepvkTNuZ4TfYlucz2sa3U9sGHZ9btl53qM/oxOWXvP9WymVZ6TVU8mHPkg1o3Ep6g+nk/1cT3ElamPRr8B6uNFJeqj0s1YIj94mjTHpfxyqq5MJeiVrat2nG3dMGKweodXTffDrxh+K+g6kYdS4YRfyYlfUb0RlzFfPLP3wouefek3likP797HOjXcpcgU5Gf6QH9zuihbk2gmBI8Y2H7WER2Xu71n/DIydaPtFq/qzQairdovwfRjBVhFp+1a+fCJ9Zd26rk6bVfVT7Sh7Ym8TlC6iQLZY/xIwfs8lAojJq/V7dESfIt0hqfoF+nsqh50xmOuujrjPIwEPZ5PzTfyF+LoG9n/1duZmf1VWf9n+C2Rhzr+T+2MVb6/t52x2WcySo/8EJN1vU7Esf8aLsCytNx+v5z6VdwXRh5lxyPf3LF4knbPWPn0Nm+WfaZbf+lu6i9NQRz3l1AOXvMYhf7STuovpeoZtzfqN4Ry+sP2iMecalymxrZcZ5oCMwY+idbod3fy3uMuc3mjB57WwOWC/ntPhTGpKlOj//qa2XT7E2XK/QAs09Q4LuWf2gl65V/UmmJq7NPbGLK8Lzf8VtB+KA/lGFre1RhQ+aqqfVnD/QxkCOXv1pfldKovu7SAR1HdY7uaovfd+rJKpiLaqn1ZnOfkuQC0xZR9qraJTwiv2Q/Mue43gp6XYN23QcYy/UbeH8D4PG+Nt3so3dwI8Uj/A9DPvLaz8UOVxbIC+UIoVxbqS49+rw/yzt0xRz6IZbpVe0nivzyUCp9Va5UV0v+sunGmQvqz1M0EFdL/turHV0j/W6ptr5D+mNr/VCH9y9Q8TIX0Z44QfcX0z7D00/XSf97Sb66Xfrul31Iv/fss/Wn10r/Z0m+tl/5rlv70eunfaunPqJf+SUt/Zr30maXHG++rtE2W/px66Rsm7zZ8KWQyfPOrZwF9Fb+KvFqEVVH2LCU7ysd+fBvwwzwWYW2riDUi4uqUydmhOF+IP56QheWMYSfQ9ZLnGPY4YcXn1U5YMTzsKNeEE1YMr3KUq+2ItdQRa5kTVgwPOMq13BFrrSPW1IBirXTE2uCItckRK3fEmnbE2uyEFcNrHeXa4oQVw0OOcp3mhBXDqx3l8mo74vNWR6zTHbHOcMRqDCiW9e8nBDbPWTUEn0aCT2o9pQE4ak7IvtvheYgY8lAmZF33gfwLzYGn9q6izLx39d0wB/5vNAeO6W0+R+l6rPOsvujmkybwi26ex+Zbtk2upxJyIR7rqyHecTkreZqUj1dPzMrS7DyPAE/kn4dS4RxVvoalbjSvMFY5B2Wy0KB3iO91MrGqY0r3lvdFQpY2xcVwP9BxXEO8G0pgHXXEeswR64gj1h5HrBlHrIOOWJ76OuaItdsR65AjlqfuB9W+Djti7XXEemRAsTxtdb8jlqfuPe1rnyPWw45Ynm2aZx3y1P2jTljxeZUTlnceH3fE2umIddwJy9J7yTWofRNPX+jZz/H0E57+a1D7hVaO42Gu7QZ47nGsNoT1AeXEd4jfCvPrkddYDWWoM1aLz7xnSfFRY8KM0neTayzMzmF09n9dOnPn/p1X7doZKPDRZpcWiLiN6LYXiJYJ3Iz+8ftt9E5lDbGjSt+8epZPfG/TEQ/QFERN05NbMA1LTfPwVEvVKbVxwYexcNuUOuDP8syf8eahVLjS0o/WS/8ctW2tQvqre9yadEOPW5Ou6HFr0lVlPh+oefDpNWVdoeF7fT6gDqBNfTq2SsjSFnFso6sEn1WCT1vEHXHEOuaItdsR65Aj1kFHrD2OWDOOWIcdsfY6Yj0yoFietrrfEctL96pdGxRb9ayPjzpiDWp9fMwRy7MODaruDzhiefqJY45Ynj7aU/ee+hpU+/Lsm3iWo6funw5+4nEnrPg85oi13BFrYgCxYrjXUa62I5an7lcMqFwrnbBieMARy9MmVjthxXCfo1xe5egtl6etDqIvjGGXI5aXrcbgVY7ecg2ivrxtdakjlqeP9vRfxx2xPPtf+xyxPOcUPPvknmMFz7lH7t/b3DWua+H6DR8BYvTndjpfI2G+DVeYf78udcRMj8eLXJcRXgh6LYGPHFHH+LREXJkLPy/6wqE3P//7zvp6RulNFn7HS6Hq2J7UsUY1j4u0Ox7n6AePhowBbWSK4nD512RQF37WPBrk6jL6Q/y2oL8d6KqUhcLaXhPLLunEz9Ss7pyq9dZF8IxHyNnaa5Pon9Gp++o4NHWUMtx/Oe8IOZRpktKpKyVi4DXGGPKgw1MUDM90vljwQp+ItM+BfF+/ca6svN5pz82C/CwjORmjSDe83o95P+1P//vif/3lH2r+xp8/uevg185+6x9e8cT/8a7ve8vHzn3uYzf89Y994WrO+1BCdpWvVQX5ahTkq4xuJgQ223zV9m5cyDwu0nE7U/My4omy7Qy3JTXbzOSRd0ovPbajS8r63pNx5N31nTrYJroYbiUeVY68u7o9V/Z+HXln5dNjv2lJt0/DXtqexUXdmq/HtCgHH3n3U/Bp2G0dTPUJFpcvtzvYnsTA7SdfFss03BYZ/R3gk3dMzcVcIvKc8jNrgAfzjeGWAhlmqC9c04/IvVisV9QD98ljeGHnd5xkZFz8DSFtx+qyey9/Veaye+yfXA80XH5Tgv7GBL06LhrrE/dV0J+tL8BC3tsTvDd24c3HxuJn+hsLsJD3dQneeRfefEUFftZvaXs8Xun6Ho9XurnH45Wu5cvsb+9MjkcdHibfaWObojr3os6v6WsYZFpD8g1DuoZ4x20Hph8GOVCuX1s2K/ujFWW/qgDzg+1ZzNeQf8soT3koFW6y9EP10r/afBrvuUXZeItyHkqFNZgnC6oPZ/gtkqWuT1Rb0zF/vO9wWMjSFnFcRlXtDuOOOGGpsh8EuWI46oj1GkcszzzOOGIddsR6xBFrvyOWp74edcR6rSPWQ45Yex2xPHV/0BFrjyOWZx4fd8Ta6Yhla1BlPp/CtqFCW1r68ykez2T1+J1ou4eIH+eP2+5FQhb1+RTP0yo+qo+QUfpucjl+PmWQq4lue4FomcDN6B+/X03vVNYQGz+f4iJAOjO/YcLOQ6mwoaz5GX4r6CLPQ6mQpaql+qrR8r5YyNKmuBh4a89iwWex4KOwHnbEOuqI9aAj1l5HrEcGFOugI9YRR6z9jlgzjlgPOWJ51iHPcjzmiLXbEetRRyzPuu1pX55yeZajp1yefsLTJjzL8bAjlqe/N796sqY0q/ZpUnlUSwqOXV0TcT3R3ZgQjXEz+sfv19O7oq6uBVZ7fObdE6xOVrcq6l5n64YEr3GRzvJlXfHFJHseSoXXZYRncuI7xG+F+Xmu0xVXZqj0og65tLRtEcdfjy8RfJYIPm0Rd8QR65gj1m5HrEOOWAcdsfY4Ys04Yj3kiPWwI5an7gfVVh91xNrriOVpX55yeZajp1yeftXTJjzL8bAjlqfuHxlQLE8/sd8Ry0v38XnUCSsGT1sd1P6EJ9ZCH2ChD9BPv7rQB1joAyz0ARb6AN2wPPU1qLb6mCOWp74G1U8ccMTyrEPHHLEGta0d1L6JZx49+9Ge5eip+6eDn3jcEesBJ6z4nDtiec3fx+dpJ6wY7nXE2uWEFZ+XO2KtGFC5vMrRW67VTlgxeNqEZzmOOWJNOGK1HbG89BWDp19d6oQVg5f/8vbRg1qHPP3ESics7zx6+oncEctT954+x1Ou3BFr2hHLK48x3Ocol6ePvt9RLk9f6Glfnm2HZzl61kdP/+WlL+9y9GwfjztieY5r9zliea6Bec51eM7BeO6NsnkTPjXmvM5myB73F77B9u+14GUW5mKP1sTOCC900uM7xB8X/Eyulogrc1rdV6665n2v/4sv/F1G6U0WfjcE+PHfmKBX+yBNV+gbKujquDqtDi8gjwG/zB+lONwDazKo0+rGaspXRn+I3xb0fFpd2bJQWNtrYtlpddgvsLpzsvYLnyw+KSx1gp3Rmz6GBT3iNYn+2R2fFP/eOTWXn/pUL4h3Q0Qfww2d33ERx74Ky7WCfTfL+ir2RzX97ol91i3ix/mzck35RlU/+OSwXupaP7D62O4sqtrutEJPtpOl9IL547IcE7K0KS4G1r9qk8YEn28XLKz/qW8pypSr4oP+cDHxWezIB31Bi/i0HPkg1o3EZ9SRD2LZSXHcj4ghD6XC9/bYR1pteVwtIvl0OGVTePIc2wGe1Mhlh6ekcV8VT01De+bQoL9RD1GWmzbO4jKdhQnBp0x/NVUHh4T8ljeUGU9ifGBS88RTCdG+sP+K9D8Bp3w9OFmcx6J9uU0hewx8qqHRH6AxE851VLBDeaqhYfXYzx4oGy9rx5bXyO9NNe2Y+8ZLRD4sbkLkQ/l6Hougf15Ccdj2T1Ac+sHbgA4xY1Bjez5xcTiRL5RvqASf1KevQ4JPH/vPS8q0MYh/svvPPfYpx7Mw3xbU+Jfr1ZiIYz82HNJjafZjP9FxQJ59suiD3zo5V/Z+9FmwfHqcuxrv1k79DLVToxCn2imTg28mfx20Uz9H7RSm5/LluoRtYQxFcxjDgKtOXGX5fhHG3XxisMrz4oTMaHMhzLd5bluN/l3UtvJpyXkoF1TbalgTQddhlL/q2BTTc98O6wn7yZr5K32yl+G3wnw/UsdPjhO/Ij8Q39lpqp1jBa7atePuS3bs3rv/vpkhhA7ze2aoFUTFd1mYm3uMa9A7pruC/t4u0gWBHeN77PVV7pmxNWHPjHvaeA79K4GOg+p9WX5irX7r6Cwu07GsWFZrKA57X2uBN5e54mN5GxL0SwhrXKSzcunGryHSsWcYEelye/iTW7/+l+9tv/XIoSfed/TZZy7f8e63/tmX/uEPPvor7a989j0P/tl3scxByFy0cmHx6tdk53c8OzTuiDUhsEw3uFOrQn1YXtaTGX4r9FT/TniyNvHj/HHelwpZ2iKO/dNSwWep4KOwFjlhxXDrAtYC1gLWAtYpwOIZEPS1Foft1HWdX+upp86AVefEL0rIh+mNrswhqDXbm9J3IBm+1yGoE8SvSC89tt9LUu0pYpo8qj3l3WI2ehsuwLK0TaJvdoYcnnYddfYUzWioflCZckbcdpifdyufk233OL7CmY/xZZpn0V1JPPNh9Adh5qO9bK7MauYjFOgAbSgEnacRkCGE6vU15uF9G2b5YL4sD4bLMquZEbtXSc1gNSgObYFnW4vKaIrKqAFxqoz4PiujvwPKaEPnWd1nVebeRcWPbWi4gL5B8hn95o5MuCtEyTdawE/N1sVwVwG/04HfvR1+yu7QjxoO5iUPpcJyZXdYn9nu1Ex+6kDIbnbKtoh2yjuBhgQW6pRnJC39cND13vCaRH+hKPMydh4Dl6vRP7NkuTr5E1muqCsuV7XLCunLrOioHWFq9apJWE2BhTrlcu1Wlw2P69bzEuWK7W5DyMXlavQvKFmu9tyPckVdcbmq9hrpy+zcQ0yTW61YjlAc+kTmo/w36rtMmas7srnMrxFlzn1/9gvd2pcQ5s442478zozzDft27ZnpTDkHCqkp4vi8pECMZSJ9SGBhmpT7xEn0orshhoOermT3afQ3CZWn3G8MypQtPzZUqFllSi9aGH4r6O5BHkqFrKxb46m+VDVLdclPganGcEWBGJlIH7pg2d94RUiZ27dT3k2pynoXRS0H3s6H9DOJlqPsGr7RqxEy9nqMXuV/guIw3WgBH2zRUF/cohn9fSVbNOPdjxYNdcQtWtkZdKNXI24c1fOtfUspHxinZpLKVkNzr+zqMK0aWan8NnrIL9sX6ncpxRXNpIQw1xaMrh+jYMwP24K63V7Nphi9ug0d1+y514pNKNsJlj+vxHTrdaVsAUeOPBOi9gekRkBqbyPaMI/Kjf6NwgcY5pIueSvj77CbY/KofXXs79S3scoeja5He1xyqn0T+x+0M94fqPYA8sgP9Y17jJR+Wdaq3wFietzzirL/L2BnH98wl1+3fblFtvuzJ9F2TZ6U7S7sG58NqIey+8bZHgy3yPcpm0dbeoBm1ftwe/FpGeGZzPgO8Qf59uIYHgA6jmuId0MJrIcdsTxvCX7QEcvz5lXP23g9sTxvcT3iiDWoNw573uy72xHLsz563qrsaV+e+jrkiOVpX4N6+7qnTQzqjdaedduzPnrWoWOOWJ718elgX4cdsTz7AHwtIfaX+VrCqjtHMH2ZVa3UDdwqj32+ltBE3EJ0NyZEY9yM/vH7LfSuIWgxWDHhMINVpVYtlGrVML9oYReH8DjUe3Hnt4+3gb81I7wQ9FDM8Af5NvAszP/kaVBudD3miOV5+/AhRyzP25r3OGLNOGIt3JR96mz16XBTtqfPOeqI9XTQveft1p559Lwp2xPLs27vd8Ty0n18HnXCisHTVge1D+CJNajttqfuPfsAnj7asz8xqLa60G6fujZtoU9eDeuYI9ZCn7wa1kK/8NTZ1yD2C2Pw1Neg2upjjlie+vL0OZ66P+CI5VmHjjliDaqPHtQ2zTOPnn1fz3L01P3TwU887oj1gCPWvU5Y8Tl3wophl6NcnutDnvpa6oi1whFrtSPWZiesGDxtYrkjlpfuY/Cq25710bMOxedpJ6wYvOpjDN/p9hWfxxyxJhyx2o5Yg1ofvfx9DJ7tkGfd9mo7YhjU+rjSCcs7j55+InfE8tS9p8/xlCt3xJp2xPLKYwz3Ocrl6aPvd5TL0xd62pdn2+FZjp710dN/eY6tPMvRs3087ojlOdexzxHLcz3Nc/7Lc17Oc99j0VZ23IeMe5f5+H+jv7RTGXu80uFH+3gt3I9mhBc66fEd4o8Lfr1eR/rH133irr/4tZ/blFF6k4XfDQF+/Kc+4U0dDlrzk+m3DPh1pG8poz/Ebwt6z+tIX1wTq8x1pP3+1sDqsn3KfmWnLkc57EiBky2LfR5/zQDI0vnCPtwwALLYUQQvFbIYv25Hp5itKtlTB9lyvqp+jjQk+PTxu5XRsv7+2+G7lRj4IORe2v0FrAWsIiw+2sLw1a/x4XfMRx2T0e36rsMrZtNguqIDgV/R+eUDLK9cOZvuoQ6mOhoOZVR+IAv62zuu98OAizR8fZfRHwNfztd3DVOeMZ8sI5ZnU+QrBu6/G/3rqP9e8xpAeX0XH4uDNse+vibf0idUnqrrB6tdq8WWiFpBVHyXhbm5x7gGvWO6y+jvOtdq1ezJ52YVit7ipgGbD2faDHGLKW4LYL0S6DhwPjE/EbPKtVpYVtMUhyOTzcCby7wl+FjehgT9KGGp0YSVSzd+jVDcKzEMlS6G14s0nq1JP67Z6sMlf5NlvdGpuuRPXfNmadsiDg8ywzjkkzrIDrE2OGJtcsRqOmJNOmHFcOsC1gLW0xhLjSBSs3ov7/yq2Y0GyVd1ZgbTG12ZQxBr+vWxsu2I4XsdgqhmmVOHIKprPNsUFwPbh2qvxgWfBawFrFOFleonlqmfig/6A6tXJ9tf4RgSZ13+cYXmWXRdD8+6GP1zYNblCyvmyoxy4cyo0gGvOqk89XhI9Vgc61S5wknZFdLf0fllu8K8K1soe73bv1EZNSBOldEdnV++Z2QLlNHXaWYMZ+v5hAMcL6f4sQ0NC3rEYxvKOvLF8kldHTZcwK9opvDKAn6LgN9JuDpsUtkd1udeD21LrRZ3s0W+igh1zGOlIcEH9V3mKiKlX57JnRT2wH1Ato0i+ZTenK8iahWIsVSkDwksTJPKEk48lrmKCKd4WOVGv0aoPFVkMSxcRfRtdxXRZQViZCJ96IJlf3e7iohblZSKlarMWxW1Krx2bvRnCpMu4zFDmO9ZUjNuKE/qKiZ19cFwAZ+iy/W4RTP680u2aMa7Hy0a6ohbNDVDoHroRt/tOgmuanz5M8ahjqtcjhpD2auIuKem7KWRyG9KP8q+sNyWUJwapStbsHf96FVjftgWUmUbA+umLeixvHk0hN8MsZ1g3eMbBMterqlsAXui/1iwno24aAu8vrwYsFRvjq9zMfqrhQ8wzFaXvLHO1b427Obw/iHsYvA1RSg7rhYZNmP2aI+jyh4x/2yPqbzGUKa3zXtVY1A2t5ji1OpcWbtJXeOCeyhsf4Wqm9aGW3dtkvKRh1JhfUZ4JjO+Q/xWmF8H63TX1LVmypdY3pcJWdoUFwN/36euQ1sm+Cishx2xjjpiPeiItdcR65EBxTroiHXEEWu/I9aMI9ZDjliedcizHI85Yu12xHrUEcuzbnval2cd8vSrTwfdH3bE8vTRfM0G9mf4mg3Vd5hM8MH0kyWwUmMalcc+X7NhIq4juhsTojFuRv/4/Tp61xC0GNRtmmWmDlKbC9QnSSfr1s4+drFfmxGeyYnvEH+Qu9hZmD/cGZSm4JgjlmeTfsgRy7MLtMcRa6H7+Z1hqwvdz2pYC93Palie3c+nw9SFZ932nG7w0n18HnXCisHTVge1D+CJtdBuL7Tb3y5tx0K7vdBuL7Tb35m6H1RbfcwRy1Nfnj7HU/cHHLE869AxR6xB9dGD2p/wzKNn39ezHD11/3TwE487Ynlt+YjPuSOW1zx5fJ52worhXkesXU5Y8Xm5I9YKR6zVjlibnbBieDrofswRa8IRq+2I5aWvGDx94VInrBi8fI63X/Wq2zEMan1c6YTlnUdPP5E7Ynnq3tPneMqVO2JNO2J55TGG+xzl8vTR9zvK5ekLPe3Ls+3wLEfP+ujpv7z05V2Onu3jcUcsz7HoPkcsz7Umz/kJz3mTPY5YNtfBxyf/XudbqR6PnTyeOpCux8N/jmeEFzrp8R3ijwt+Jpc6YK7McfW/s/WSN/zcS3/kuozSmyz8bgjw0R8ivdojaLrCcU8FXb1GfTZmvNVx9fz5I+4NNRnUcfUTNeUroz/Ebwt6Pq6+bFkorOtrYtlx9epKhIkwvy6xPajPDVsJmYcEHz6u/sOduqyOZT9Zsthx9R8dAFnsuPqPn0JZ+niNR+lD0dj31fTxJ/Y7l/0cNOWHVV3kQ6t6qdcLWAtYJwPL8yDedihuU/gT5hjwIKwvrZpNg+mKDn66o/PbJPrXr5lN99UOZpkjS9inZGHuEQ/czlp6PCIeafiIeKP/N/DlfET8KOUZ88kyYnmq63ti4CPijf4/qc9c83BkeUQ8H4WiPptP+eHUNT2q/HrMQ1710HI+2G0zxPFB2Vsgjg80Pw3iMorbCnEbKO50iFN10UKD/kYdRVk+vW4Wl+kC8cQynKY4bBs3U1wfroI5p4xPQvxBvwqG56wG5cq8RxyxHnTEOuqIdcwRy/OKwYcHVK49jlie104+7oi10xFrUK/pPOKI5VkfH3XE8rR7T184qNetevocT5s47IjlqfvdAyrXQ45Ynjbh2Tc55ojlWY6D6r887cuzPg6qj/bE8rSv/Y5Ypnsbp6tLqDKKQz7DCT6YfrggXXzG+SgeNxlNDD2O8UufNMyXOC2uxy95iZMqn6qXOPGRsmXHplXlcjyaxkTcRnTbC0TLBG5G//j9NnrXELSIrU6v5CmqqjfjYvrUDbyjPfIZFXz6OO0yXrYKnapplx5vqx8r41JRHnVfDldLq7JFB7XzFLHRv7Gzl6Yd5lfXuveiRJ0dXz2XrujewG53Vjyxeq4MiyGuQWnRzfNptm9ZPZvuh+HZThqPNq6WObmOVl3mbIh8Kz6jPfJRyyCMpXQWwz2dX17eeFtHN1GHRScADxVg8hKGOg5LTb8bfbcTu1mXWDcmSvBGXXK70K4o61JBj1tS+NgwlG9pRVmvO8mytoSs44I3+37MVz+6T4bfEnmo4/tTevmmYJ3fajfy8pngqBVExXdZmJt7jGvQO6a7nP6ucyPvMnqfh1Kh8uIWH3K3GeLaFLcFsKreyGv5iV6syo28WFbTFIeLkZuBN5f5UsHH8jYk6CcJa6lIZ+XSjV+qdhuGShfDG0Sa1GGEZWptDDwImXTEWiawzKZx83EFm15Z1hsZfiv0VIdOeKPlxI/zx3lfIWRpizj2MSsEnxWCj8Ja54i1wRFrkyPWuBNWDLcuYC1gLWAtYJXEUpNxyygO20++wVjdHplRHMqXuuEU048n+Czqkc8iwUfdB5UV/Boffsd8lMyWH267MT9VPyrB9MsoPzj7c2PnN8ryn6s1Txy9Y9o7Or9Noj8EmxOzNcV5RD1bvljmHu/QGY/y8h062Mdhu1H1B+l3dH5Vm80boLCsDaNbGYytmSuPukdtsZCH71HbAWUwQWWAs3N8/nu3SfMdRG/lVHb2z+iXd2SKtHxTKqZfUsAP9YEy313AbzXwS90rZ7x7tLuVyu6wvrLdle13l7FT1ImyU56lUrPBqFOepbL0w4Ie8ZpEv1mUeVk753I1+q0ly9XJn8hyTd0XqGYTVTuUsgMsL9NJO8wv86LZV8RCnZYp18UCn8v1gkS5qllzlIvL1eifUbJcne7+k+WKuipTrmpxMdV+Y7maTtRHx3x7sfLRqVllVa5oK+yjjf65iXJVM/spP2z0Fw+AH07doafKNXWHXrdyZT+M5co3VqtVhro+Wq3KpXy00V8typz7/OwXiuRTenO+sXppgRgrRPqQwMI0qSzhxDyr3LI7HPQUKKvc6G8UKlfVFOVZ2EdSfh9J1WaxD6Yaw+UFYmQifeiClVGcMlVc4Und+Iot9BN0+zWaEI8UlOdTPX+jt+pV1LswvCbRvzLRCnUbrbG3XinosdqbPCr/KykO0y0p4IOtI+qLW0ejv79k62i8+9E6oo64dVwFcQ1Bz/peLehXAQ3PKuHxKqkqzUd4dXMdbP/KTtXoW/XGG4n8dhuVsX2p43MmRLrUTInR9WOmBPPDtpCqSzGwblK2g7pph+52gvWyzLFDZW0BZxd4Nkw1G2gLRUdUqJEP5o8/W/1B4QMMU+3RQD/f614WdbRHas+Qskej+3a/jd3y1CZ61JPaA8VtQTe7Sd1+jaMs/nR8SuCqNt/o1wFWgzDis93a2CT6n0nY43ohQ2p2Y4OgXw80Js8EyYBpJ0Q6OyZJ2aPR9WiPE8oeMT9sjxshriHoWTebBP1GoOEZflxtXkdxayGOP61GvlMg+0vbc+lwZ0ZW8Guy8juWFbH4SIZljnwQ6xbig/UdZ9zfS23+WohTwzgrEz6i6+Mw4/7faMYd03M/1+L+O9Sz/7GxOL3pcoL+Vv4c+xd8dLDKJ9KvKcjnB0DOj0F9CEHv7Omx3rVVvVsLBFzvlF9E+jI+Cf0i9z1wx0ibsFSbgjbJPtl0NBx0GRhek+g/mpilwXZ6Lck+VlH2smNISxvL4l86DeBEmO+LeOfOWsFTlVVbpF9bgKX2BbMvxXJsCN6K3myiGeb7c+TFx339OZTVhzdqzFAgQ7tA5uEC+imSweg/lRhDKz+A9r+eMI3+M4Bpx3WVxZwswPxcoq+h6ile01ymPcXy4r4G6nETxaHs3C5uAP5MO0H8MQ7tnPmGhLzcpnaTl9sbi/s3aK/+ufM8QngVfXUjVVZnCXnLllU7kT/GsnTNMN8eU3UE9fHVNRpzUUXMfxVtuuqr3Ab4/1bQH4mB+yMxsF9Gn4H18L3UJ0H5l5L8ZrdPlZyPMqze2vrsr1Rbj+O6Mm090rNPWCfo0ZZS7Q2PB7H+8Yq6GouWbUsnIK97lnTPL+LeGXR+i/wwl7vRT3QKtOyYL6VzzzGf8p/KHo2uH/aI+Wd7TOU1hqptVN0x33riU3auoNsY8W7q2yEfrgPdyr1IF8MF9OzXjX4z2Cr3bXIhQ+r432lBnwuZJ8L88pimOEy3roAP1kvU15Vhbl6N/ixRL5X9553nHsdek8r+UUds/5shriHoWd9bBD1+jWM6aRM96l756mmKQ9vkuqH8Wdm6YWmjHs4nX122DcgElpqPZF9t9N+T8NWqDqbsv5s/4jlh1CX3QTGdlY2yVaPrh61ifthWc4hrCPq6vqFN9KgnZavGs1tfYFWJvkCqbMv2faz8cL13HcWpsVxKrikhl9pVMpXgM9EjnwnBZ1ykywp+jQ+/Yz5KZtW34fyo8llXMj/rKD/rHPOjZO42p3rb2tk0Rb4N03J7Z/T7186me3nnWc2Jst2UtV3eGrIOdKB89nWQ/xD60ecMi051n5P7ldjHKTNniLaHbafRBJKxH/rC+sz6SvnBGMqMX7BOmA7U/PAkxaG9TREfr/nXL453l38ykd+qczFl+wDocw07hO+sPgDbwjTEcR8gNYel+qTKX3IZo3/FcuE1K6M/nug7KjtI2U0u6DFfJo+yjZziUPZU39HJhwy03fAYSPUdy9pNaq4Q22hrv1P9XHtWZY30jQKcTYTDdjcK7zEd9zctLgC9sjsui+ECesPjsfdPJ+YZprvIwF+Zb+4iwzTJYPQ/K2RI6T8GdTpG1vkdIfyK9aaZEZ7Jg+8QvxW0feShVMhYf8ZP2UEMfIoHpk3NKWQUh3y2CD4Ka8wRC/uWPZTXFtYHBos7DbBzitsK9NdT3OkQdwtgcGjQ35ifaNcf2TiLy3QsK5bXaYDPNjYt0k4L7FNVH6br8UvWB/ZJMVStDzk8L9SH+afxDFp9yCHO5FY6CqG0jkrVFyybCvqfLltfDN+rvijbU/XF8ndaPX55nLMdDfN9Fc7doO6Qz2aSodfy470FiH2yy6/m/oJk+an+t2f55YBRpfzUehDPo+Rhfn5ykR+1F9noUv28MuWk+ORCZjXHiHN/n6O5v80Qp+aIeO7P6L8Mc39/Q3N/OAbKw9w4tC28lovzbHQ9jh0bauyYAwGPHacxcSgua9Yf0qP/4zJDP8FzeTj/lBMfNS82BO9S80+4z+A3x7X8GeBuFGm5biP9ZiGH0VudwyvKkMbSNon+X2EsxVeUKZtFuXg+xej/PTGfYnxDCKXWRrcKevQvJs9EmK/nrRRX1Kc37BDm9xksfxZXpV1QdQLzw3UC+0oNQc+6OUPQ45VhbPdnQNxmwuL6FcOVAisl66YeZOVyxLI6g7CMFu0S88N2afTjHVvstm/AdN6P8sc2u0z5q7FAWZ3ymAb1eBrF5RC3hfgo31u0vsG2gj7kc9R+pU7tUN8cqm9alU83Oit/mytbD+XPe3UnQU7l968swNwkbCqVh9QpCt2+mzR6tb63IpEO56tHBK/cHp5KB8Oz7xUXC16Gy9/0ngF6un6jliVjeboEdZJVRvnEbyur9HkzwgtB9+kNvxXm66JOn159T6rs3vK3qh6/TdinRzvCPj3qDvlYealvl7APfCHVB1XHUt95GP13T82me2YBZgjV+2soz1dH5+J6f1Nv+VR1t8w39RNhfpnw2QKrID8NQc97p4z+eVA3U98y+Xxvn31JtYv4XTS3i6nv52Pgslgj6PGbetNJm+i5XIrsC8ua++HqfIeVAp/Pd3ghlAF/y4Tf0q4i2ccryq6+w+J6zHWD67G6ijp18tISwGoIjDs7v3wKzw2JtrXbvkK2iW7fOZs8E2G+znmtX51spOqL0fVjXRbzw/Wl7Fn6KTtR31OqvWpLKA7tkedKsI+G5wJ8tON7+SyY+Bt1lod0WPc7Mx9/3qf+4VN8RXWAvI72gP8DFzUn/8stV2/vF/7HF//jVz/64Z0/3C/8/3fkusuG/rc3beoX/k989ZpnvXbNli92w492/ATcAID2g+msb8PnEOShVBhF+S2ovpvht8L8Ol+n71b27AW178DS8txmDLcCXZEvU/V7AWsBqwoWfisYw49Dv/uNdDot1iM+6yMTsmQJWTh9DFZH8E44PstgkciDxQ0n4hYn4kYSca1EnDr7xOKwr3MjxY0LzJivt3cmUXgcG0MeSoUvmjw4LjDfFgjXdK/62mo8pcYjqwlrTRes6wgL068hrLVdsK4nLEzP38h3+w7sxYSlvnE1rG7rBXwqPKa3tDweO68TEcvrHSAspuGyjOF1hGe0/7WDYbaEe8EqtHOB23fE4nN7mA5/Q5jfHsfAfgGxXk581N7+HvM3VkZOxG+RLHX7DWq/ovrmgc/bwbS87zoGbiPUHmh1Fs8C1gLWqcJS33r06keK9lGjz40B5y7/kOYb1DfkmPaOzi/73tXgyz9GfSj0G7wvHGXm/pHyF+sT+V8i+PRbz/24tawtsG4E+vhPnTeGvvSOzq/af7+R0hXtXW4EvYbf7ZuRjYTRzQY/PaXzpmwQeTWJ/uvQj/8s2SCmZxtE++R56KKb7IrsE8vsDqJX5/kom+XvNj4v5kwzSq++BYmB1/OM/h8Tc47Kv6XmHFNn3yl9Y5753KUhgYX54TlXpVN17gDr9MuJeeiGSD8OPC1uJcXhPM5qisM5kDUUh3OQaylOfS+r5rFXURyuz3FboNZdov386LrZ993qYQx3dH65Hj6VsC3lO1LnOuWCfpPI90SYb085xaW+T8ohjtuh6c7fqIcc5HpF55e/IVncyVi39SanvWmjp/r8hrzzrPZwcz1XPiOHd1zP1XkhucDn80KWQRlwPUc/MU2yL6ko+yohO7d7XKc+negncVuzIcGT0yKf4VCtDV0v9JURj7LnmBj9JsC8t6Ctx3yl2ppu56byGULq+znVJ8L+omEzZj/OOMb8c/1M5TWGur5S7YXiPXTqe1K2A+RT1v7Rhv5wai5dv/rOLy+QBzFGgq6DeSgVSs+pGH4rzNdNnTmVbmXB/Rc1RuQyj4HHvFXHYgtYC1gnG6vf56FwHxvnbXE8ey31o9V+JUx7R+eX58c/BHMq13ee1Xi2zHkwPc4Zl15rXpgzXsBawDp187z98H0xlJl/VHMDgzT/WOSvD5aY91DjAR47/Vfw10fIX2N6nntQvjw1N1nWN95B9GquTM3N81zZsYpjwtT8o9E/nhgT9nv+EfN8quYffzAxL7FEpB/0+ccGxeH8I/ebcP4R7cfmH9WemNsIg8fKGDcMcXyGHd7/xPs2RyBuKcXhnsFJisM9MXz7Op6DwLeC4x7SFaCHt5MesMybhIFzEYsTeR2lOKxDiygOdTtCcaijMYpDHzdMcVgmLYpTt9PaNxvd/HEMd3R+2R+/O+FjVBuS2mufC3r+rj0Gz3noMucI5yBX0Tz0exfmoU/Enap56PfXnIdeV1H2hpBd1U+sUwcTY8syfQ7EXUX0qn1UfSFuHz+S6HOo8XSqz2H0f3QK+xxqDeAUnX83dqrvNrM8tcN8f8hz1Op+ALYD5FPW/tGGbL6m7ncBP/qhc7d/8cX/vLHOdwG4D9fS2VwNylOhfH8P5beg5moMv0WyVOR3Yq5G3X2I+eNvOkfr8ftARumRH2K2iN9YPX4NXp/gson/rJ85XCCLpeU7V75Mfb1xkYa/OYqB5yowriHeDZ0iLHWHKeoRv4/6PO0FZx3noVS4iPvlhoHYNW3hJWXrluG3Qk+2fqJuqW8RMX88ThwXsqjyuhfoei37RwcUa68j1mFHrIccsTz1ddAR64gj1n5HrBlHLM88Hh1QuR50xPKsj57luMcRy7MOPeKI5VmOnrZ6zBHL074edsR6rSOWp90Pqs/xzOPjjlg7HbGOO2J56suzb+JpX4PaL/S0+0Hty+12xDrkiPV06MsNqt179k0W2rRqWIPalxtUX+jZl/P0hZ7l6KmvQe1/vcoRa1D7X/scsTzrtmcd8tSXZzvkWYcGVfee/stzXm5Q54Y87cuz7zuofcxBbDvic8sJKwZrOyYKsPFZrY22EnwyIXND8ME9CuOdd7hWZDgjYb4uKqxDlb7ryPBbJEtFflmqfNS9x5b3JUIWta+Syyq1Tol8FFbTEYv3XjQFllr3yyg90it9jYXZ/Y/7991z3z37Dl86c+f+nVft2hkoNOnvSwtEvJnori8QrSFwM/rH72+mdw1Bi9gTYX7RDBfIHQAP33ExYfpmgk/WI59M8BkX6bhqo+lUqGpnla3aht8K8/Ncp2orU1V6sby3hCxtiothF9DVcb0Yd8AR66Aj1iOOWDOOWA86Yh11xDriiPWoI9bDjli7HbE8y9FTX562uscRy9NW9zpiDaqf8KyPnrofVFt9zBHL0yY8bdVTXw85Ynn6aM8+wDFHLM+2w7MODap9PR38Vz/aIevL49HU+CnucrquahHENShtBjybRP/4htl0q+hThwx42/MI4WWh0pjmnIzwQtBjKMNvkSwV+Z0YQw0RP84fj6EaQpY2xcVwP9BxXEO8S2EddcR6zBHriCPWHkesGUesY45Yux2xDjliHXTEGtRy9LRVz/roKdeDjlh7HbEeccTytIl9jlieNvGwI5anvjz9l6dcjzpieZajp1yD2nZ4lqOn7j3rtmceH3fE2umIddwR6+nQbnvW7X60tbauhuOxEeKjxj5DCT6YnsdFmC7r/I6QfPach1JhKCM8kxPfIX4rzM9zBX5ZSv9KL7ymiGnbFBcDf9qr+GSCTyawUnI5Lk2biNuIbnuBaJnAzegfv99G75QqEFvdLDYieFlIqbZdkD6G8QQfZfY2DTMadPXj5fOq1Q/TW5zik/XIJxN8WK9qOimGezq/fEPcE50pJDw5pCH4IVYZ11Jzyb70bhxesu/Vtagl+5RrGRaysD3E8DKg47iGeJeyrYYjllNTsMj0sUhEKl2xHtGurqc4PGHjFsDg0KC/MT8R/yMbZ3GZjmVFGzO5VV3mbTFV6zKmHyrAUjcnxnAbxCO9nXzTY5mercqU7WW4JnbZ+p06ZY3rPm9fykM6/K+XvK31/bftOK9qPTL6xYJebe8xXdU8febMceARiLfFqW1gFqdOu4vpzyb5FteUr4z+EF/5R+56lS2LyaDbmRjwxBrEMroAMjUhTvFpEv3vwvLL++nEOW5D7N0fJeiygl8lM8pj71qCviHojfeooLc43E2JekUa1BditSAe6T/ayTvfpI7p24I/1plQIHfRblHGaoh3Rh/z+aENc/NQs++S9XID928+65znLHnp6Y/164bvJb//29d+9n/uPr3OSV5qa2ZZey1q92K4vfPbY5sypPxYKJ8+K9Pe1fThT5Vt7wy/FbRfy0OpcKI/O0L8OH/cRrXq8fvPeJqsnWhaNKZC3SEfbssaIo1q5wwjpj9v09x81BwH/GePNvgfvAwdAy7//x0t/y+GOJ5K4j4g0v8TtD//AL7VcC296QvHvItFvP1t+h4StPis+gtKb0hv5VV0UuYw5dXovwxj0x1TGrPs9gmj/5oY7xqmOnVP1RmjT51chvKor2jGKB3Kjm06v1PlkxEtyhDD7UKmor9bAqdIhhGBo8Y3LZJV9Z+x3qROt8R683dQltZmjQj+/RzPZhSHebsZ6DioMSv2NT9BfcYgsJR+eNzk0Xbb+0Xwnvk2iHaYaPnrH5Sxl/4w9y8WCRns78UJ+TPCSZ0+zvVN/ZaVNxPyqrakVz6I9ZLOb49t3rrUXGssh/UbZ3GL2jzVZ+A2b3rjbLpNnedubZ7Fcb8thpfCO/bp3A9CjBh4ft185DDgI80I5cnoT+/kA9s25UMMK+b9TNLnCMSl2pEm0V8O+txG+kR98adg7McD/D0KsiBtDLcX6OAZIMcFG4t54Ti1KI8R41kbNR3KgHSMUbddU/0rrrtl+ldcVzGd4sH+uKjtNtsY6xKvThgO4t2QoB8pyG8QvFtdcBcLHOXfWxSXiTj2PZhf9Fvc50C/gH5rfaK+ZGFuvkYpXyOJfGUiHddzlH1xQnalP/QfdecQXv+5p/78TUfXfqFfcxTf//aDPzD+rF/99X7hv2fsT17wu28feXmVORArZ/WJLNuWmouN4RaIR/rbOuXR4xxD4Pwov5Ean/FcKMt/fYH8+8B/v4LqhRqfqDpT1P4uKimL0d8N7em90J6GoMcPPd400FQ3DaBf4/6u8rfqEwOj7za2NJ20w3z/yrzV2ibqlPs0pqPhoMf3hsf2sAvKgG8CUb7Z4tRWGNUW8jqrWh+LND9I9apm/3ax6kdY4DVKzKP6rJvXPfnUdIzDsuT5fgxqDGl5jTK/qcS6p/IPXF/VvEqqv6jqneEPWr0z22+H+eXC9lbWhov6c4of6gHbarPhojl5rNM45vohGiMMQ5ya02J/avS/CL79LeTbUcdsD8pPsCwhlNuvoMby4yKdlUuP65mLsHxRTnyH+Gr9uc5cveqbpubqa/YTmtzGIj9VDkuD1qmaz+exoprvSY2TUv5E1T+um2oeQbUhqfGc8cY58zL9JlW3MC23k78MdesDiX5TUd8oBD0OYPqU70NZle5HKU6N/e15LMFHyZU6+UjJhT4Z0zLvbnko21Y59REXqbYKy4TriNJL6kQkdRoTnoLFdUTdTlO1bRulONXGd2vbPlDQRmE+0P/x+FbVMWz76o4Pv3frf1mz7iMPjvdr/Lmoue4n81+946oq40/lV4YIF/XA8+0x3ND5LbPOXbPtLL1vk9vOXte5y7adqr/ObQHOs/C+JDUHo24AO1lYamzCZVmzn1C6H8R7FmraTnLPgmrf1PiKx43Y/rD+e/ncfxCxsP6n+sdlylXxUX36fq/dFd3468FHHdGg9hz3ykftX1brsjh++zK1jWo+DNMWzYdNbZpN97WNc2lM9n+FfugQ7aPBPFeoyy01Jreg5j7YblU/0OKwb8P2gX0b/hZkAmTAvRAc1HyK0UV+z980i8t0FlCXZb6H4X2mGeHx3LHRL6by4rX4PJQLau7YsL6TbKFOeR8sUd6qjFPfDfDYJjU2VXNyylcW+TfEVz7pNsJHfaTWyFSeLS2uvad8F9s+0m8A37Vt01wZ1ZhW+WB7320ePbXGbWl7vNV1jO0Zg7JnrgfqFF32baoetCGOfeJSiOPxDAZVR0wPVXwil6Pq62C7xmM+te6O7aXlr+4e4gwwTSbLO8rF31hgfWrSu5p7ak/oTu0twf4Wz70Z/fM2zcVRe2DUeMPo1d75huCrvrMYq4g1QliLe8DCeQumX1xTLoU1TFjqGwzVb49ld1GnbE7mOvPl1FeoOS48ZevMr4D24IXUtzrZ68zXdvgvrDOfunXmW6EMTuU68wGqV0/XdeYq/eSFdeb55XIq15kPFLRH3daZj1B/ru4685vBtz9Mvn1hnflbYWGdeWGdOYTq68w/CnXrXYl+08I683yfvLDOPEv/7brO/K6CNgrzUWed2dq+/x+pyeBEvtQEAA==",
|
|
4109
|
-
"debug_symbols": "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"
|
|
3970
|
+
"debug_symbols": "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"
|
|
4110
3971
|
},
|
|
4111
3972
|
{
|
|
4112
3973
|
"name": "public_dispatch",
|
|
@@ -4407,17 +4268,13 @@
|
|
|
4407
4268
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/macros/aztec.nr",
|
|
4408
4269
|
"source": "use crate::macros::{\n calls_generation::{\n external_functions::{\n generate_external_function_calls, generate_external_function_self_calls_structs,\n },\n internal_functions::generate_call_internal_struct,\n },\n dispatch::generate_public_dispatch,\n internals_functions_generation::{create_fn_abi_exports, process_functions},\n notes::NOTES,\n storage::STORAGE_LAYOUT_NAME,\n utils::{\n get_trait_impl_method, is_fn_contract_library_method, is_fn_external, is_fn_internal,\n is_fn_test, module_has_storage,\n },\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n // Functions that don't have #[external(...)], #[contract_library_method], or #[test] are not allowed in contracts.\n check_each_fn_macroified(m);\n\n // We generate new functions prefixed with `__aztec_nr_internals__` and we replace the original functions' bodies\n // with `static_assert(false, ...)` to prevent them from being called directly from within the contract.\n let functions = process_functions(m);\n\n // We generate structs and their implementations necessary for convenient functions calls.\n let interface = generate_contract_interface(m);\n let self_call_structs = generate_external_function_self_calls_structs(m);\n let call_internal_struct = generate_call_internal_struct(m);\n\n // We generate ABI exports for all the external functions in the contract.\n let fn_abi_exports = create_fn_abi_exports(m);\n\n // We generate `_compute_note_hash_and_nullifier`, `sync_private_state` and `process_message`\n // functions only if they are not already implemented. If they are implemented we just insert empty\n // quotes.\n let contract_library_method_compute_note_hash_and_nullifier = if !m.functions().any(|f| {\n f.name() == quote { _compute_note_hash_and_nullifier }\n }) {\n generate_contract_library_method_compute_note_hash_and_nullifier()\n } else {\n quote {}\n };\n let sync_private_state_fn_and_abi_export = if !m.functions().any(|f| {\n f.name() == quote { sync_private_state }\n }) {\n generate_sync_private_state()\n } else {\n quote {}\n };\n\n let process_message_fn_and_abi_export = if !m.functions().any(|f| {\n f.name() == quote { process_message }\n }) {\n generate_process_message()\n } else {\n quote {}\n };\n let public_dispatch = generate_public_dispatch(m);\n\n quote {\n $interface\n $self_call_structs\n $call_internal_struct\n $functions\n $fn_abi_exports\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state_fn_and_abi_export\n $process_message_fn_and_abi_export\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let calls = generate_external_function_calls(m);\n\n let module_name = m.name();\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $calls\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n if NOTES.len() > 0 {\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..NOTES.len() {\n let typ = NOTES.get(i);\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret its raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = <$typ as $crate::protocol_types::traits::Packable>::N;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, owner, storage_slot, randomness);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullification = aztec::note::utils::compute_note_hash_for_nullification(\n aztec::note::retrieved_note::RetrievedNote{ \n note,\n contract_address,\n owner,\n randomness,\n storage_slot,\n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, owner, note_hash_for_nullification);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_message` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec<Field, aztec::messages::logs::note::MAX_NOTE_PACKED_LEN>,\n owner: aztec::protocol_types::address::AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n randomness: Field,\n note_nonce: Field,\n ) -> Option<aztec::messages::discovery::NoteHashAndNullifier> {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec<Field, aztec::messages::logs::note::MAX_NOTE_PACKED_LEN>,\n _owner: aztec::protocol_types::address::AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _randomness: Field,\n _nonce: Field,\n ) -> Option<aztec::messages::discovery::NoteHashAndNullifier> {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n quote {\n pub struct sync_private_state_parameters {}\n\n #[abi(functions)]\n pub struct sync_private_state_abi {\n parameters: sync_private_state_parameters,\n }\n\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_utility]\n unconstrained fn sync_private_state() {\n let address = aztec::context::utility_context::UtilityContext::new().this_address();\n \n aztec::messages::discovery::discover_new_messages(address, _compute_note_hash_and_nullifier);\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n quote {\n pub struct process_message_parameters {\n pub message_ciphertext: BoundedVec<Field, aztec::messages::encoding::MESSAGE_CIPHERTEXT_LEN>,\n pub message_context: aztec::messages::processing::message_context::MessageContext,\n }\n\n #[abi(functions)]\n pub struct process_message_abi {\n parameters: process_message_parameters,\n }\n\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec<Field, aztec::messages::encoding::MESSAGE_CIPHERTEXT_LEN>,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n let address = aztec::context::utility_context::UtilityContext::new().this_address();\n\n aztec::messages::discovery::discover_new_messages(address, _compute_note_hash_and_nullifier); \n aztec::messages::discovery::process_message::process_message_ciphertext(\n address,\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n\n/// Checks if each function in the module is marked with either #[external(...)], #[contract_library_method], or #[test].\n/// Non-macroified functions are not allowed in contracts.\ncomptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_external(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_internal(f)\n & !is_fn_test(f) {\n // We don't suggest that #[contract_library_method] is allowed because we don't want to introduce another\n // concept\n panic(\n f\"Function {name} must be marked as either #[external(...)], #[internal(...)], or #[test]\",\n );\n }\n }\n}\n"
|
|
4409
4270
|
},
|
|
4410
|
-
"112": {
|
|
4411
|
-
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/external/helpers.nr",
|
|
4412
|
-
"source": "use crate::macros::{\n functions::auth_registry::AUTHORIZE_ONCE_REGISTRY,\n utils::{is_fn_initializer, is_fn_only_self, is_fn_view},\n};\nuse std::meta::ctstring::AsCtString;\n\n/// Gathers all attributes relevant to the function's ABI and returns a quote that can be applied to the newly generated\n/// function. We apply the abi marker attributes instead of the original ones (e.g. abi_view instead of view) to avoid\n/// the relevant attribute's functionality from getting triggered.\npub(crate) comptime fn get_abi_relevant_attributes(f: FunctionDefinition) -> Quoted {\n let mut attributes = quote {};\n\n if is_fn_view(f) {\n attributes = quote { $attributes #[aztec::macros::internals_functions_generation::abi_attributes::abi_view] };\n }\n\n if is_fn_only_self(f) {\n attributes = quote { $attributes #[aztec::macros::internals_functions_generation::abi_attributes::abi_only_self] };\n }\n\n if is_fn_initializer(f) {\n attributes = quote { $attributes #[aztec::macros::internals_functions_generation::abi_attributes::abi_initializer] };\n }\n\n attributes\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n self.address,\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Injects an authwit verification check of the form:\n/// ```\n/// if (!from.eq(context.msg_sender().unwrap())) {\n/// assert_current_call_valid_authwit::<N>(&mut context, from);\n/// } else {\n/// assert(authwit_nonce, \"Invalid authwit nonce. When 'from' and 'msg_sender' are the same, authwit_nonce must be zero\");\n/// }\n/// ```\n/// where `from` and `authwit_nonce` are the names of the parameters that are expected to be present in the function definition.\n/// This check is injected by the `#[authorize_once(\"from_arg_name\", \"nonce_arg_name\")]`, which allows the user to define\n/// which parameters to use.\n///\n/// # Arguments\n/// * `f` - The function definition to inject the authwit verification check into. The function must have parameters\n/// matching the names specified in the `#[authorize_once]` attribute.\n/// * `is_private` - Whether the function is a private function (`true`) or a public function (`false`). This determines\n/// which authwit verification method to use: `assert_current_call_valid_authwit` for private functions\n/// or `assert_current_call_valid_authwit_public` for public functions.\npub(crate) comptime fn create_authorize_once_check(\n f: FunctionDefinition,\n is_private: bool,\n) -> Quoted {\n let maybe_authorize_once_args = AUTHORIZE_ONCE_REGISTRY.get(f);\n let authorize_once_args = if maybe_authorize_once_args.is_some() {\n maybe_authorize_once_args.unwrap()\n } else {\n // We need to for authorize_once to have already executed so that we can retrieve its params - this depends on\n // the order in which the attributes are applied.\n panic(\n f\"Functions marked with #[authorize_once] must have the #[external(\\\"private\\\")] or #[external(\\\"public\\\")] attribute placed last\",\n )\n };\n\n let (from_arg_name, nonce_arg_name) = authorize_once_args;\n let name: Quoted = f.name();\n\n let from_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{from_arg_name}\".quoted_contents());\n let (from_arg_name_quoted, from_arg_type) = if from_arg_candidates.len() == 1 {\n from_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {from_arg_name} parameter. Please specify which one to use in #[authorize_once(\\\"...\\\", \\\"authwit_nonce\\\")]\",\n )\n };\n if from_arg_type\n != quote { dep::protocol_types::address::aztec_address::AztecAddress }.as_type() {\n panic(\n f\"Argument {from_arg_name_quoted} in function {name} must be of type AztecAddress, but is of type {from_arg_type}\",\n )\n }\n\n let nonce_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{nonce_arg_name}\".quoted_contents());\n let (nonce_arg_name_quoted, nonce_arg_type) = if nonce_arg_candidates.len() == 1 {\n nonce_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {nonce_arg_name}. Please specify which one to use in #[authorize_once(\\\"from\\\", \\\"...\\\")]\",\n )\n };\n if nonce_arg_type != quote { Field }.as_type() {\n panic(\n f\"Argument {nonce_arg_name_quoted} in function {name} must be of type Field, but is of type {nonce_arg_type}\",\n );\n }\n\n let nonce_check_quote = f\"{nonce_arg_name_quoted} == 0\".quoted_contents();\n\n let fn_call = if is_private {\n let args_len = f.parameters().len();\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit::<$args_len> }\n } else {\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit_public }\n };\n let invalid_nonce_message = f\"Invalid authwit nonce. When '{from_arg_name}' and 'msg_sender' are the same, '{nonce_arg_name}' must be zero\"\n .as_ctstring()\n .as_quoted_str();\n quote { \n if (!$from_arg_name_quoted.eq(self.msg_sender().unwrap())) {\n $fn_call(self.context, $from_arg_name_quoted);\n } else {\n assert($nonce_check_quote, $invalid_nonce_message);\n }\n }\n}\n"
|
|
4413
|
-
},
|
|
4414
4271
|
"114": {
|
|
4415
4272
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/external/private.nr",
|
|
4416
|
-
"source": "use crate::macros::{\n internals_functions_generation::external::helpers::{\n create_authorize_once_check,
|
|
4273
|
+
"source": "use crate::macros::{\n internals_functions_generation::external::helpers::{\n create_authorize_once_check, get_abi_relevant_attributes,\n },\n utils::{\n fn_has_authorize_once, fn_has_noinitcheck, fn_has_nophasecheck, is_fn_initializer,\n is_fn_only_self, is_fn_view, module_has_initializer, module_has_storage,\n },\n};\nuse protocol_types::meta::utils::derive_serialization_quotes;\nuse std::meta::{ctstring::AsCtString, type_of};\n\npub(crate) comptime fn generate_private_external(f: FunctionDefinition) -> Quoted {\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n\n let original_params_quotes = original_params\n .map(|(param_name, param_type)| quote { $param_name: $param_type })\n .join(quote {, });\n\n let params = quote { inputs: aztec::context::inputs::private_context_inputs::PrivateContextInputs, $original_params_quotes };\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n let (args_serialization, _, serialized_args_name) =\n derive_serialization_quotes(original_params, false);\n\n let storage_init = if module_has_storage {\n // Contract has Storage defined so we initialize it.\n quote {\n let storage = Storage::init(&mut context);\n }\n } else {\n // Contract does not have Storage defined, so we set storage to the unit type `()`. ContractSelf requires a\n // storage struct in its constructor. Using an Option type would lead to worse developer experience and higher\n // constraint counts so we use the unit type `()` instead.\n quote {\n let storage = ();\n }\n };\n\n let contract_self_creation = quote {\n #[allow(unused_variables)]\n let mut self = {\n $args_serialization\n let args_hash = aztec::hash::hash_args($serialized_args_name);\n let mut context = aztec::context::private_context::PrivateContext::new(inputs, args_hash);\n $storage_init\n let self_address = context.this_address();\n let call_self: CallSelf<&mut aztec::context::private_context::PrivateContext> = CallSelf { address: self_address, context: &mut context };\n let enqueue_self: EnqueueSelf<&mut aztec::context::private_context::PrivateContext> = EnqueueSelf { address: self_address, context: &mut context };\n let call_self_static: CallSelfStatic<&mut aztec::context::private_context::PrivateContext> = CallSelfStatic { address: self_address, context: &mut context };\n let enqueue_self_static: EnqueueSelfStatic<&mut aztec::context::private_context::PrivateContext> = EnqueueSelfStatic { address: self_address, context: &mut context };\n let internal: CallInternal<&mut aztec::context::private_context::PrivateContext> = CallInternal { context: &mut context };\n aztec::contract_self::ContractSelf::new_private(&mut context, storage, call_self, enqueue_self, call_self_static, enqueue_self_static, internal)\n };\n };\n\n let original_function_name = f.name();\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_only_self(f) {\n let assertion_message =\n f\"Function {original_function_name} can only be called by the same contract\";\n quote { assert(self.msg_sender().unwrap() == self.address, $assertion_message); }\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n let assertion_message = f\"Function {original_function_name} can only be called statically\"\n .as_ctstring()\n .as_quoted_str();\n quote { assert(self.context.inputs.call_context.is_static_call, $assertion_message); }\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (\n quote { aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_private(*self.context); },\n quote { aztec::macros::functions::initialization_utils::mark_as_initialized_private(self.context); },\n )\n } else {\n (quote {}, quote {})\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n quote { aztec::macros::functions::initialization_utils::assert_is_initialized_private(self.context); }\n } else {\n quote {}\n };\n\n // Phase checks are skipped in functions that request to manually handle phases\n let initial_phase_store = if fn_has_nophasecheck(f) {\n quote {}\n } else {\n quote { let within_revertible_phase: bool = self.context.in_revertible_phase(); }\n };\n\n let no_phase_change_check = if fn_has_nophasecheck(f) {\n quote {}\n } else {\n quote { \n assert_eq(\n within_revertible_phase,\n self.context.in_revertible_phase(),\n f\"Phase change detected on function with phase check. If this is expected, use #[nophasecheck]\",\n ); \n }\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f, true)\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is serialized and hashed before being passed to the context.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n\n let (return_serialization, _, serialized_return_name) =\n derive_serialization_quotes([(return_value_var_name, return_value_type)], false);\n\n body = body_without_return;\n\n quote {\n $return_value_assignment\n $return_serialization\n self.context.set_return_hash($serialized_return_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { self.context.finish() };\n\n // Preserve all attributes that are relevant to the function's ABI.\n let abi_relevant_attributes = get_abi_relevant_attributes(f);\n\n let fn_name = f\"__aztec_nr_internals__{original_function_name}\".quoted_contents();\n\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $contract_self_creation\n $initial_phase_store\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $authorize_once_check\n };\n\n let body_quote = body.map(|expr| expr.quoted()).join(quote { });\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $no_phase_change_check\n $context_finish\n };\n\n quote {\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_private]\n $abi_relevant_attributes\n fn $fn_name($params) -> return_data aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs {\n $to_prepend\n $body_quote\n $to_append\n }\n }\n}\n"
|
|
4417
4274
|
},
|
|
4418
4275
|
"116": {
|
|
4419
4276
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/macros/internals_functions_generation/external/utility.nr",
|
|
4420
|
-
"source": "use crate::macros::
|
|
4277
|
+
"source": "use crate::macros::utils::module_has_storage;\n\npub(crate) comptime fn generate_utility_external(f: FunctionDefinition) -> Quoted {\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage(f.module()) {\n quote {\n let storage = Storage::init(context);\n }\n } else {\n // Contract does not have Storage defined, so we set storage to the unit type `()`. ContractSelf requires a\n // storage struct in its constructor. Using an Option type would lead to worse developer experience and higher\n // constraint counts so we use the unit type `()` instead.\n quote {\n let storage = ();\n }\n };\n\n // Create utility context\n let contract_self_creation = quote {\n #[allow(unused_variables)]\n let mut self = {\n let context = dep::aztec::context::utility_context::UtilityContext::new();\n $storage_init\n aztec::contract_self::ContractSelf::new_utility(context, storage)\n };\n };\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $contract_self_creation\n };\n\n let original_function_name = f.name();\n let fn_name = f\"__aztec_nr_internals__{original_function_name}\".quoted_contents();\n let body = f.body();\n let params = f\n .parameters()\n .map(|(param_name, param_type)| quote { $param_name: $param_type })\n .join(quote {, });\n let return_type = f.return_type();\n\n quote {\n #[aztec::macros::internals_functions_generation::abi_attributes::abi_utility]\n unconstrained fn $fn_name($params) -> pub $return_type {\n $to_prepend\n $body\n }\n }\n}\n"
|
|
4421
4278
|
},
|
|
4422
4279
|
"125": {
|
|
4423
4280
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr",
|
|
@@ -4537,9 +4394,9 @@
|
|
|
4537
4394
|
},
|
|
4538
4395
|
"244": {
|
|
4539
4396
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
4540
|
-
"source": "use protocol_types::{point::Point, utils::field::sqrt};\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
|
|
4397
|
+
"source": "use protocol_types::{point::Point, utils::field::sqrt};\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/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\npub fn get_sign_of_point(p: Point) -> bool {\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 field's modulus 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 !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\n/// Returns a `Point` in the Grumpkin curve given its x coordinate.\n///\n/// Because not all values in the field are valid x coordinates of points in the curve (i.e. there\n/// is no corresponding y value in the field that satisfies the curve equation), it may not be\n/// possible to reconstruct a `Point`. `Option::none()` is returned in such cases.\npub fn point_from_x_coord(x: Field) -> Option<Point> {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n sqrt(rhs).map(|y| Point { x, y, is_infinite: false })\n}\n\n/// Returns a `Point` in the Grumpkin curve given its x coordinate and sign for the y coordinate.\n///\n/// Because not all values in the field are valid x coordinates of points in the curve (i.e. there\n/// is no corresponding y value in the field that satisfies the curve equation), it may not be\n/// possible to reconstruct a `Point`. `Option::none()` is returned in such cases.\n///\n/// @param x - The x coordinate of the point\n/// @param sign - The \"sign\" of the y coordinate - determines whether y <= (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Option<Point> {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n\n sqrt(rhs).map(|y| {\n // If there is a square root, we need to ensure it has the correct \"sign\"\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n Point { x, y: final_y, is_infinite: false }\n })\n}\n\nmod test {\n use crate::utils::point::{\n BN254_FR_MODULUS_DIV_2, get_sign_of_point, point_from_x_coord, point_from_x_coord_and_sign,\n };\n use dep::protocol_types::point::Point;\n use dep::protocol_types::utils::field::pow;\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign).unwrap();\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2).unwrap();\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_valid() {\n // x = 8 is a known quadratic residue - should give a valid point\n let result = point_from_x_coord(Field::from(8));\n assert(result.is_some());\n\n let point = result.unwrap();\n assert_eq(point.x, Field::from(8));\n // Check curve equation y^2 = x^3 - 17\n assert_eq(pow(point.y, 2), pow(point.x, 3) - 17);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_invalid() {\n // x = 3 is a non-residue for this curve - should give None\n let x = Field::from(3);\n let maybe_point = point_from_x_coord(x);\n assert(maybe_point.is_none());\n }\n\n #[test]\n unconstrained fn test_both_roots_satisfy_curve() {\n // Derive a point from x = 8 (known to be valid from test_point_from_x_coord_valid)\n let x: Field = 8;\n let point = point_from_x_coord(x).unwrap();\n\n // Check y satisfies curve equation\n assert_eq(point.y * point.y, x * x * x - 17);\n\n // Check -y also satisfies curve equation\n let neg_y = 0 - point.y;\n assert_eq(neg_y * neg_y, x * x * x - 17);\n\n // Verify they are different (unless y = 0)\n assert(point.y != neg_y);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign_invalid() {\n // x = 3 has no valid point on the curve (from test_point_from_x_coord_invalid)\n let x = Field::from(3);\n let result_positive = point_from_x_coord_and_sign(x, true);\n let result_negative = point_from_x_coord_and_sign(x, false);\n\n assert(result_positive.is_none());\n assert(result_negative.is_none());\n }\n\n #[test]\n unconstrained fn test_get_sign_of_point() {\n // Derive a point from x = 8, then test both possible y values\n let point = point_from_x_coord(8).unwrap();\n let neg_point = Point { x: point.x, y: 0 - point.y, is_infinite: false };\n\n // One should be \"positive\" (y <= MOD_DIV_2) and one \"negative\"\n let sign1 = get_sign_of_point(point);\n let sign2 = get_sign_of_point(neg_point);\n assert(sign1 != sign2);\n\n // y = 0 should return true (0 <= MOD_DIV_2)\n let zero_y_point = Point { x: 0, y: 0, is_infinite: false };\n assert(get_sign_of_point(zero_y_point) == true);\n\n // y = MOD_DIV_2 should return true (exactly at boundary)\n let boundary_point = Point { x: 0, y: BN254_FR_MODULUS_DIV_2, is_infinite: false };\n assert(get_sign_of_point(boundary_point) == true);\n\n // y = MOD_DIV_2 + 1 should return false (just over boundary)\n let over_boundary_point = Point { x: 0, y: BN254_FR_MODULUS_DIV_2 + 1, is_infinite: false };\n assert(get_sign_of_point(over_boundary_point) == false);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_zero() {\n // x = 0: y^2 = 0^3 - 17 = -17, which is not a quadratic residue in BN254 scalar field\n let result = point_from_x_coord(0);\n assert(result.is_none());\n }\n\n #[test]\n unconstrained fn test_bn254_fr_modulus_div_2() {\n // Verify that BN254_FR_MODULUS_DIV_2 == (p - 1) / 2\n // This means: 2 * BN254_FR_MODULUS_DIV_2 + 1 == p == 0 (in the field)\n assert_eq(2 * BN254_FR_MODULUS_DIV_2 + 1, 0);\n }\n\n}\n"
|
|
4541
4398
|
},
|
|
4542
|
-
"
|
|
4399
|
+
"254": {
|
|
4543
4400
|
"path": "/home/aztec-dev/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr",
|
|
4544
4401
|
"source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\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 is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"
|
|
4545
4402
|
},
|
|
@@ -4547,35 +4404,35 @@
|
|
|
4547
4404
|
"path": "std/array/mod.nr",
|
|
4548
4405
|
"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 this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi<U, Env>(self, f: fn[Env](u32, 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(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each<Env>(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi<Env>(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\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 /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat<let M: u32>(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\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 [`Self::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, b| 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 // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { 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\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 global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n"
|
|
4549
4406
|
},
|
|
4550
|
-
"
|
|
4407
|
+
"312": {
|
|
4551
4408
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
|
|
4552
4409
|
"source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{AZTEC_ADDRESS_LENGTH, DOM_SEP__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE},\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\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 std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\nuse std::meta::derive;\n\n// Aztec address\n#[derive(Deserialize, Eq, Packable, Serialize)]\npub struct AztecAddress {\n pub inner: Field,\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 AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n /// Returns an address's `AddressPoint`, which can be used to create shared secrets with the owner\n /// of the address. If the address is invalid (i.e. it is not a properly derived Aztec address), then this\n /// returns `Option::none()`, and no shared secrets can be created.\n pub fn to_address_point(self) -> Option<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 // An invalid AztecAddress is one for which no y coordinate satisfies the curve equation, which we'll\n // identify by proving that the square root of y_squared does not exist.\n let mut y_opt = sqrt(y_squared);\n if y_opt.is_none() {\n Option::none()\n } else {\n let mut y = y_opt.unwrap();\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 Option::some(\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } },\n )\n }\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 DOM_SEP__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 secret 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_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\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], DOM_SEP__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 // We use the AZTEC_ADDRESS_LENGTH constant to ensure that there is a match between the derived trait\n // implementation and the constant.\n let serialized: [Field; AZTEC_ADDRESS_LENGTH] = address.serialize();\n let deserialized = AztecAddress::deserialize(serialized);\n assert_eq(address, deserialized);\n}\n\n#[test]\nfn to_address_point_valid() {\n // x = 8 where x^3 - 17 = 512 - 17 = 495, which is a residue in this field\n let address = AztecAddress { inner: 8 };\n let maybe_point = address.to_address_point();\n assert(maybe_point.is_some());\n\n let point = maybe_point.unwrap().inner;\n // check that x is preserved\n assert_eq(point.x, Field::from(8));\n\n // check that the curve equation holds: y^2 == x^3 - 17\n assert_eq(pow(point.y, 2), pow(point.x, 3) - 17);\n}\n\n#[test]\nunconstrained fn to_address_point_invalid() {\n // x = 3 where x^3 - 17 = 27 - 17 = 10, which is a non-residue in this field\n let address = AztecAddress { inner: 3 }; //\n let maybe_point = address.to_address_point();\n assert(maybe_point.is_none());\n}\n"
|
|
4553
4410
|
},
|
|
4554
|
-
"
|
|
4411
|
+
"333": {
|
|
4555
4412
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
|
|
4556
4413
|
"source": "// TODO: Expose other wrapped functions than debug (info, warn)\n// ['silent', 'fatal', 'error', 'warn', 'info', 'verbose', 'debug', 'trace']\n\npub global SILENT_LOG_LEVEL: u8 = 0;\npub global FATAL_LOG_LEVEL: u8 = 1;\npub global ERROR_LOG_LEVEL: u8 = 2;\npub global WARN_LOG_LEVEL: u8 = 3;\npub global INFO_LOG_LEVEL: u8 = 4;\npub global VERBOSE_LOG_LEVEL: u8 = 5;\npub global DEBUG_LOG_LEVEL: u8 = 6;\npub global TRACE_LOG_LEVEL: u8 = 7;\n\n/// 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/// Same as debug_log, but allows to customize the log level.\n/// Consider changing just to 'log'\npub fn debug_log_with_level<let N: u32>(log_level: u8, msg: str<N>) {\n debug_log_format_with_level(log_level, 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 // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_array_oracle_wrapper(DEBUG_LOG_LEVEL, msg, args) };\n}\n\n/// Same as debug_log_format, but allows to customize the log level.\n/// Consider changing just to 'log_format'\npub fn debug_log_format_with_level<let M: u32, let N: u32>(\n log_level: u8,\n msg: str<M>,\n args: [Field; N],\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_array_oracle_wrapper(log_level, msg, args) };\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` slice.\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 slice: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format_slice<let M: u32>(log_level: u8, msg: str<M>, args: [Field]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_slice_oracle_wrapper(log_level, msg, args) };\n}\n\n// We provide two versions of the debug log oracle: one that takes args as a slice and another one that takes args as an array.\n// We do this since conversion from array to slice generates overhead in public functions, since opcodes need to be emitted for the conversion.\n// By exposing the two flavors, we avoid conversions since the AVM is able to handle both arrays an slices in this oracle.\n\nunconstrained fn debug_log_slice_oracle_wrapper<let M: u32>(\n log_level: u8,\n msg: str<M>,\n args: [Field],\n) {\n debug_log_slice_oracle(log_level, msg, args);\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(utilityDebugLog)]\nunconstrained fn debug_log_slice_oracle<let M: u32>(log_level: u8, msg: str<M>, args: [Field]) {}\n\nunconstrained fn debug_log_array_oracle_wrapper<let M: u32, let N: u32>(\n log_level: u8,\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_array_oracle(log_level, msg, N, args);\n}\n\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_array_oracle<let M: u32, let N: u32>(\n log_level: u8,\n msg: str<M>,\n length: u32,\n args: [Field; N],\n) {}\n"
|
|
4557
4414
|
},
|
|
4558
|
-
"
|
|
4415
|
+
"344": {
|
|
4559
4416
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
|
|
4560
4417
|
"source": "mod poseidon2_chunks;\n\nuse crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_log::{PrivateLog, PrivateLogData},\n transaction::tx_request::TxRequest,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DOM_SEP__NOTE_HASH_NONCE, DOM_SEP__OUTER_NULLIFIER,\n DOM_SEP__SILOED_NOTE_HASH, DOM_SEP__UNIQUE_NOTE_HASH, FUNCTION_TREE_HEIGHT,\n NULL_MSG_SENDER_CONTRACT_ADDRESS, TWO_POW_64,\n },\n merkle_tree::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n side_effect::{Counted, Scoped},\n traits::{FromField, Hash, ToField},\n utils::field::{field_from_bytes, field_from_bytes_32_trunc},\n};\n\npub use poseidon2_chunks::poseidon2_absorb_in_chunks_existing_sponge;\nuse poseidon2_chunks::poseidon2_absorb_in_chunks;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(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\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n DOM_SEP__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, DOM_SEP__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator([app.to_field(), note_hash], DOM_SEP__SILOED_NOTE_HASH)\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\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: Scoped<Counted<NoteHash>>) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.innermost())\n }\n}\n\npub fn compute_siloed_nullifier(contract_address: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [contract_address.to_field(), nullifier],\n DOM_SEP__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: Scoped<Counted<Nullifier>>) -> Field {\n let value = nullifier.innermost().value;\n // Q: shouldn't we be checking whether the _whole_ nullifier is empty?\n // A: We don't have to. The init and inner circuits add contract address to non-empty nullifiers.\n // So we know we should silo it if the contract address is not empty.\n if nullifier.contract_address.is_zero() {\n value // Return `value` instead of 0 because an already-siloed nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, value)\n }\n}\n\npub fn create_protocol_nullifier(tx_request: TxRequest) -> Scoped<Counted<Nullifier>> {\n Nullifier { value: tx_request.hash(), note_hash: 0 }.count(1).scope(\n NULL_MSG_SENDER_CONTRACT_ADDRESS,\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<Counted<PrivateLogData>>) -> PrivateLog {\n let log = private_log.innermost().log;\n if private_log.contract_address.is_zero() {\n log\n } else {\n let mut fields = log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\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 contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped<L2ToL1Message>,\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.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n/// Computes sha256 hash of 2 input fields.\n///\n/// @returns A truncated field (i.e., the first byte is always 0).\npub fn accumulate_sha256(v0: Field, v1: Field) -> Field {\n // Concatenate two fields into 32 x 2 = 64 bytes\n let v0_as_bytes: [u8; 32] = v0.to_be_bytes();\n let v1_as_bytes: [u8; 32] = v1.to_be_bytes();\n let hash_input_flattened = v0_as_bytes.concat(v1_as_bytes);\n\n sha256_to_field(hash_input_flattened)\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 poseidon::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 = [separator.to_field()].concat(inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n/// Computes a Poseidon2 hash over a dynamic-length subarray of the given input.\n/// Only the first `in_len` fields of `input` are absorbed; any remaining fields are ignored.\n/// The caller is responsible for ensuring that the input is padded with zeros if required.\n#[no_predicates]\npub fn poseidon2_hash_subarray<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_in_chunks(input, in_len);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::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_in_chunks(input, in_len);\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// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec<let N: u32, T>(\n inputs: BoundedVec<Field, N>,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(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 = poseidon::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 = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\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 = sha256::digest(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 == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\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 == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\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 L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::<Field, 4>::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n"
|
|
4561
4418
|
},
|
|
4562
|
-
"
|
|
4419
|
+
"357": {
|
|
4563
4420
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr",
|
|
4564
4421
|
"source": "use utils::derive_serialization_quotes;\n\npub mod utils;\n\n/// Generates the generic parameter declarations for a struct's trait implementation.\n///\n/// This function takes a struct type definition and generates the generic parameter declarations\n/// that go after the `impl` keyword. For example, given a struct with generics `N: u32` and `T`,\n/// it generates `<let N: u32, T>`.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate generic declarations for\n///\n/// # Returns\n/// A quoted code block containing the generic parameter declarations, or an empty quote if the struct\n/// has no generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container<T, let N: u32> {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// This function generates:\n/// ```\n/// <let N: u32, T>\n/// ```\ncomptime fn get_generics_declarations(s: TypeDefinition) -> Quoted {\n let generics = s.generics();\n\n if generics.len() > 0 {\n let generics_declarations_items = generics\n .map(|(name, maybe_integer_typ)| {\n // The second item in the generics tuple is an Option of an integer type that is Some only if\n // the generic is numeric.\n if maybe_integer_typ.is_some() {\n // The generic is numeric, so we return a quote defined as e.g. \"let N: u32\"\n let integer_type = maybe_integer_typ.unwrap();\n quote {let $name: $integer_type}\n } else {\n // The generic is not numeric, so we return a quote containing the name of the generic (e.g. \"T\")\n quote {$name}\n }\n })\n .join(quote {,});\n quote {<$generics_declarations_items>}\n } else {\n // The struct doesn't have any generics defined, so we just return an empty quote.\n quote {}\n }\n}\n\n/// Generates the `where` clause for a trait implementation that constrains non-numeric generic type parameters.\n///\n/// This function takes a struct type definition and a trait name, and generates a `where` clause that\n/// requires all non-numeric generic type parameters to implement the specified trait.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the where clause for\n/// - `trait_name`: The name of the trait that non-numeric generic parameters must implement\n///\n/// # Returns\n/// A quoted code block containing the where clause, or an empty quote if the struct has no non-numeric\n/// generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container<T, let N: u32> {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// And trait name \"Serialize\", this function generates:\n/// ```\n/// where T: Serialize\n/// ```\ncomptime fn get_where_trait_clause(s: TypeDefinition, trait_name: Quoted) -> Quoted {\n let generics = s.generics();\n\n // The second item in the generics tuple is an Option of an integer type that is Some only if the generic is\n // numeric.\n let non_numeric_generics =\n generics.filter(|(_, maybe_integer_typ)| maybe_integer_typ.is_none());\n\n if non_numeric_generics.len() > 0 {\n let non_numeric_generics_declarations =\n non_numeric_generics.map(|(name, _)| quote {$name: $trait_name}).join(quote {,});\n quote {where $non_numeric_generics_declarations}\n } else {\n // There are no non-numeric generics, so we return an empty quote.\n quote {}\n }\n}\n\n/// Generates a `Serialize` trait implementation for a struct type.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A quoted code block containing the trait implementation\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Log<N> {\n/// fields: [Field; N],\n/// length: u32\n/// }\n/// ```\n///\n/// This function generates code equivalent to:\n/// ```\n/// impl<let N: u32> Serialize for Log<N> {\n/// let N: u32 = <[Field; N] as Serialize>::N + <u32 as Serialize>::N;\n///\n/// #[inline_always]\n/// fn serialize(self) -> [Field; Self::N] {\n/// let mut serialized_params = [0; _];\n/// let mut offset = 0;\n///\n/// let serialized_member = Serialize::serialize(self.fields);\n/// let serialized_member_len = <[Field; N] as Serialize>::N;\n/// for i in 0..serialized_member_len {\n/// serialized_params[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// let serialized_member = Serialize::serialize(self.length);\n/// let serialized_member_len = <u32 as Serialize>::N;\n/// for i in 0..serialized_member_len {\n/// serialized_params[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// serialized_params\n/// }\n/// }\n/// ```\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n\n // We care only about the name and type so we drop the last item of the tuple\n let params = nested_struct.0.fields(nested_struct.1).map(|(name, typ, _)| (name, typ));\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Serialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_serialize_clause = get_where_trait_clause(s, quote {Serialize});\n\n let (function_body, params_len_quote, serialized_params_name) =\n derive_serialization_quotes(params, true);\n\n quote {\n impl$generics_declarations $crate::traits::Serialize for $typ\n $where_serialize_clause\n {\n let N: u32 = $params_len_quote;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n $function_body\n\n $serialized_params_name\n }\n }\n }\n}\n\n/// Generates a `Deserialize` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Deserialize` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Deserialize for MyStruct {\n/// let N: u32 = <AztecAddress as Deserialize>::N + <Field as Deserialize>::N;\n///\n/// fn deserialize(serialized: [Field; Self::N]) -> Self {\n/// let mut offset = 0;\n/// let mut member_fields = [0; <AztecAddress as Deserialize>::N];\n/// for i in 0..<AztecAddress as Deserialize>::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let x = <AztecAddress as Deserialize>::deserialize(member_fields);\n/// offset += <AztecAddress as Deserialize>::N;\n///\n/// let mut member_fields = [0; <Field as Deserialize>::N];\n/// for i in 0..<Field as Deserialize>::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let y = <Field as Deserialize>::deserialize(member_fields);\n/// offset += <Field as Deserialize>::N;\n///\n/// Self { x, y }\n/// }\n/// }\n/// ```\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Deserialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_deserialize_clause = get_where_trait_clause(s, quote {Deserialize});\n\n // The following will give us:\n // <type_of_struct_member_1 as Deserialize>::N + <type_of_struct_member_2 as Deserialize>::N + ...\n // (or 0 if the struct has no members)\n let right_hand_side_of_definition_of_n = if params.len() > 0 {\n params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Deserialize>::N\n }\n })\n .join(quote {+})\n } else {\n quote {0}\n };\n\n // For structs containing a single member, we can enhance performance by directly deserializing the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // This generates deserialization code for each struct member and concatenates them together.\n let deserialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as Deserialize>::N];\n for i in 0..<$param_type as Deserialize>::N {\n member_fields[i] = serialized[i + offset];\n }\n let $param_name = <$param_type as Deserialize>::deserialize(member_fields);\n offset += <$param_type as Deserialize>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n // This will give us e.g. `a, b, c` for a struct with three fields named `a`, `b`, and `c`.\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n\n $deserialization_of_struct_members\n\n Self { $struct_members }\n }\n } else if params.len() == 1 {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Deserialize::deserialize(serialized) }\n }\n } else {\n quote {\n Self {}\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Deserialize for $typ\n $where_deserialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Packable` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Packable` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Packable for MyStruct {\n/// let N: u32 = 2;\n///\n/// fn pack(self) -> [Field; 2] {\n/// let mut result: [Field; 2] = [0_Field; 2];\n/// let mut offset: u32 = 0_u32;\n/// let packed_member: [Field; 1] = self.x.pack();\n/// let packed_member_len: u32 = <Field as Packable>::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// let packed_member: [Field; 1] = self.y.pack();\n/// let packed_member_len: u32 = <Field as Packable>::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// result\n/// }\n///\n/// fn unpack(packed: [Field; 2]) -> Self {\n/// let mut offset: u32 = 0_u32;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..<AztecAddress as Packable>::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let x: AztecAddress = <AztecAddress as Packable>::unpack(member_fields);\n/// offset = offset + <AztecAddress as Packable>::N;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..<Field as Packable>::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let y: Field = <Field as Packable>::unpack(member_fields);\n/// offset = offset + <Field as Packable>::N;\n/// Self { x: x, y: y }\n/// }\n/// }\n/// ```\npub comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Packable` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_packable_clause = get_where_trait_clause(s, quote {Packable});\n\n // The following will give us:\n // <type_of_struct_member_1 as Packable>::N + <type_of_struct_member_2 as Packable>::N + ...\n // (or 0 if the struct has no members)\n let right_hand_side_of_definition_of_n = if params.len() > 0 {\n params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Packable>::N\n }\n })\n .join(quote {+})\n } else {\n quote {0}\n };\n\n // For structs containing a single member, we can enhance performance by directly returning the packed member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let pack_function_body = if params.len() > 1 {\n // For multiple struct members, generate packing code that:\n // 1. Packs each member\n // 2. Copies the packed fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let packing_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let packed_member = $crate::traits::Packable::pack(self.$param_name);\n let packed_member_len = <$param_type as $crate::traits::Packable>::N;\n for i in 0..packed_member_len {\n result[i + offset] = packed_member[i];\n }\n offset += packed_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; Self::N];\n let mut offset = 0;\n\n $packing_of_struct_members\n\n result\n }\n } else if params.len() == 1 {\n let param_name = params[0].0;\n quote {\n $crate::traits::Packable::pack(self.$param_name)\n }\n } else {\n quote {\n [0; Self::N]\n }\n };\n\n // For structs containing a single member, we can enhance performance by directly unpacking the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let unpack_function_body = if params.len() > 1 {\n // For multiple struct members, generate unpacking code that:\n // 1. Unpacks each member\n // 2. Copies packed fields into member array at correct offset\n // 3. Updates offset for next member\n let unpacking_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as $crate::traits::Packable>::N];\n for i in 0..<$param_type as $crate::traits::Packable>::N {\n member_fields[i] = packed[i + offset];\n }\n let $param_name = <$param_type as $crate::traits::Packable>::unpack(member_fields);\n offset += <$param_type as $crate::traits::Packable>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n $unpacking_of_struct_members\n Self { $struct_members }\n }\n } else if params.len() == 1 {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Packable::unpack(packed) }\n }\n } else {\n quote {\n Self {}\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Packable for $typ\n $where_packable_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n $pack_function_body\n }\n\n #[inline_always]\n fn unpack(packed: [Field; Self::N]) -> Self {\n $unpack_function_body\n }\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Packable, Serialize};\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct Empty {}\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct Smol {\n a: Field,\n b: Field,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct HasArray {\n a: [Field; 2],\n b: bool,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n }\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct HasArrayWithGenerics<T, let N: u32> {\n pub fields: [T; N],\n pub length: u32,\n }\n\n #[test]\n fn serde_on_empty() {\n let original = Empty {};\n let serialized = original.serialize();\n assert_eq(serialized, [], \"Serialized does not match empty array\");\n let deserialized = Empty::deserialize(serialized);\n assert_eq(deserialized, original, \"Deserialized does not match original\");\n }\n\n #[test]\n fn packable_on_empty() {\n let original = Empty {};\n let packed = original.pack();\n assert_eq(packed, [], \"Packed does not match empty array\");\n let unpacked = Empty::unpack(packed);\n assert_eq(unpacked, original, \"Unpacked does not match original\");\n }\n\n #[test]\n fn serde_on_smol() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n }\n\n #[test]\n fn serde_on_has_array() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n }\n\n #[test]\n fn serde_on_fancier() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n }\n\n #[test]\n fn serde_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let serialized = struct_with_array_of_generics.serialize();\n assert(serialized == [1, 2, 3, 3], serialized);\n let deserialized = HasArrayWithGenerics::deserialize(serialized);\n assert(deserialized == struct_with_array_of_generics);\n }\n\n #[test]\n fn packable_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let packed = struct_with_array_of_generics.pack();\n assert(packed == [1, 2, 3, 3], packed);\n\n let unpacked = HasArrayWithGenerics::unpack(packed);\n assert(unpacked == struct_with_array_of_generics);\n }\n\n}\n"
|
|
4565
4422
|
},
|
|
4566
|
-
"
|
|
4423
|
+
"358": {
|
|
4567
4424
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/meta/utils.nr",
|
|
4568
4425
|
"source": "/// Generates serialization code for a list of parameters and the total length of the serialized array\n///\n/// # Parameters\n/// - `params`: A list of (name, type) tuples to serialize\n/// - `use_self_prefix`: If true, parameters are accessed as `self.$param_name` (for struct members).\n/// If false, parameters are accessed directly as `$param_name` (for function parameters).\n///\n/// # Returns\n/// A tuple containing:\n/// - Quoted code that serializes the parameters into an array named `serialized_params`\n/// - Quoted code that evaluates to the total length of the serialized array\n/// - Quoted code containing the name of the serialized array\npub comptime fn derive_serialization_quotes(\n params: [(Quoted, Type)],\n use_self_prefix: bool,\n) -> (Quoted, Quoted, Quoted) {\n let prefix_quote = if use_self_prefix {\n quote { self. }\n } else {\n quote {}\n };\n\n let params_len_quote = get_params_len_quote(params);\n let serialized_params_name = quote { serialized_params };\n\n let body = if params.len() == 0 {\n quote {\n let $serialized_params_name: [Field; 0] = [];\n }\n } else if params.len() == 1 {\n // When we have only a single parameter on the input, we can enhance performance by directly returning\n // the serialized member, bypassing the need for loop-based array construction. While this optimization yields\n // significant benefits in Brillig where the loops are expected to not be optimized, it is not relevant in ACIR\n // where the loops are expected to be optimized away.\n\n let param_name = params[0].0;\n quote {\n let $serialized_params_name = $crate::traits::Serialize::serialize($prefix_quote$param_name);\n }\n } else {\n // For multiple struct members, generate serialization code that:\n // 1. Serializes each member\n // 2. Copies the serialized fields into the serialize array at the correct offset\n // 3. Updates the offset for the next member\n let serialization_of_struct_members = params\n .map(|(param_name, param_type): (Quoted, Type)| {\n quote {\n let serialized_member = $crate::traits::Serialize::serialize($prefix_quote$param_name);\n let serialized_member_len = <$param_type as $crate::traits::Serialize>::N;\n for i in 0..serialized_member_len {\n $serialized_params_name[i + offset] = serialized_member[i];\n }\n offset += serialized_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut $serialized_params_name = [0; $params_len_quote];\n let mut offset = 0;\n\n $serialization_of_struct_members\n }\n };\n\n (body, params_len_quote, serialized_params_name)\n}\n\n/// Generates a quoted expression that computes the total serialized length of function parameters.\n///\n/// # Parameters\n/// * `params` - An array of tuples where each tuple contains a quoted parameter name and its Type. The type needs\n/// to implement the Serialize trait.\n///\n/// # Returns\n/// A quoted expression that evaluates to:\n/// * `0` if there are no parameters\n/// * `(<type1 as Serialize>::N + <type2 as Serialize>::N + ...)` for one or more parameters\npub comptime fn get_params_len_quote(params: [(Quoted, Type)]) -> Quoted {\n if params.len() == 0 {\n quote { 0 }\n } else {\n let params_quote_without_parentheses = params\n .map(|(_, param_type): (Quoted, Type)| {\n quote {\n <$param_type as $crate::traits::Serialize>::N\n }\n })\n .join(quote {+});\n quote { ($params_quote_without_parentheses) }\n }\n}\n"
|
|
4569
4426
|
},
|
|
4570
|
-
"
|
|
4427
|
+
"360": {
|
|
4571
4428
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr",
|
|
4572
4429
|
"source": "use crate::constants::TWO_POW_64;\nuse crate::traits::{Deserialize, Serialize};\nuse std::meta::derive;\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\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 is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n"
|
|
4573
4430
|
},
|
|
4574
|
-
"
|
|
4431
|
+
"388": {
|
|
4575
4432
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr",
|
|
4576
4433
|
"source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty: Eq {\n fn empty() -> Self;\n\n fn is_empty(self) -> bool {\n self.eq(Self::empty())\n }\n\n // Requires this Noir fix: https://github.com/noir-lang/noir/issues/9002\n // fn assert_not_empty<let U: u32>(self, msg: str<U>) { // This msg version was failing with weird compiler errors.\n // // We provide a default impl but it's likely inefficient.\n // // The reason we include this function is because there's a lot of\n // // opportunity for optimisation on a per-struct basis.\n // // You only need to show one element is not empty to know that the whole thing\n // // is not empty.\n // // If you know an element of your struct which should always be nonempty,\n // // you can write an impl that solely checks that that element is nonempty.\n // assert(!self.is_empty(), msg);\n // }\n\n // This default impl is overwritten by types like arrays, because there's a much\n // more efficient approach.\n fn assert_empty<let S: u32>(self, msg: str<S>) {\n assert(self.is_empty(), msg);\n }\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for bool {\n #[inline_always]\n fn empty() -> Self {\n false\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u16 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl<T, let N: u32> Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty<let S: u32>(self, msg: str<S>) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\n\nimpl<T> Empty for [T]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty()]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty<let S: u32>(self, msg: str<S>) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\nimpl<A, B> Empty for (A, B)\nwhere\n A: Empty,\n B: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n (A::empty(), B::empty())\n }\n}\n\nimpl<T> Empty for Option<T>\nwhere\n T: Eq,\n{\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\n// pub fn is_empty<T>(item: T) -> bool\n// where\n// T: Empty,\n// {\n// item.eq(T::empty())\n// }\n\n// pub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool\n// where\n// T: Empty,\n// {\n// array.all(|elem| is_empty(elem))\n// }\n\n// pub fn assert_empty<T>(item: T) -> ()\n// where\n// T: Empty,\n// {\n// assert(item.eq(T::empty()))\n// }\n\n// pub fn assert_empty_array<T, let N: u32>(array: [T; N]) -> ()\n// where\n// T: Empty,\n// {\n// // A cheaper option than `is_empty_array` for if you don't need to gracefully\n// // handle a bool result.\n// // Avoids the `&` operator of `is_empty_array`'s `.all()` call.\n// for i in 0..N {\n// assert(is_empty(array[i]));\n// }\n// }\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u16 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl<let N: u32> ToField for str<N> {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u16 {\n fn from_field(value: Field) -> Self {\n value as u16\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Associated Constants\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl<let N: u32> Serialize for str<N> {\n/// let N: u32 = N;\n///\n/// fn serialize(self) -> [Field; Self::N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; Self::N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n let N: u32;\n\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let M: u32> Serialize for str<M> {\n let N: u32 = M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let bytes = self.as_bytes();\n let mut fields = [0; Self::N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n/// Implementation of Deserialize for BoundedVec.\n///\n/// This implementation deserializes a BoundedVec from an array of Fields. The array contains:\n/// 1. The serialized items, each taking up T::N Fields\n/// 2. The length of the BoundedVec as the last Field\n///\n/// # Type Parameters\n/// * `T` - The type of items stored in the BoundedVec, must implement Deserialize\n/// * `M` - The maximum length of the BoundedVec\n///\n/// # Fields Array Layout\n/// [item1_field1, item1_field2, ..., item2_field1, item2_field2, ..., length]\n/// Where:\n/// - itemN_fieldM: The M-th Field of the N-th item (T::N Fields per item)\n/// - length: The number of items in the BoundedVec (1 Field)\n///\n/// Total length N = T::N * M + 1, where:\n/// - T::N is the number of Fields needed to deserialize one item\n/// - M is the maximum length of the BoundedVec\n/// - +1 is for storing the length\n///\n/// # Note\n/// Not deriving this because it's not supported to call derive_deserialize on a \"remote\" struct (and it will never\n/// be supported).\nimpl<T, let M: u32> Deserialize for BoundedVec<T, M>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut new_bounded_vec: BoundedVec<T, M> = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[<T as Deserialize>::N * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; <T as Deserialize>::N];\n for j in 0..<T as Deserialize>::N {\n nested_fields[j] = fields[i * <T as Deserialize>::N + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(_fields: [Field; Self::N]) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl<T, let M: u32> Serialize for BoundedVec<T, M>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M + 1; // +1 for the length of the BoundedVec\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut fields = [0; Self::N];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..<T as Serialize>::N {\n fields[i * <T as Serialize>::N + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[<T as Serialize>::N * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Associated Constants\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl<let M: u32> Deserialize for str<M> {\n/// let N: u32 = M;\n///\n/// #[inline_always]\n/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// str::<Self::N>::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n let N: u32;\n\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let M: u32> Deserialize for str<M> {\n let N: u32 = M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n str::<Self::N>::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Associated Constants\n/// * `N` - The length of the Field array, known at compile time\n#[derive_via(derive_packable)]\npub trait Packable {\n let N: u32;\n\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec<Field, 3> = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::<Field, 3>::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n"
|
|
4577
4434
|
},
|
|
4578
|
-
"
|
|
4435
|
+
"391": {
|
|
4579
4436
|
"path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr",
|
|
4580
4437
|
"source": "use crate::traits::{Deserialize, Serialize};\n\nglobal U1_SERIALIZED_LEN: u32 = 1;\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u1\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl<T, let M: u32> Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M;\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; _] = std::mem::zeroed();\n for i in 0..M {\n let serialized_t = self[i].serialize();\n for j in 0..<T as Serialize>::N {\n result[i * <T as Serialize>::N + j] = serialized_t[j];\n }\n }\n result\n }\n}\n\nimpl<T, let M: u32> Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::<T, <T as Deserialize>::N, M>(Deserialize::deserialize, result)\n }\n}\n\nimpl<T> Serialize for Option<T>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N + 1;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..<T as Serialize>::N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl<T> Deserialize for Option<T>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n if fields[0] == 1 {\n let mut value_fields = [0; <T as Deserialize>::N];\n for i in 0..<T as Deserialize>::N {\n value_fields[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_fields))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::<Field>::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn array_serialization() {\n let array = [1, 2, 3, 4];\n\n let serialized: [Field; 4] = array.serialize();\n let deserialized: [Field; 4] = Deserialize::deserialize(serialized);\n assert_eq(deserialized, array);\n }\n\n #[test]\n fn nested_array_serialization() {\n let nested_array = [[1, 2, 3, 4], [5, 6, 7, 8]];\n\n let serialized: [Field; 8] = nested_array.serialize();\n let deserialized: [[Field; 4]; 2] = Deserialize::deserialize(serialized);\n\n assert_eq(deserialized, nested_array);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::<Field>::deserialize(opt_none.serialize()), opt_none);\n }\n}\n"
|
|
4581
4438
|
},
|