@aztec/protocol-contracts 3.0.0-nightly.20251219 → 3.0.0-nightly.20251221

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.
@@ -63,7 +63,7 @@
63
63
  }
64
64
  },
65
65
  "bytecode": "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",
66
- "debug_symbols": "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"
66
+ "debug_symbols": "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"
67
67
  },
68
68
  {
69
69
  "name": "balance_of_public",
@@ -115,7 +115,7 @@
115
115
  }
116
116
  },
117
117
  "bytecode": "JwACBAEoAAABBIBGJwAABEYnAgIEAScCAwQAHwoAAgADAEQtCEQBJQAAAEUlAAAASy0CAUUnAgIERScCAwQBOw4AAwACJwBDBAMmJQAAAm0eAgADAB4CAAQAHgIABQknAgYBASQCAAUAAABxJQAAApMnAgUAACsCAAcAAAAAAAAAAAIAAAAAAAAAAC0IAQgnAgkEBQAIAQkBJwMIBAEAIggCCS0KCQotDgUKACIKAgotDgUKACIKAgotDgUKACIKAgotDgcKLQgBBwAAAQIBLQgBCQAAAQIBLQgBCgAAAQIBLQgBCwAAAQIBJwIMAAEtCAENJwIOBAQACAEOAScDDQQBACINAg4tCg4PLQ4MDwAiDwIPLQ4BDwAiDwIPLQ4FDy0ODQctDggJJwIBBAItDgEKJwIBAQAtDgELJwIIBAAnAgwEAS0KCAIjAAABTgwiAkMDJAIAAwAAAecjAAABYC0LCQItCwIDACIDAgMtDgMCLQgBAycCBAQFAAgBBAEnAwMEAQAiAgIEJwIIBAQAIgMCDT8PAAQADS0LBwItCwoELQ4CBy0OAwktDgQKLQ4GCwAqAwwELQsEAgoqAgUDCioDAQQkAgAEAAAB0SUAAAKlLwoAAgABHAoBAwYcCgMCABwKAgEGJi0LCgMMKgIDBCQCAAQAAAH9IwAAAl8tCwkEACIEAg0AKg0CDi0LDggtCwcNACINAg8AKg8CEC0LEA4AKggODy0LCwgtAgQDJwAEBAUlAAACty0IBQ4AIg4CEAAqEAIRLQ4PES0ODQctDg4JLQ4DCi0OCAsjAAACXwAqAgwDLQoDAiMAAAFOKAAABAR4RgwAAAQDJAAAAwAAApIqAQABBdrF9da0SjJtPAQCASYqAQABBdwbbuv7trxDPAQCASYqAQABBbq7IdeCMxhkPAQCASYtAQMGCgAGAgckAAAHAAACzSMAAALWLQADBSMAAAMVLQABBQAAAQQBAAADBAktAAMKLQAFCwoACgkMJAAADAAAAxAtAQoILQQICwAACgIKAAALAgsjAAAC7CcBBQQBJg==",
118
- "debug_symbols": "tZdRbtswDIbv4uc8SKRIib3KUBRp6w4BgrTIkgFDkbuPtEXb6WChS7cX+xNt/SZpUrbeu+f+8fz9YXd4ef3R3X177x6Pu/1+9/1h//q0Pe1eD2p974Idih5x0xXq7vKmEx3FoGcdxrjpYggOpUJEhWJQKqBUSH4p+SVyC7mF3cK5Qo4OXMF8GoEc/BGSHExQPYYADrlCjA5cAYIDOUgFVEEIBlLBohihVCC3kFvYLRbFABbFCFzBohiBHOwRmkMQdMgjoEUxAlewKAYYPEwKZPeQAVfg4EAO9giNCzM6lArFLcUt4haplhTQwXRYwV73COaqVkqC6EAOUgHt5mJQKiT1GYNBrkBuMedHUB1U55PlEO3plsMBiltKHpOQxCyqTObhAIOHZFAqgFsgV0CbJQZcIbkl6dOTukEUHFKdRS7ILshuyeDgjyhuKfXtkAQHF5Q6ncMw63LZdN6RD6dj31tDLlpUG/dte+wPp+7ucN7vN93P7f483PTjbXsYzqftUa+q1/3hWc8q+LLb90aXzTw7rE8FLFJng771SSBGvpKI6xLar1yqhnLOk0iOVxqwroFARFVDWSeuaLRCKdHdAIG4GkpqSGiPThogscxupCsN+gfp4P+bDtRpLqGVt5qO0kiHIIYppZh4zQ1puIEIkx+6mKUvhsIhrIbSkkCGyYsyB0JwXeaNGiWI7gUBL+pL8FoDG8VB7PkMMClgvu7X2CjRnKfqyiXSrJE+REKtfHouUpxTod+5a4VGgUKUOPXJYtn4QyM38im5SvAijr/yAubFCxf5/ENDWm8EvMQjpXyjBsukUeS2WHKcSiNjWNWARoXGnNH9yLKeD2hUaE5eGznxTQqSfOkSKjcpxADuRAy8XhvQyKf+O7gbqRAsuvXz6ZQwvVaBRnm1Fo3INC0aGVYXDWiVF/P0WrksSiPQTcvf4mPwYfnD2Go2mFt+WRofvMDWZz7oV8T9CEK09jFAbInor/kkAmX1A4uptQTy7Akxr4u0w4FFODmsinDrf0F4qrKI84JeyudbLvhSKnBj0071IZm+2vYfFe51uH3aHa/2nxeTOu62j/u+Dl/Oh6fF1dOvN7/i+9e34+tT/3w+9qY0b2L18C3qv3skube9qg11+xERbRhtqLsI3ajeX8yZ3w=="
118
+ "debug_symbols": "tZfRbtswDEX/xc95kEiREvsrQ1GkrTsECNIiSwYMRf59pC3aTgcLXbq9JMe0dX1JU7L13j33j+fvD7vDy+uP7u7be/d43O33u+8P+9en7Wn3etDoexfsp+gvbrpC3V3edKJHMei/Hsa46WIIDqVCRIViUCqgVEh+Kvkp8gh5hD3CuUKODlzBPI1ADn4LSQ4mqI4hgEOuEKMDV4DgQA5SAVUQgoFUsCxGKBXII+QR9ohlMYBlMQJXsCxGIAe7hdYQBB3yCGhZjMAVLIsBBodJgewaMuAKHBzIwW6heWFGh1KheKR4RDwiNZICOpgOK9jjHsGsaqckiA7kIBXQLi4GpUJSzxgMcgXyiJkfQXVQzSerIdrdrYYDFI+UPBYhiUVUmczhAINDMigVwCOQK6CNEgOukDyS9O5JbRAFh1RHkQuyC7JHMjj4LYpHSn06JMHBBaUO5zCMulw2nc/Ih9Ox721CLqaoTty37bE/nLq7w3m/33Q/t/vzcNGPt+1h+D9tj3pWXfeHZ/1XwZfdvje6bObRYX0oYJE6GvSpTwIx8pVEXJfQ+cqlaijnPInkeKUB6xoIRFQ1lHXgikYrlRLdBgjE1VRSQ0Ln6KQBEstsI11p0D8oB//fcqAOcwntvNVylEY5BDFMJcXEazakYQMRJh+6mKUvpsIhrKbSkkCGyUWZEyG4bvNGjxJEd0HAi/4SvNbARnMQez0DTAqYP7hotGjOU3flEmnWSNcdGqlVT69FinMptOeuFRoNClHiNE8Wy8YfGrlRT8lVghd5/JULmBcvXNTzDw1pPRHwFo+U8o0aLJNGkdtyyXFqjYxhVQMaHRpzRveRZb0e0OjQnLw3cuKbFCT50iVUblKIAdxEDLzeG9Cop347uI1UCBaz9fPllDA9VoFGe7UWjcg0LRoZVhcNaLUX8/RYuSxaI9BNy9/iZfBh+cPYmmwwT/lla3xwga3XfNC3iPsIQrT2MkBsiein+SQCZfUFi6m1BPLshJjXRdrpwCKdHFZFuPW9IDx1WcR5QZfw+SkXfCkVuHHSTv0hmb467T8q3Ovh9ml3vNp/XkzquNs+7vt6+HI+PC3Onn69+Rnfv74dX5/65/OxN6V5E6s/36J+u0eSe9ur2qFuPyKiHUY71F2EblTvL2bmNw=="
119
119
  },
120
120
  {
121
121
  "name": "check_balance",
@@ -157,7 +157,7 @@
157
157
  }
158
158
  },
159
159
  "bytecode": "JwACBAEoAAABBIBGJwAABEYnAgIEAScCAwQAHwoAAgADAEUcAEVFBi0IRQElAAAARiUAAABxJwIBBEYnAgIEADsOAAIAASwAAEMAMGROcuExoCm4UEW2gYFYXSgz6Eh5uXCRQ+H1k/AAAAAnAEQEAyYlAAAC2B4CAAMAHgIABAAeAgAFCScCBgEBJAIABQAAAJclAAAC/h4CAAUBCiIFQwcWCgcIHAoICQAEKgkFCCcCBQEACioHBQkkAgAJAAAAyicCCgQAPAYKAScCBwAAKwIACQAAAAAAAAAAAgAAAAAAAAAALQgBCicCCwQFAAgBCwEnAwoEAQAiCgILLQoLDC0OBwwAIgwCDC0OBwwAIgwCDC0OBwwAIgwCDC0OCQwtCAEJAAABAgEtCAELAAABAgEtCAEMAAABAgEtCAENAAABAgEnAg4AAS0IAQ8nAhAEBAAIARABJwMPBAEAIg8CEC0KEBEtDg4RACIRAhEtDggRACIRAhEtDgcRLQ4PCS0OCgsnAggEAi0OCAwtDgUNJwIIBAAnAgoEAS0KCAIjAAABogwiAkQDJAIAAwAAAlIjAAABtC0LCwItCwIDACIDAgMtDgMCLQgBAycCBAQFAAgBBAEnAwMEAQAiAgIEJwIIBAQAIgMCDj8PAAQADi0LCQItCwwELQ4CCS0OAwstDgQMLQ4GDQAqAwoELQsEAgoqAgcDCioDBQQkAgAEAAACJSUAAAMQLwoAAgADHAoDBAYcCgQCABwKAgMGDCoDAQIKKgIFASQCAAEAAAJRJQAAAyImLQsMAwwqAgMEJAIABAAAAmgjAAACyi0LCwQAIgQCDgAqDgIPLQsPCC0LCQ4AIg4CEAAqEAIRLQsRDwAqCA8QLQsNCC0CBAMnAAQEBSUAAAM0LQgFDwAiDwIRACoRAhItDhASLQ4OCS0ODwstDgMMLQ4IDSMAAALKACoCCgMtCgMCIwAAAaIoAAAEBHhGDAAABAMkAAADAAAC/SoBAAEF2sX11rRKMm08BAIBJioBAAEFDv4gSes3Tjw8BAIBJioBAAEFursh14IzGGQ8BAIBJioBAAEFhHKAwoQjC0Y8BAIBJi0BAwYKAAYCByQAAAcAAANKIwAAA1MtAAMFIwAAA5ItAAEFAAABBAEAAAMECS0AAwotAAULCgAKCQwkAAAMAAADjS0BCggtBAgLAAAKAgoAAAsCCyMAAANpJwEFBAEm",
160
- "debug_symbols": "tZjdbuI6EMffJddceD7ssXmVVVXRlq6QEK1YONJRxbufsfE4gZWtPezuDfwywf/MlychX9Pb9uX8/Xl3eP/4Ma2/fU0vx91+v/v+vP943Zx2Hwe1fk0ufwDEaU2rCZCmteRvPQanQGoAyBArcKjgQcFnyJa8KoCBr6fEGWRLUojOwCyJDOIV0OG0xpBBKmR/CpCdIjvFZmGzeLNkxwoEZ+ANUgVhA7tEJIMsqM5jAoNwBXLOwBukCsAGsUJOKsYMsUKJooBUYLOwWbxZShQZShQFvEGqUKIokC+hOaSIBqFCiaKAvwKXqqMC6W9I68/sDNggVfAaBfkMUiGggVnELGKWaJZollxu4gxyBe/UMYIM3iBVADLIP9aieESD7LOG7AkMzFKcL6A6rM57r8qsV/c5h1cwS25RzoK5RQtEs8RYIfE1UT63KGuHBwgVsGYsoK9AZiE2yKvUn8BkYJZcZU4ZpELeRGVVMEExQWmWWpQQ7RLRLCW9BeQK4sCgLhcoqy6X1WSj4Pl03G7zJFjMBp0Yn5vj9nCa1ofzfr+a/tnsz+VHPz43h/J92hz1rM6J7eFNv1XwfbffZrqs5tWuvxQpproa2aUmABBuJKAvoRMlxKqhLNJEBG40sK9BqB1SNZR1YUdjFEoEcwMTQjcUHkhgTE1Dp06c3eAbDf8H0hH+bjpIl5mEbptuOuIgHYnItZQSh54baeCGztrmBxHzb4YSnOuGMpIARJMAmmvi8bbNBz2KDIHbXoHEveYAGnRHkrk7kkg3pcCj9ghzNBio22LjcNDNWx8DdMMZNSpbmzLgHIt/qCyL/rovy6BJJVBVWGaT8ZddcEmaC4uxcecCDiQ8gvWnXyZSn6xuNUZT1AcrhsOmQHI7yXFQUJk7SyL4WeMuF0ijnYatnnMy0d/FMRqhkKBN0MUN5SeNwQj1rSJhEcf/8gLn2xot8vmThowqgjb8wLM8qBFS04jpsVgEWmsIua4GDToURGyXgKR+PmjQocLWG8LhIYXUpkXy8SEFcG1egAv93qBBPjlCG1rR42K3/no6UxudkHDQXqOhoX/S2tAQ7A4NGrVXaMMPQly0hvMPjT/PvfFHabTZcN7yy9a484LHbpDdXJW9793SGEYiyLGJ6N/HrsjoUdSH2RMfQl9kHA4uwhHXFeHRk2QKrcuA5oEe40PVDalb3dGmdaaQ8MFtH2zPJvG/OzjuFZ70cPO6O968VLlkqeNu87Lf1sP38+F1cfb076edsZcyn8eP1+3b+bjNSvObGf34Bl5WIOFJX5GUQ20fYMmHUM7CCjw9XbIz/wE="
160
+ "debug_symbols": "tZjdbuI6EMffJddceD7ssXmVVVXRlq6QEK1YONJRxbufsfE4gZWtPezuDfwywf/MlychX9Pb9uX8/Xl3eP/4Ma2/fU0vx91+v/v+vP943Zx2Hwe1fk0ufwDEaU2rCZCmteRvPQanQGoAyBArcKjgQcFnyJa8KoCBr6fEGWRLUojOwCyJDOIV0OG0xpBBKmR/CpCdIjvFZmGzeLNkxwoEZ+ANUgVhA7tEJIMsqM5jAoNwBXLOwBukCsAGsUJOKsYMsUKJooBUYLOwWbxZShQZShQFvEGqUKIokC+hOaSIBqFCiaKAvwKXqqMC6W9I68/sDNggVfAaBfkMUiGggVnELGKWaJZollxu4gxyBe/UMYIM3iBVADLIP9aieESD7LOG7AkMzFKcL6A6rM57r8qsV/c5h1cwS25RzoK5RQtEs8RYIfE1UT63KGuHBwgVsGYsoK9AZiE2yKvUn8BkYJZcZU4ZpELeRGVVMEExQWmWWpQQ7RLRLCW9BeQK4sCgLhcoqy6X1WSj4Pl03G7zJFjMBp0Yn5vj9nCa1ofzfr+a/tnsz+VHPz43h/J92hz1rM6J7eFNv1XwfbffZrqs5tWuvxQpproa2aUmABBuJKAvoRMlxKqhLNJEBG40sK9BqB1SNZR1YUdjFEoEcwMTQjcUHkhgTE1Dp06c3eAbDf8H0hH+bjpIl5mEbptuOuIgHYnItZQSh54baeCGztrmBxHzb4YSnOuGMpIARJMAmmvi8bbNBz2KDIHbXoHEveYAGnRHkrk7kkg3pcCj9ghzNBio22LjcNDNWx8DdMMZNSpbmzLgHIt/qCyL/rovy6BJJVBVWGaT8ZddcEmaC4uxcecCDiQ8gvWnXyZSn6xuNUZT1AcrhsOmQHLnxaCgMneWRPCzBt/WE2m007DVc06mTqNbhdEIhQRtgi5uKD9pDEaobxUJizj+lxc439Zokc+fNGRUEbThB57lQY2QmkZMj8Ui0FpDyHU1aNChIGK7BCT180GDDhW23hAODymkNi2Sjw8pgGvzAlzo9wYN8skR2tCKHhe79dfTmdrohISD9hoNDf2T1oaGYHdo0Ki9Qht+EOKiNZx/aPx57o0/SqPNhvOWX7bGnRc8doPs5qrsfe+WxjASQY5NRP8+dkVGj6I+zJ74EPoi43BwEY64rgiPniRTaF0GNA/05B6qbkjd6o42rTOFhA9u+2B7Non/3cFxr/Ckh5vX3fHmpcolSx13m5f9th6+nw+vi7Onfz/tjL2U+Tx+vG7fzsdtVprfzOjHN/CyAglP+oqkHGr7AEs+hHIWVuDp6ZKd+Q8="
161
161
  },
162
162
  {
163
163
  "name": "claim",
@@ -2013,7 +2013,7 @@
2013
2013
  }
2014
2014
  },
2015
2015
  "bytecode": "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",
2016
- "debug_symbols": "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SleW6JAdqsOejfML7s9XaVfuHtTuQe0e1O5B7R7U7kHtHjy/8v6sbI8OPRvdg9o9eH7l/fkq68rdg9o9qN2D2j2o3YPaPajdg+pd2Xueuwe1e1C7B9W7snfl7kHtHtTuQe0e1O5B7R7U7kEdXXn0PHcPavegdg9qdOXoyt2D2j2o3YPaPajdg9o9qN2D2u912m922j2o3YPaPaj9hqf9jqfdg9o9qN2D2j2o3YPaPajdg+cvDzgrV89z96B2D2r34PoNAserZlfuHtTuQe0e1O5B7R7U7kHtHtS5K9vj0UE6aAfrsCufv4BgheiQHarDng3rHrTuQesePH9vwVlZvMPoEB2yQ1eWrtw9aN2D1j1o3YPWPWjdg9Y9aNqVtTr0bHQPWvfg+YsQzldZV+4etO5B6x607kHrHrTuQesePH8jwlnZe567B6170LoHzbuyd+XuQesetO5B6x607kHrHrTuwfO3JpyVR89z96B1D1r34PlbE85XRVfuHrTuQesetO5B6x607kHrHrToytnz3D1o3YPWPWh9yWl9zWndg9Y9aN2D1j1o3YPWPWjdg1ZduXqeuwete9C6B60vQM/fvnCG7kHrHrTuQesetO5B6x607kGbXXn2PHcPevegdw96X4v6wzp4h9EhOmSH6rD32bsHXbqyaAfr4B1Gh64sXbl70LsHvXvQuwe9e9C7B7170LUra3TIDtWhZ6OvRd26cvegdw9696B3D3r3oHcPevegW1f2nufuQe8e9O5B72tR967cPejdg9496N2D3j3o3YPePeijK4+e5+5B7x707kHva1EfXbl70LsHvXvQuwe9e9C7B7170KMrR89z96B3D3r3oPe1qHcPer8Per8Peveg97WoZ1fuez/vHvTuQe8e9H4f9LMH6wjHL8GRI0SH7FAd5g5HD64gHbSDdfAOXXl25dmVZ1eeu/J4PDpIB+1gHbzD6BAdskN16MrSlaUrS1eWrixdWbqydGXpytKVpStrVz56MM9PFbSDdTgq+xFGh+iQHarD3K86enCFrnz04Plvjh5coStbV7aubF3ZurJ1Ze/K3pW999l7n70re1f2ruxd2bvy0YNnOHpwBenQ+zy68tGDK4wO0SE7dOXRlaMrR1eOrhw9G9H7HL3P0fscXfnowRV6NrJnI3s2sitnV86unF05u3L2bGTvc/Y+V+9zdeXq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ba173VGJRnTioEIQk1hEaLhEcIngEsEla93roskgBjGJRYSm0HCJ4BLBJYJLBJcILhFcsta9Lppex01wieASwSVr3euqYNBwieASwSWCSwSXCC4RXLLWvS6ac9xwieASwSVr3euuAA2XCC4RXCK4RHCJ4BLBJWvd66INjhsuEVwiuGSte10VAhouEVwiuERwieASwSWCSyShJccNlwguEVyy1r3uCtBwieASwSWCSwSXCC4RXLLWvS5acdxwieASwSVS0CY0XCK4RHCJ4BLBJYJLBJesda+LNq/jprhEcYniEr3ucWyte91xEIOYxCJeY1NcorhkrXtdNDGiEwcxiNAEGi5RXKK4RHGJ4hLFJYpL1rrXRdMkFpGZxCVq0AwaLlFcorhEcYniEsUlikvWutdFc44bLlFcorhEHZpDwyWKSxSXKC5RXKK4RHHJWve6aIPjhksUlygu0QEtoOESxSWKSxSXKC5RXKK4ZK17XbTguOESxSWKSzShJTRcorhEcYniEsUliksUl6x1r4tWHDdcorhEcYkWNFyiXJco1yWKS3RCm9AmNFyiuERxiXJdsta91vMDNlvrXo9fTmJr3euOSjSiEwcxiEks4ryiQBNoAk2gCTSBJtAEmkATaApNoSk0habQFJpCU2gKTaEZNINm0AyaQTNop0uOX8xia93rjkU8aXHE0yU7ClGJRvSrwumSHaGdLtn/tojQBrQBbUAb0Aa0AW1AG4xtMLYBLaAFtIAW0E6X7DiIQWRsAe10yYqnS3YUohKhJbSEltASWjKTydiKsRVjK2inS3ZkJouZLGayoBW0gjahTWiTmZyMbTK2ydgmtMlxm8zkvGZyrXvd8aKtda87GtGJgxjEJBbxGtta97poIkQlGtGJ0ASaQBNoAk0fRMamjE0Zm0LTQQxiEosIzaAZNINm0IyZNMZmjM0YGy5Z615XdGbSmUlnJnHJWve6IzSHhksclzgucVziuGSte120wXHDJY5LHJesda+7AjRc4rjEcYnjEscljkscl6x1r4sWHDdc4rjEccla97oqJDRc4rjEcYnjEscljkscl6x1r4tWHDdc4rjEccla97orQMMljksclzgucVziuMRxyVr3umiT44ZLHJc4LlnrXs8Ka93rjkJUohGdOIhBTOJFW+teV8QlA5cMXLLWva4KAg2XDFwycMnAJQOXDFwycMla97poakQnDmIQoSk0XDJwycAlA5cMXDJwycAlg+uSwXXJwCUDlwxcMrguGVyXDFwycMnAJQOXDFwycMnAJWvd66INjhsuGbhk4JK17nVXgIZLBi4ZuGTgkoFLBi4ZuGSte1204LjhkoFLBi5Z615XhYSGSwYuGbhk4JKBSwYuGbhkrXtdtOS44ZKBSwYuWeteV4WChksGLhm4ZOCSgUsGLhm4ZK17XbTJccMlA5cMXLLWve4K0HBJ4JLAJYFLApcELglcsta9nrS17nXHIl4zGbhkrXtdFQQaLglcErgkcEngksAlgUvWutdFUyEq0YhOhKbQcEngksAlgUsClwQuCVyy1r0umg0iM4lLApcE9zjBPU7gksAlgUsClwQuCVwSuGSte10057jhksAlgUuCe5y17nVHaLgkcEngksAlgUsCl6x1r4sWHDdcErgkcElwj7PWve4IDZcELglcErgkcEngkrXuddGS44ZLApcELgnucda61x2h4ZLAJYFLApcELglcsta9LtrkuOGSwCWBS4J7nLXudUdouCRwSeKSxCWJSxKXrHWvJ22te90xiEksIjSBhksSlyQuSVySuCRxSeKSte510eQ6bolLEpckLknucda61x2h4ZLEJYlLEpckLklcsta9LpoZkZnEJYlLknucxCXJdUlyXZK4JLnHWeted4SGSxKXJC5JrkvWutc6PmBb617nWeF0yY5KNKITBzGISSziQZvHR39r3euOQlSiEZ04iEFMYhGhJbSEltASWkI7XPJ8RnHGIDK2ZGynS1YsZrKYyWImi5ksZrKYyWImC1pBK2gT2oQ2oU1ok7FNZnIyk5OZnMzkvGZyrXvdUYhKNKITBzGISSwitMMla9bXutdzFGvd645GdOIgBjGJRbxmcq173RGaQlNoCk2hKTSFpoxNGZsxk8ZMGjNpzKQxk8ZMGjNpzKRBM2gOzaE5NId2uGTPup8d4GcMYhKLOK84HkQhKtGIB00eZxzEICaxiPOKh0s6ClGJRoQW0AJaQAtoAS1PWp1RiAdN7YxGdOIgBjGJRZxXPFzSUYjQClpBK2gFraAVtII2oU1oE9qENqFNaBPahDahzYt2rnvtKEQlGtGJgxjEJBYRmkATaAJNoAk0gSbQBJpAE2iHS55PV8940PxxRiUa0YmDGMQkFnFe8XBJR2gGzaAZNINm0AyaQTNoDs2hOTSH5tAcmkNzaA7NoQ1oA9qANqANaAPagDagDWinS8Z53E6X7ChEJRrRiYMYxCQWEVpCS2gJLaEltISW0BJaQktoBa2gFbSCVtAKWkEraAWtoE1oE9qENqFNaBPahDahTWizaX6ue+0oRCUa0YmDGMQkFhGaQBNoAk2gCTSBJtAEmkATaApNoSk0habQFJpCU2gKTaEZNINm0AyaQTNoBs2gGTSD5tAcmkNzaA7NoTk0h+bQHNqANqANaAPagDagDWgD2oA2oAW0gBbQAlpAC2gBLaAFtICW0BJaQktoCS2hJbSEltASWkEraAWtoBW0glbQClpBK2gT2oQ2oU1oE9qENqFNaBMaLhFcIrhEcIngEsElgksElwguEVwiuERwieASwSWCSwSXCC4RXCK4RHCJ4BLBJYJLBJcILhFcIrhEcIngEsElgksElwguEVwiuERwieASwSWCSwSXCC4RXCK4RHCJ4BLBJYJLBJcILhFcIrhEcIngEsElgksElwguEVwiuERwiSyXjCOeLjm+HsrPda8dlXjQUs540PKscLpkx4NW698msYjziqdLZp1RiE+aPU7E4RI77t/8XPfacRwxzhhHXC9LYh1xnnFe8XBJRyEetOOWy891rx2dOIgHTc49O1xiomcs4rzifFz7e7jE5JydqUQjOnHwsiAmEdo8af6v77/73z/+/OMf//TTD//z3e/++fzjf/3jL3/++49//cv+49//39/6b/70848//fTjf//hbz//9c8//Oc/fv7hDz/99c/H3333OP5zSOI/JL5X+f3zHwv/a36vfvwv3f/0P3Tk95rx++f10fH3z9v4p0uefzr/udrx7/34oxx/9Ppex+N4vfXrnx31vZvu1+t4/ouofv3zUvn754VQv/753vr8Yxyv9+P1xyvseHn/e3/+/Tz+evz7IKJfof69+fWKx/c+jr/O6xUqz134/b/+9a/f/+v/Aw==",
2016
+ "debug_symbols": "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",
2017
2017
  "verification_key": "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"
2018
2018
  },
2019
2019
  {
@@ -3865,7 +3865,7 @@
3865
3865
  }
3866
3866
  },
3867
3867
  "bytecode": "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",
3868
- "debug_symbols": "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3YPaPajelb0rdw9q96B2D2r3oHYPavegdg+qd+XR89w9qN2D2j2ooyuPrtw9qN2D2j2o3YPaPajdg9o9qP0ep/0mp92D2j2o3YPab3Ta73TaPajdg9o9qN2D2j2o3YPaPbieVC/9qHrpZ9VLP6xe+mn10o+r135evfYD67WfWK/9yHrtZ9ZrP7Re+6n1uh9bv0JXnj3P3YPaPajdg+fD7NdPdeXuQe0etO5B6x607kHrHrTuwfOR90dle0SH7FAd9myYdGXpyt2D1j1o3YPWPWjdg9Y9aN2D54Pyz8r66CAdtIN16MralbsHrXvQugete9C6B6170LoHzbqyeYeeje5B6x48H8G/fqordw9a96B1D1r3oHUPWvegdQ+ej+k/K3vPc/egdQ9a9+D5mP7zp0ZX7h607kHrHrTuQesetO5B6x606MrR89w9aN2D1j1ofappfa5p3YPWPWjdg9Y9aN2D1j1o3YPnw/3Pytnz3D1o3YPWPWh94nk+3H+Frtw9aN2D1j1o3YPWPWjdg+fj/s/Ks+e5e9C6B6170Po01GZX7h607kHrHrTuQe8e9O5B7x70x67sD+8wOkSH7FD9U125e9C7B7170LsHvXvQuwe9e9ClK0t12LPh3YPePeh9LuralbsHvXvQuwe9e9C7B7170LsH3bqyaYeeje5B7x70Phd168rdg9496N2D3j3o3YPePejdg+5d2Xueuwe9e9C7B73PRX105e5B7x707kHvHvTuQe8e9O5BH105ep67B7170LsHvc9FvXvQ+33Q+33Quwe9z0U9u3Jf83n3oHcPeveg9/ugnz3oRzgq5xGqw9zh7MEzSAftYB28w+gQHbpydeXqyrMrz648u/LsyrMrz648u/LsyrMrz115PB4dpIN2sA7eYXSIDtmhOnRl6crSlaUrnz14firgHUaHOD7mOUJ2qA5zh6MHV5D9U2cPnqErHz24vmd06MralbUra1e2rmxd2bqydWXrbbbeZuvK1pWtK1tX9q589OAK2sE69DZ7Vz578AzZoTrMHUZXHl15dOXRlUdXHj0bo7d59DaP3ubRlc8ePEPPRvRsRM9GdOXoytGVoytHV46ejextzt7m7G3Orpw9z9mzkT0b2bORXTm7cnXl6srVlatno3qbq7e5epurK1fPc/VszJ6N2bMxu/LsyrMrz648u/Ls2Zi9zXNv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",
3868
+ "debug_symbols": "tZ3dbvzGkbfvxcc+mProqurcyiIIkqx3YcBIAm+ywIvA9/4O2V18ZBuix5L2xPOT/1I97CbrGXLYov79zX9+95d//fefvv/bf/39f775w3/8+5u//Pj9Dz98/99/+uHvf/3zP7//+9+e//ff3zyO/4h/8wfNn779Rs6vJL/5Qzy/kNqvc73qY7/KftX9avvV9+vYr7Ffdz3d9XTXs13Pdj3b9WzXs2e9PF6fP1/Ha+3XuV79sV+fPz+P1ydPHkfIDtVh7jCO75EjZIfqMHeIZ13RI0gH7WAdvMNzsGLPkMc/+REOxDjCUfkYSM4d6tHhqHyMrbSDdfAOo8NR5xjoPH7qGOnUDtbBO4wOvRkzO1SHuYI+Hh2kg3awDt7hWUcfR6gOcwd5dHjWUTnCk656hOxQHeYOx/G0gnTQDk+62hG8w+hw1PEjHHWODTuOI40j7PlR0w7WwTuMDsf8zOdBr8dBr7kOOk3fr2O/xn7N/Vr7dR3EWo/9KvtV9+uuV7te7Xq169WuV7te7XrzcR70euzZOl59v479Gvs1z4Pezh32OIJ18A5jB9F1ZJtYB+8wOsQ6oO3YYStUh7mDPjrIOujt2AfHQW+2jxs7JzqOMDpEh1wHtB2NvMLc4WjlFaSDr4PezmY+Rno28xnmDuPRQTr0Zgzr4B1Gh+iQHarDbgyLRwdbR7YdDb/C6BAdch30lvvwteNgWsE7jA7RITtUh7kOcTuOqRWkg6+D3o7D6Djo7TiOjoPequenen6q52f2/LQ4bInjedDbedA/qx4NNNZLrJdcL7VenrXG8/u93yf8+cU4vjj25rlpz5fn/4vzG44RPL/I84tjwn96ftVvOH/654/ffXf8y5t3oOf70j/+/ON3f/vnN3/4279++OHbb/73zz/86/ym//nHn/92vv7zzz8+//U50d/97T+fr8+C//X9D98d6adv+enH+z+qMXT/tKbYVUBSXi3hOXeFMPlIgZG9CSH5poC9PIiZtivYQwYlyl8exHFEnxV8vp2F8fIg5NHb8Ix+lXB5fR5UeiaHun2ohFd2ifGYHytx7Y4Plxj6uEr4x+Yi07tEzvhsiXo8Plji2qkl+qESZXKV8A9tRejorYhnv35sK3JcW5Efms546NWmD/vYTp3zmos558fm4vG45sLs8wOpj5XIayse9aE9EvKoy3oqHyzhlNCPlYhrIM9T+g/uEbn2iPjHSkh9cqfKQ3or5BHx5i1gvlqixuWLCnvzRiQ/fxPQuqkx+9Cab1rkd2zE83y/e12f59tXied52M9K2O17uvVANJyBPE91Xt4Mv/aIeti7c2F6V+NBjaRJ6ucnJ2Y30/mwPjzrEW9G4j9/Yz/G+16NzOjNyHpzcvCrGuP9GnadJLlwbOn4xWTE3X6tfm9/XpPp+zXy5hh/Xmv3MS5vrPO7atijt+P5mUK9X2O+X2N6v5fM8bEKgoKf3fr+SFxuztiKU7YazKjMjwwkx8d2ax5Xb/v02R7vD+TmABVOMp6fhrx/aPj47C55scLNXNxVeHmn1qd36u10To7wqe9P5639Zm+FjrdvJr+w35C72RhXxz+nY3Js5ON3FMnrRON5vvCI94q8+m4QbMZzdn+2GTdTOqUrPD/n5LTtuMz5WYm7g+P5yeblrvB3t+Km1xwJ15th/Pw9beTd9VVdlyU6354j/LzEzfEZybljer1b4m4rQq9LtLDx6RJvLhR/V4msq8T8WAnOl57xYwOpx5tLtPf3SNxdd19T4fHeURHj00dFxKePituteO2oeLnE+0fFfYmXjorbEq8dFbclPn9UzJDr3Wy+64q4fTPD3uPdAyvv3oiedxcubWq8e+KZN1MRXJ7l+1eqeTOQ8j40a75/oZo3TerPE/kWr95c7OadN+cl73zcfDp2VyP5nDDHrE/XePth4++qUdf5WtZ8fLCGzatGfkGNj27H2/l45MeODxvXOZvdfKpzW2NcF84e4/3PISo/f4zd1Xh1397XeG3fvlzjo9vxYr+8WuPu+Hi5xl3P3fn8cX2uMt7/oGvenoBKcgaq/v5noPP2bcGFixzX+uC2aIxrW0ze/8Rr3n3WFDauz6tGfbBGzKvGzcfs96Ox6+P+Zx7vH63ykLuPzh55vVPd3P24LTK5CzOfe/wLiujjw0WuQ1bsbjifPzd9Xl9++uT0NwbD55r6eL8Bb0+HdHAVOf3d0yF5zNtj/jpG9M0Hm/F6Ce4VzpkfLYEDHh/cjArOyz64GTXisyUmHvrwSJ4efPtBx4eL1FXk7efev7OIfkGR6xbq8/vGh4vIK0VuPzIxvzbE6t2PTETlTiCP4J7yWzf/4gMkUb27IONW1ZsrumG/KHHzSX5ex0hJvXcrQNQ/fy9AdHz+ZoBofPZugGh+/naA3N1sevV+wP2WvPgJttzdcXr1I2wx+exn2LclXv0IWu5uOr34GfT9hLz4IfRt28V13V1vTjR/1XZ39yeeJ71xHSJvTiB+2Xj2+Y9Nn476/EmIff6D09drvP8Z2W/UeOlDsvsar31Kdl/jtY/J7o8Ptev40HhfzP4FJ6n+BSep/vmPUF+vcXN8+Oc/RL2v8eLx4eP/+PiwR3C7+N17+DLs88fH3R2oV4+P2+148fh4ucbN8XFf47Xj47bGi8fHbY0vOT6uC7Kn//Xd4yPk88dH6OePj9vtePH4eLnGzfFxX+O14+O2xovHx22Nrzg+XK+Lfn+zFOlXx8f8/PGRjy84PuYXHB/zC46P+QXHx/yC42P+Xx8f16WlDHm8e3zkF5yf5hecn+YXnJ/mF5yf5hecn+YXnJ/m//X5aXEbtvz989P7GnW9R82bY6zi8/dy5fYG1Us3c6Xqs3dzpebnb+c+L2E/f6/ttsirN6heLnJ3d+m+yIu3/X6jyGv3/V4v8uEtefGu3f1x8uJt3fsiL97XlTm/4mCbX7GL51fs4vkVu3h+Re/MLzhOXi5y14B3Xnvt/q4+8itu8OqjvuIO729szau3eFUen7/H+xtFXrvJ+xsDevUu7/kbDJ+9y3tb5NW7vK8X0ceHi7x0l1fl8yew5y/JfPIE9jcG89pd3vszpRdv8+rdbavXbvPelnjtNu9vlHjpNu9vjOSV27z3JV66zXs/ktdu897WePU2728Veek2728V0S8o8tpt3t8q8tJt3tvbPCJMrL4R0a/vr94V4axe3t5Q/GURvf1VqeuGc765F2C/KjFut4P2D33XQ3ebUdcvLJT7zWbclbgO+HrzuwK/q8QMjo+H3NS4+4gkB7/FXPa+DP3x+XvWevfbUq/ds1bXz9+zVrfP37O+35IX71nr7a8rvXjPWu/uW712z/q2xKv3rPULfm/qfkK+4p7181T3Ery9/SXa3yUzu05Ynx8gv7/iRMfdQfKY10Hy9kj7xcc+Or7g9091fMEvoOr49G+g6viCX0HV8QW/g3q/Ja/275hf0L/x+HT/xuML+vfu/tWr/Xs7IS/37+3NOL9OAp453v2NQ737DR49Psy/mm/4eL/K7Qe3uKTi7TWN/55N4SP1Z35zQvGrTanbc3C9LklGvNlDv/xtztt3nOtJCZJvrn1/saBP725kPS+v+Hji2alvfxvzF3LM23uM12dQPxuN/Z4tCU7Dn5PnN1tyo1gNXBA139V0fsHSQM0vWBqo+emlgZpfsDRQ8wuWBt4XefFZAefHF580bH2FYesLDHu7a+L6oEbf3ln79Yb4V8zq+PysfvoX/u+P9lnX0T4+eLS/eipQX3EqMD9/oN6WuD7bnBofK/HysT4/v4L1fk5fPJv4rfeI6xCR56H0eP89Yt4eZ717/c3H+r98QNxvbAlPA5OnKOJmS25/XzKuBZPPPOzds4k5v+Bs4je2JUdxD+jN5+C/qGK3v9rz5o3i7aKF1x/f92zhBy2s753W2OPmiDV7XAtBzOTNbaRfjeW2irlcVexNG/+qyviCvfNb23I9uuO5WSPer3KnR7+O2uc15ocez1jnu9EazXOLKXE8zOSPzy///Nfvf/z5g4/PB9Qez8nNY43A8ZTd/TrX6/Gs0+Mzy+NRp+er7lc79vq369mZuh+eafvpmbYfnzn38zPnfoDm+aDW/Sr7Vfer7Vffr2O/xn7d9WzXs13Pdz3f9XzX813Pdz3f9XzX813Pdz3f9cauN3a9seuNXW/semPXG7ve2PXGrjd2vdj1YteLXe94oOqxIu94nur5Ovbr8Vzc53weD1M9X2u/zvWaj/0q6/uPZ62er7ve+dze49/Hft31ctfLXS93vdr1aterXa92vdrbV3v7aterXa92vdr15q53PGr1fNX9avt1b9/c9Y7n+J6vuV9rv871Ko9dUB7SQTtYB+8wOkSH7FAduvLxtOYVpIN2sA5dWbqydGXpytKVZc/BekK49iPCtZ8Rrv2QcOmnhEs/Jlz6OeHSDwqXflK49qPCtZ8Vrv2wcO2nhWs/Llz388JX6G223mbrylYdeja8Z8N7Nrwre1f2ruxd2buy92x4b7P3No/e5tGVR8/z6NkYPRujZ2N05dGVR1ceXTm6cvRsRG9z9DZHb3N3mETPc/RsRM9G9Gx0m0l25ezK2ZW71aR7TbrZpLtNut3OZ5+flavnuTtOuuWke+589vn5U9WVu+2k+0668aQ7T7r1pHtPuvnO56OflWfPc/efdANKd+D5fPT1U7uydg9q96B2D2r3oHYPavegdg+eT0w/Kp9PTF9hz4Z2D2r3oEpXlq7cPajdg9o9qN2D2j2o3YPaPXg+Vf2srNrBOniH0aEra1fuHtTuQe0e1O5B7R7U7kHtHjyfs35WtujQs9E9qN2D6l3Zu3L3oHYPavegdg9q96B2D2r3oHpXHj3P3YPaPajdgzq68ujK3YPaPajdg9o9qN2D2j2o3YPa73Hab3LaPajdg9o9qP1Gp/1Op92D2j2o3YPaPajdg9o9qN2D60n10o+ql35WvfTD6qWfVi/9uHrt59VrP7Be+4n12o+s135mvfZD67WfWq/7sfUrdOXZ89w9qN2D2j14Psx+/VRX7h7U7kHrHrTuQesetO5B6x48H3l/VLZHdMgO1WHPhklXlq7cPWjdg9Y9aN2D1j1o3YPWPXg+KP+srI8O0kE7WIeurF25e9C6B6170LoHrXvQugete9CsK5t36NnoHrTuwfMR/OununL3oHUPWvegdQ9a96B1D1r34PmY/rOy9zx3D1r3oHUPno/pP39qdOXuQesetO5B6x607kHrHrTuQYuuHD3P3YPWPWjdg9anmtbnmtY9aN2D1j1o3YPWPWjdg9Y9eD7c/6ycPc/dg9Y9aN2D1iee58P9V+jK3YPWPWjdg9Y9aN2D1j14Pu7/rDx7nrsHrXvQugetT0NtduXuQesetO5B6x707kHvHvTuQX/syv7wDqNDdMgO1T/VlbsHvXvQuwe9e9C7B7170LsHXbqyVIc9G9496N2D3ueirl25e9C7B7170LsHvXvQuwe9e9CtK5t26NnoHvTuQe9zUbeu3D3o3YPePejdg9496N2D3j3o3pW957l70LsHvXvQ+1zUR1fuHvTuQe8e9O5B7x707kHvHvTRlaPnuXvQuwe9e9D7XNS7B73fB73fB7170Ptc1LMr9zWfdw9696B3D3q/D/rZg36Eo3IeoTrMHc4ePIN00A7WwTuMDtGhK1dXrq48u/LsyrMrz648u/LsyrMrz648u/Lclcfj0UE6aAfr4B1Gh+iQHapDV5auLF1ZuvLZg+enAt5hdIjjY54jZIfqMHc4enAF2T919uAZuvLRg+t7RoeurF1Zu7J2ZevK1pWtK1tXtt5m6222rmxd2bqydWXvykcPrqAdrENvs3flswfPkB2qw9xhdOXRlUdXHl15dOXRszF6m0dv8+htHl357MEz9GxEz0b0bERXjq4cXTm6cnTl6NnI3ubsbc7e5uzK2fOcPRvZs5E9G9mVsytXV66uXF25ejaqt7l6m6u3ubpy9TxXz8bs2Zg9G7Mrz648u/LsyrMrz56N2ds89zbH49FhV46HdrAO3mF0iP6p7FAdurJ0ZZEO2sE6eIeuLNEhO1SHPRvRPRjalbUra1fuHozuwegejO7B6B4M7cr26NCz0T0Y3YNhXdm6cvdgdA9G92B0D0b3YHQPRvdgeFf2nufuwegejO7B8K7sXbl7MLoHo3swugejezC6B6N7MEZXHj3P3YPRPRjdgxFdObpy92B0D0b3YHQPRvdgdA9G92BkV86e5+7B6B6M7sHIrpxduXswugejezC6B6N7MLoHo3swqitXz3P3YHQPRvdgzK48u3L3YHQPRvdgdA9G92B0D0b3YMxdOR+PDtJBO1iHXTkfo0N0yA7VYc9Gdg9m92B2D2a/D2a/D2b3YHYPZvdg9vtg9vtgdg9m92B2D2b3YHYPZvdgdg+mdmWtDj0b3YPZPZjWla0rdw9m92B2D2b3YHYPZvdgdg+md2Xvee4ezO7B7B5M78relbsHs3swuwezezC7B7N7MLsHc3Tl0fPcPZjdg9k9mNGVoyt3D2b3YHYPZvdgdg9m92B2D2Z05ex57h7M7sHsHszsytmVuwezezC7B7N7MLsHs3swuwezunL1PHcPZvdgdg9mdeXqyt2D2T2Y3YPZPZjdg9k9mN2DObvy7HnuHqzuweoerMeuXA/r4B1Gh+iQHarD3ubqHizpyqIdrIN3GB26cp+LVvdgdQ9W92B1D1b3YHUPVvdgaVfW6JAdqkPPRp+LlnXl7sHqHqzuweoerO7B6h6s7sGyruw9z92D1T1Y3YPV56LlXbl7sLoHq3uwugere7C6B6t7sEZXHj3P3YPVPVjdg9XnojW6cvdgdQ9W92B1D1b3YHUPVvdgRVeOnufuweoerO7B6nPRyq7cPVjdg9U9WN2D1T1Y3YPVPVjVlavnuXuwugere7D6XLSqK3cPVvdgdQ9W92B1D1b3YHUP1uzKs+e5e7C6B6t7cPa56HxIB+1gHbzD6BAdskN16Mry6CAdtIN16Mrdg7PfB2e/D87uwdnnolO7cl8Pzu7B2T04uwdnvw/O831Qj3Bs8/lT1WHucPbgGaSDdrAO3mF0iA5d2bqydWXvyt6VvSsfPXj8ctQ8enCF0SE6ZIfqMHc4enAF6aAduvLoyqMrj648uvLoykcPHr+3OI8eXEE6aAfr4B1Gh+iQHarDUbmOu9WPDscfXfYjaAfr4B1Gh+iQHarD3OHowRW6cnXl6srVlasrV1c+/wzq8Yuq8/w7qCvNTudfQl1Jzt+oO5Jeya7kVxpXiivllepKc6fnDfsHUYhKNKITBzGISSwiNIEm0ASaQBNoAk2gCTSBJtAUmkJTaApNoSk0habQFJpCM2gGzaAZNINm0AyaQTNo558ePn43Th7nHx/eUYgH7VhB/oxGdOIgBjGJRZxXPP9o8Y5ChDagDWgD2oA2oA1oA1pAC2gBLaAFtIAW0AJaQAtoCS2hJbSEltASWkJLaOdfUj+WvT3jvOL519R3PGjn8q3H+RfVdzSiEwcxqJBEaKdB1veeCtkR2oQ2oU1oE9qENqFNaPMa27n6p+NFO1cAdTSiEwcxiEks4jW2c0XQpp0u2VGJRnQiNIEm0ASaQNMHkbEpY1PGptBOl+wYxCQWEZpBM2gGzaAZM2mMzRibMTaDZuw3ZyadmXRm0qE5NIfm0ByaM5PO2AZjG4xtQBvst8FMDmZyMJMD2oA2oAW0gBbMZDC2YGzB2AJasN+CmQxmMpnJhJbQElpCS2jJTCZjS8aWjA2XSLHfipksZrKYSVwiBa2gFTRcIrhEcIngEsElMqFN9hsuEVwiuETmRdPHgyhEJRrRiYMYxCReNH1c+01xieISxSUq0AQaLlFcorhEcYniEsUliktUoakRnTiIQYSm0HCJ4hLFJYpLFJcoLlFcogbNkshM4hLFJerQHBouUVyiuERxieISxSWKS3RAG+w3XKK4RHGJDmgDGi5RXKK4RHGJ4hLFJYpLNKAF+w2XKC5RXKIBLaHhEsUliksUlyguUVyiuEQ5L1HOSxSXKC5RXKKclyjnJYpLFJcoLlFcorhEcYniEp3QJvsNlyguUVyiE9qEhksMlxguMVxiuMRwieESe1w0eySxiNdMGi4xgSbQcInhEsMlhksMlxguMVxiCk2FqEQjOhGaQsMlhksMlxguMVxiuMRwiRk0G0RmEpcYLjGD5tBwieESwyWGSwyXGC4xXGIOzdlvuMRwieESG9AGNFxiuMRwieESwyWGSwyXWEAL9hsuMVxiuMQCWkDDJYZLDJcYLjFcYrjEcIkltGS/4RLDJYZLjGsc4xrHcInhEsMlhksMlxguMVxiE9pkv+ESwyWGS4xrHJvQcInhEsMljksclzgucVzij4vmj0EMYhKLCE2g4RLHJY5LHJc4LnFc4rjEBZpc+81xieMSxyXONY4rNFziuMRxieMSxyWOSxyXuEEzIzKTuMRxiXON4wYNlzgucVziuMRxieMSxyXu0Jz9hksclzguca5xfEDDJY5LHJc4LnFc4rjEcYkHtGC/4RLHJY5LnGscD2i4xHGJ4xLHJY5LHJc4LvGEluw3XOK4xHGJc43juMQ5L3HOSxyXONc4XtD4vMRxieMSxyXOeYkvl/gZT1qe0YhOHMQgJrGIs+NYLllRiEo0ohMHMYhJLCI0gSbQBJpAE2gCTaAJNIEm0BSaQlNoCk2hKTSFptCWS+YZ5xWXS1Y8aONxRiUa0YmDGFRIIrTTJet7T5fsCM2hOTSH5tAcmkNzaM7YBmMb0Aa0AW1AG9BOl+yYxCIytoC2XLKiEo3oRGgBLaAFtICWzGQytmRsydgS2nLJisxkMpPJTCa0glbQClpBK2ayGFsxtmJsBa3Yb5OZnMzkZCYntAltQpvQJrTJTM5rbOcqv45CvGjxMKITBzGISYUiQhNoAk2UaEQnDiI0SWIRr5kMfRChKTSFptAUmgaRsSljU8aGS8KEyEwaM2nMJC45Vwt2hGbQcEngksAlgUsCl4RDc/YbLglcErjkXEe4KwxouCRwSeCSwCWBSwKXBC6JAW2w33BJ4JLAJecaw10hoOGSwCWBSwKXBC4JXBK4JBJast9wSeCSwCXn+sOuAA2XBC4JXBK4JHBJ4JLAJVHQiv2GSwKXBC451ybuChMaLglcErgkcEngksAlgUvycdHyIUQlGtGJgwpBTGIRoeGSxCWJSxKXpECTQQxiEosITaHhksQliUsSlyQuSVySuCQ5L0nOSxKXJC5JXJKclyTnJYlLEpckLklckrgkcUniknRozn7DJYlLEpecayG7AjRckrgkcUniksQliUsSl+SANthvuCRxSeKSc53krhDQcEniksQliUsSlyQuSVySCS3Zb7gkcUniknMNZVeAhksSlyQuSVySuCRxSeKSLGjFfsMliUsSl5zrK3eFCQ2XJC5JXJK4JHFJ4pLEJTmhzWu/FS4pXFK45Fx7uSqcqy87DmIQk1jEa2yFSwqXlEATIzpxEIMITaDhksIlhUsKlxQuKVxSuKQUmiaxiMwkLimucYprnMIlhUsKlxQuKVxSuKRwSTk0Z7/hksIlhUuKa5xzRWdHaLikcEnhksIlhUsKl9SANthvuKRwSeGS4hrnXO3ZERouKVxSuKRwSeGSwiUV0IL9hksKlxQuKa5xzpWgHaHhksIlhUsKlxQuKVxSBa3Yb7ikcEnhkuIa51wl2hEaLilcUrikcEnhksIlNaFN9hsuKVwyccnkGudcQdrRiE4cxCAmsYjX2KZAEyEq0YhOhCbQcMnEJROXTFwyccnEJROXTIWmgxjEJBYRGi6ZnJdMzksmLplc40yDxuclE5dMXDJxyeS8ZK7zEj3jObZxRiM6cRCDmMQizisul6woRGgD2oA2oA1oA9qANqAFtIAW0AJaQAtoAS2gBbSAltASWkJLaAktoSW0hLZckmecV1wuWfGk1RmVaEQnDmJQIYnQlkvO710uWRHahDahTWgT2oQ2oU1os8ema93rjk3Tte51RyM6cRCDmMQizisKtHVesqISjehEaAJNoAk0gaYPImNTxqaMTaGt85IVg5jEIkIzaAbNoBk0YyaNsRljM8Zm0Iz95sykM5POTDo0h+bQHJpDc2bSGdtgbIOxDWiD/TaYycFMDmZyQBvQBrSAFtCCmQzGFowtGFtAC/ZbMJPBTCYzmdASWkJLaAktmclkbMnYkrEVtGK/FTNZzGQxkwWtoBW0glbQJjM5GdtkbJOxTWiT/TaZyclMTmZyXrS17nVHISrRiE4cxCAm8aKtda8r4hLBJYJL1rrXVUGg4RLBJYJLBJcILhFcIrhkrXtdNDWiEwcxiNAUGi4RXCK4RHCJ4BLBJYJL1rrXRbMkMpO4RHCJODSHhksElwguEVwiuERwieASGdAG+w2XCC4RXLLWve4K0HCJ4BLBJYJLBJcILhFcsta9Llqw33CJ4BLBJWvd66qQ0HCJ4BLBJYJLBJcILhFcIgkt2W+4RHCJ4BIpaAUNlwguEVwiuERwieASwSVr3euiTfYbLhFcIrhkrXvdFaDhEsUliksUlyguUVyiuGStez1pa93rjkW8ZlJxyVr3uioINFyiuERxieISxSWKSxSXrHWvi6ZCVKIRnQhNoeESxSWKSxSXKC5RXKK4ZK17XTQbRGYSlyguWeteVwWHhksUlyguUVyiuERxieKSte510Zz9hksUlyguWeteV4UBDZcoLlFcorhEcYniEsUla93rogX7DZcoLlFcsta97grQcIniEsUliksUlyguUVyy1r0uWrLfcIniEsUlWtAKGi5RXKK4RHGJ4hLFJYpL1rrXRZvsN1yiuERxiU5oExouUVyiuMRwieESwyWGS9a615O21r3uGMQkFhGaQMMlhksMlxguMVxiuMRwyVr3umhy7TfDJYZLDJcY1zhr3euO0HCJ4RLDJYZLDJcYLlnrXhfNjMhM4hLDJcY1zlr3uiM0XGK4xHCJ4RLDJYZL1rrXRXP2Gy4xXGK4xLjGWeted4SGSwyXGC4xXGK4xHDJWve6aMF+wyWGSwyXGNc4a93rjtBwieESwyWGSwyXGC5Z614XLdlvuMRwieES4xrHcIlxXmKclxguMa5x1rrXHaHhEsMlhkuM85K17vX4W1i61r0ef6VV17rXHZ04iEFMYhFnx7XudUchKtGIThzEICaxiNAEmkATaAJNoAk0gSbQBJpAU2gKTaEpNIWm0BSaQjtdcvwNLF3rXlc8XbLjSYszKtGIThzEoEISoZ0uWd97umRHaA7NoTk0h+bQHJpDc8Y2GNuANqANaAPagHa6ZMckFpGxBbTTJTsq0YhOhBbQAlpAC2jJTCZjS8aWjC2hnS7ZkZlMZjKZyYRW0ApaQStoxUwWYyvGVoytoBX7bTKTk5mczOSENqFNaBPahDaZyXmNba173VGIF22te93RiYMYxKRCEaEJNIEmSjSiEwcRmiSxiNdMrnWvO0JTaApNoSk0DSJjU8amjA2XrHWvOzKTxkwaM4lL1rrXHaEZNFwycMnAJQOXDFyy1r0umrPfcMnAJQOXrHWvq8KAhksGLhm4ZOCSgUsGLhm4ZK17XbTBfsMlA5cMXLLWva4KAQ2XDFwycMnAJQOXDFwycMla97poyX7DJQOXDFyy1r3uCtBwycAlA5cMXDJwycAlA5esda+LVuw3XDJwycAla93rqjCh4ZKBSwYuGbhk4JKBSwYuWeteT9pa97qjEo3oxEGFICaxiNBwSeCSwCWBS9a610WTQQxiEosITaHhksAlgUsClwQuCVwSuCQ4LwnOSwKXBC4JXBKclwTnJYFLApcELglcErgkcEngkrXuddGc/YZLApcELlnrXncFaLgkcEngksAlgUsClwQuWeteF22w33BJ4JLAJWvd66oQ0HBJ4JLAJYFLApcELglcsta9Llqy33BJ4JLAJWvd664ADZcELglcErgkcEngksAla93rohX7DZcELglcsta9rgoTGi4JXBK4JHBJ4JLAJYFL1rrXRZvXfktckrgkccla93pWWOtedxzEICaxiNfYEpckLlnrXhdNjOjEQQwiNIGGSxKXJC5JXJK4JHFJ4pK17nXRNIlFZCZxSXKNk1zjJC5JXJK4JHFJ4pLEJYlL1rrXRXP2Gy5JXJK4JLnGWeted4SGSxKXJC5JXJK4JHHJWve6aIP9hksSlyQuSa5x1rrXHaHhksQliUsSlyQuSVyy1r0uWrDfcEniksQlyTXOWve6IzRckrgkcUniksQliUvWutdFK/YbLklckrgkucZZ6153hIZLEpckLklckrgkccla97pok/2GSxKXFC4prnHWutcdjejEQQxiEot4jW2te100EaISjehEaAINlxQuKVxSuKRwSeGSwiVr3eui6SAGMYlFhIZLivOS4rykcElxjbPWve4IDZcULilcUpyXrHWvx9+e1rXu9fi73brWve7oxEEMYhKLOK94umRHIUIb0Aa0AW1AG9AGtAEtoAW0gBbQAlpAC2gBLaAFtISW0BJaQktoCS2hJbTTJcffFda17nXF0yU7njQ/oxKN6MRBDCokEdrpkvW9p0t2hDahTWgT2oQ2oU1oE9q8xrbWve540da61x2N6MRBDGISi3iNba17XbTTJTsq0YhOhCbQBJpAE2j6IDI2ZWzK2BTa6ZIdg5jEIkIzaAbNoBk0YyaNsRljM8Zm0Iz95sykM5POTDo0h+bQHJpDc2bSGdtgbIOxDWiD/TaYycFMDmZyQBvQBrSAFtCCmQzGFowtGFtAC/ZbMJPBTCYzmdASWkJLaAktmclkbMnYkrHhkrXudUdmspjJYiZxyVr3uiO0goZLJi6ZuGTikolL1rrXRZvsN1wyccnEJWvd61HB1rrXHYWoRCM6cRCDmMSm2Vr3uuLlEntcLrHH5RJb615XBYEm0ASaQLtcYg9hbMrYlLEpNDWiEwcxiNAUmkIzaAbNmEljbMbYjLEZNEsiM2nMpDOTDs2hOTSH5tCcmXTG5ozNGduANthvg5kczORgJge0AW1AG9AGtGAmg7EFYwvGFtCC/RbMZDCTwUwGtISW0BJaQktmMhlbMrZkbAkt2W/FTBYzWcxkQStoBa2gFbRiJouxTcY2GduENtlvk5mczORkJie0CQ2XCC4RXCK4RHCJ4BLBJWvd60lb6153LOI1k4JL1rrXVUGg4RLBJYJLBJcILhFcIrhkrXtdNBWiEo3oRGgKDZcILhFcIrhEcIngEsEla93rotkgMpO4RHDJWve6Kjg0XCK4RHCJ4BLBJYJLBJesda+L5uw3XCK4RHDJWve6KgxouERwieASwSWCSwSXCC5Z614XLdhvuERwieCSte51V4CGSwSXCC4RXCK4RHCJ4JK17nXRkv2GSwSXCC6RglbQcIngEsElgksElwguEVyy1r0u2mS/4RLBJYJLZEKb0HCJ4BLBJYpLFJcoLlFcsta9nrS17nXHICaxiNAEGi5RXKK4RHGJ4hLFJYpL1rrXRZNrvykuUVyiuEQVmkLDJYpLFJcoLlFcorhEccla97poZkRmEpcoLlGDZtBwieISxSWKSxSXKC5RXLLWvS6as99wieISxSU6oA1ouERxieISxSWKSxSXKC5Z614XLdhvuERxieISDWgBDZcoLlFcorhEcYniEsUla93roiX7DZcoLlFcogkNlyjnJcp5ieISLWgFraDhEsUlikuU85K17jXjjCdtntGIThzEICaxiLPjWve6oxCVaEQnDmIQk1hEaAJNoAk0gSbQBJpAE2gCTaApNIWm0BSaQlNoCk2hnS45/iCLrXWvK54u2fGglZ5RiUZ04iAGFZII7XTJ+t7TJTtCc2gOzaE5NIfm0ByaM7bB2Aa0AW1AG9AGtNMlOyaxiIwtoJ0u2VGJRnQitIAW0AJaQEtmMhlbMrZkbAntdMmOzGQyk8lMJrSCVtAKWkErZrIYWzG2YmwFrdhvk5mczORkJie0CW1Cm9AmtMlMzmtsa93rjkK8aGvd645OHMQgJhWKCE2gCTRRohGdOIjQJIlFvGZyrXvdEZpCU2gKTaFpEBmbMjZlbLhkrXvdkZk0ZtKYSVyy1r3uCM2g4RLHJY5LHJc4LlnrXhfN2W+4xHGJ45K17nVVGNBwieMSxyWOSxyXOC5xXLLWvS7aYL/hEscljkvWutdVIaDhEscljksclzgucVziuGSte120ZL/hEscljkvWutddARoucVziuMRxieMSxyWOS9a610Ur9hsucVziuGSte10VJjRc4rjEcYnjEscljkscl6x1rydtrXvdUYlGdOKgQhCTWERouGTgkoFLBi5Z614XTQYxiEksIjSFhksGLhm4ZOCSgUsGLhm4ZHBeMjgvGbhk4JKBSwbnJYPzkoFLBi4ZuGTgkoFLBi4ZuGSte100Z7/hkoFLBi5Z6153BWi4ZOCSgUsGLhm4ZOCSgUvWutdFG+w3XDJwycAla93rqhDQcMnAJQOXDFwycMnAJQOXrHWvi5bsN1wycMnAJWvd664ADZcMXDJwycAlA5cMXDJwyVr3umjFfsMlA5cMXLLWva4KExouGbhk4JKBSwYuGbhk4JK17nXR5rXfApcELglcsta9nhXWutcdBzGISSziNbbAJYFL1rrXRRMjOnEQgwhNoOGSwCWBSwKXBC4JXBK4ZK17XTRNYhGZSVwSXOME1ziBSwKXBC4JXBK4JHBJ4JK17nXRnP2GSwKXBC4JrnHWutcdoeGSwCWBSwKXBC4JXLLWvS7aYL/hksAlgUuCa5y17nVHaLgkcEngksAlgUsCl6x1r4sW7DdcErgkcElwjbPWve4IDZcELglcErgkcEngkrXuddGK/YZLApcELgmucda61x2h4ZLAJYFLApcELglcsta9Ltpkv+GSwCWJS5JrnLXudUcjOnEQg5jEIl5jW+teF02EqEQjOhGaQMMliUsSlyQuSVySuCRxyVr3umg6iEFMYhGh4ZLkvCQ5L0lcklzjrHWvO0LDJYlLEpck5yVr3Wv5GQ/aPCucLtnRiYMYxCQWcV7xdMmOB23aGZVoRCcOYhCTWMR5xdMlO0ILaAEtoAW0gHa6ZNYZi8jYkrGdLtmRmUxmMpnJZCaTmUxmMpnJhFbQClpBK2gFraAVYytmspjJYiYnMzmZyclMTmZyMpOTmZzQJrQJbV60te51RyFqz/pa93qOYq173XEQg5jEIl4zuda97ihEJUITaAJNoAk0gSbQlLEpY1MlGtGJgxjEJBaRmTRoBs2gGTSDZtBOl6xZP1zyvMd2xiLOKx4u6ShEJRrRiYMYR4wzJrGI84rjQRSiEo3oxEGENqANaANaQAtoh0ueN/fOaMSDJvOMgxjEJBZxXvFwSUchKtGI0BJaQktoCS2hFbSCVtAKWkEraAWtoBW0gjahTWgT2oQ2oU1oE9qENqHNi3aue+0oRCUa0YmDGMQkFhGaQBNoh0ued0zPeNAszujEQQxiEos4r3i4pKMQlQhNoSk0habQFJpCM2gGzaAZNINm0AyaQTNoBs2hOTSH5tAcmkNzaA7NoTm0Ae10iZ/77XTJjkZ04iAGMYlFnFc8XbIjtIAW0AJaQAtoAS2gBbSEltASWkJLaAktoSW0hJbQClpBK2gFraAVtIJW0ApaQZvQJrQJbUKb0Ca0CW1Cm9Bm0/xc99pRiEo0ohMHMYhJLCI0gSbQBJpAE2gCTaAJNIEm0BSaQlNoCk2hKTSFptAUmkIzaAbNoBk0g2bQDJpBM2gGzaE5NIfm0ByaQ3NoDs2hObQBbUAb0Aa0AW1AG9AGtAFtQAtoAS2gBbSAFtACWkALaAEtoSW0hJbQElpCS2gJLaEltIJW0ApaQStoBa2gFbSCVtAmtAltQpvQJrQJbUKb0CY0XCK4RHCJ4BLBJYJLBJcILhFcIrhEcIngEsElgksElwguEVwiuERwieASwSWCSwSXCC4RXCK4RHCJ4BLBJYJLBJcILhFcIrhEcIngEsElgksElwguEVwiuERwieASwSWCSwSXCC4RXCK4RHCJ4JJz3asOOeNBOx4P5ee6145OPGiRZzxosSok8aDV+t55xdMlOwrxoE0/oxEP2jwRh0vsuH7zc91rxzyinrGOuH5sXvFwiR2XUX6ue+2oR6yfvv3mf//84/d//ssP3/3PN3/49/PL//rX3/76z+///rf95T//3z/6X/7y4/c//PD9f//pHz/+/a/f/ee/fvzuTz/8/a/Hv33zOP5zHPv/IfGtyh+f3yz7//+HjvxWM/74fI8//v25pc9+eH51frva/Fbdjy/l+NLrWx2P4+e1f/55VHzrpvvndTy/I6p//nm69+3zzbx//vn+8Pwyjp+34+ePn7Djx/v7/fnv8/hn//UWj/4J9W/Nr594fOvj+Oe4fkLluQnH/0qKPMeof/zpp5/++NP/Bw==",
3869
3869
  "verification_key": "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"
3870
3870
  },
3871
3871
  {
@@ -4117,7 +4117,7 @@
4117
4117
  }
4118
4118
  },
4119
4119
  "bytecode": "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",
4120
- "debug_symbols": "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DXQwQGwFW8FWsBVsBVvBVrAVbAVbwSbYBJtgyxE7nrHW7KKb2EADHQywL8yz/3jqWbOLbqKA9Tp+a7bOTTTQwQD7whzdFxZQQAWxVWwVW8VWsVVsDVvD1rA1bA1bw9awNWwNW8Nm2AybYTNshs2wGTbDZtgMm2NzbI7NsTk2x+bYHJtjc2yBLbAFtsAW2AJbYAtsgS2wdWwdW8fWsXVsGSDj2XjN1rmJDg5bnP9tn5itcxOHbTxrrtk6N3HYxsPomq1zExuYNkt0MMC+MAPkwgIKqGAFG4itYCvYCjbBJtgEm2ATbIJNsAk2wSbYFJtiU2yKTbEpNsWm2BSbYqvYKraKrWKr2Cq2iq1iq9gqtoatYWvYGraGrWFr2Bq2hq1hM2yGzbAZNsNm2AybYTNshs2xOTbH5tgcm2NzbI7NsTm2wBbYAltgC2yBLbAFtsAW2Dq2jq1j69g6to6tY+vYOra+bHIcYAEFVLCCDTTQwQCxkSVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKluiZJZ7oYIBpe8xS1XpmyYkFHLbRflrPXssLK9jAYRudqPXstRwNofXstRytn/XstTwxs+TCAgqoYAUbaKCD2DJLxmt76tlreWEBBVSwgg000MEAsSk2xZZZMl5qVM8WzQsr2EADHQywL8wsubCA2Cq2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"
4120
+ "debug_symbols": "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"
4121
4121
  },
4122
4122
  {
4123
4123
  "name": "public_dispatch",
@@ -4181,7 +4181,7 @@
4181
4181
  }
4182
4182
  },
4183
4183
  "bytecode": "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",
4184
- "debug_symbols": "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"
4184
+ "debug_symbols": "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"
4185
4185
  },
4186
4186
  {
4187
4187
  "name": "sync_private_state",
@@ -4339,7 +4339,7 @@
4339
4339
  }
4340
4340
  },
4341
4341
  "bytecode": "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",
4342
- "debug_symbols": "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"
4342
+ "debug_symbols": "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"
4343
4343
  }
4344
4344
  ],
4345
4345
  "outputs": {
@@ -4831,31 +4831,31 @@
4831
4831
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/state_vars/public_mutable.nr",
4832
4832
  "source": "use crate::context::{PublicContext, UtilityContext};\nuse crate::state_vars::state_variable::StateVariable;\nuse dep::protocol_types::traits::Packable;\n\n/// # PublicMutable\n///\n/// PublicMutable is a public state variable type for values that can be read\n/// and written within #[external(\"public\")] functions of your smart contract.\n///\n/// You can declare a state variable of type PublicMutable within your contract's\n/// #[storage] struct:\n///\n/// E.g.:\n/// `your_variable: PublicMutable<T, Context>`\n/// or:\n/// `your_mapping: Map<Field, PublicMutable<T, Context>>`\n///\n/// The methods of PublicMutable are:\n/// - `read`\n/// - `write`\n/// (see the methods' own doc comments for more info).\n///\n/// ## Example.\n///\n/// A voting contract's proposal count can be represented as a PublicMutable<u64>.\n/// The count can be read by anyone to see how many proposals exist, and incremented\n/// when new proposals are submitted.\n///\n/// # Generic Parameters:\n///\n/// * `T` - The type of value stored (must implement Packable).\n/// * `Context` - The execution context (PublicContext or UtilityContext).\n///\n/// # Advanced\n///\n/// Unlike private state variables which use notes, PublicMutable stores values\n/// directly in Aztec's public data tree. This enables direct read and write\n/// access to the current state during public function execution.\n///\n/// docs:start:public_mutable_struct\npub struct PublicMutable<T, Context> {\n context: Context,\n storage_slot: Field,\n}\n\nimpl<T, Context, let M: u32> StateVariable<M, Context> for PublicMutable<T, Context>\nwhere\n T: Packable<N = M>,\n{\n fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicMutable { context, storage_slot }\n }\n\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl<T> PublicMutable<T, PublicContext> {\n /// Reads the current value stored in this PublicMutable state variable.\n ///\n /// # Returns\n ///\n /// * `T` - The current value stored in this PublicMutable.\n ///\n /// docs:start:public_mutable_struct_read\n pub fn read(self) -> T\n where\n T: Packable,\n {\n self.context.storage_read(self.storage_slot)\n }\n\n /// Writes a new value to this PublicMutable state variable.\n ///\n /// # Arguments\n ///\n /// * `value` - The new value to store in this PublicMutable.\n ///\n /// # Advanced\n ///\n /// This function updates the value stored in Aztec's public data tree.\n /// The new value becomes immediately available to subsequent reads within\n /// the same transaction.\n ///\n /// docs:start:public_mutable_struct_write\n pub fn write(self, value: T)\n where\n T: Packable,\n {\n self.context.storage_write(self.storage_slot, value);\n }\n}\n\nimpl<T> PublicMutable<T, UtilityContext> {\n /// Reads the current value stored in this PublicMutable state variable.\n ///\n /// Notice that this function is executable only within a UtilityContext, which\n /// is an unconstrained environment on the user's local device.\n ///\n /// # Returns\n ///\n /// * `T` - The current value stored in this PublicMutable.\n ///\n pub unconstrained fn read(self) -> T\n where\n T: Packable,\n {\n self.context.storage_read(self.storage_slot)\n }\n}\n"
4833
4833
  },
4834
- "232": {
4834
+ "234": {
4835
4835
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/array/append.nr",
4836
4836
  "source": "/// Appends the elements of the second `BoundedVec` to the end of the first one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append<T, let ALen: u32, let BLen: u32, let DstLen: u32>(\n a: BoundedVec<T, ALen>,\n b: BoundedVec<T, BLen>,\n) -> BoundedVec<T, DstLen> {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec<Field, 5> = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec<Field, 8> = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec<Field, 5> = append(a, b);\n }\n}\n"
4837
4837
  },
4838
- "235": {
4838
+ "237": {
4839
4839
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
4840
4840
  "source": "/// Returns `DstLen` elements from a source array, starting at `offset`. `DstLen` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray<T, let SrcLen: u32, let DstLen: u32>(src: [T; SrcLen], offset: u32) -> [T; DstLen] {\n assert(offset + DstLen <= SrcLen, \"DstLen too large for offset\");\n\n let mut dst: [T; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DstLen to be 0, so we always get back an empty array.\n assert_eq(subarray::<Field, _, _>([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::<Field, _, _>([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n"
4841
4841
  },
4842
- "236": {
4842
+ "238": {
4843
4843
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr",
4844
4844
  "source": "use crate::utils::array;\n\n/// Returns `DstMaxLen` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DstLen` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DstLen` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec<T, let SrcMaxLen: u32, let DstMaxLen: u32>(\n bvec: BoundedVec<T, SrcMaxLen>,\n offset: u32,\n) -> BoundedVec<T, DstMaxLen> {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::<Field, 0>::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n"
4845
4845
  },
4846
- "238": {
4846
+ "240": {
4847
4847
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr",
4848
4848
  "source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ... + 0]\n/// Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields<let N: u32>(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays\n/// are not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte chunks are concatenated\n/// back together in the order of the original fields.\npub fn bytes_from_fields<let N: u32>(fields: BoundedVec<Field, N>) -> BoundedVec<u8, N * 31> {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n"
4849
4849
  },
4850
- "239": {
4850
+ "241": {
4851
4851
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr",
4852
4852
  "source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array.\n/// Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful\n/// that such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes<let N: u32>(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this\n/// is assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert\n/// a byte array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ... + 0]\n/// Note 1: N must be a multiple of 32 bytes\n/// Note 2: The max value check code was taken from std::field::to_be_bytes function.\npub fn fields_from_bytes<let N: u32>(bytes: BoundedVec<u8, N>) -> BoundedVec<Field, N / 32> {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function.\n // 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 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,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte\n // and then feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255).\n // This is acceptable since we are using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n"
4853
4853
  },
4854
- "242": {
4854
+ "244": {
4855
4855
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/utils/point.nr",
4856
4856
  "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/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\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 curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !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::{point_from_x_coord, point_from_x_coord_and_sign, point_to_bytes};\n use dep::protocol_types::point::Point;\n use dep::protocol_types::utils::field::pow;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n\n #[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}\n"
4857
4857
  },
4858
- "253": {
4858
+ "255": {
4859
4859
  "path": "/home/aztec-dev/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr",
4860
4860
  "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"
4861
4861
  },
@@ -4863,59 +4863,59 @@
4863
4863
  "path": "std/array/mod.nr",
4864
4864
  "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"
4865
4865
  },
4866
- "332": {
4866
+ "334": {
4867
4867
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
4868
4868
  "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"
4869
4869
  },
4870
- "342": {
4870
+ "344": {
4871
4871
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
4872
4872
  "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, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, 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 GENERATOR_INDEX__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, GENERATOR_INDEX__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(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n 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(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: 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"
4873
4873
  },
4874
- "351": {
4874
+ "353": {
4875
4875
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr",
4876
4876
  "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path<let N: u32>(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_tree_root<let N: u32>(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n/// These values are precomputed and we run tests to ensure that they are correct.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_tree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_tree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_tree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_tree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_tree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_tree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_tree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_tree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_tree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_tree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_tree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_tree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n"
4877
4877
  },
4878
- "355": {
4878
+ "357": {
4879
4879
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr",
4880
4880
  "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"
4881
4881
  },
4882
- "356": {
4882
+ "358": {
4883
4883
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/meta/utils.nr",
4884
4884
  "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"
4885
4885
  },
4886
- "358": {
4886
+ "360": {
4887
4887
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr",
4888
4888
  "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"
4889
4889
  },
4890
- "370": {
4890
+ "372": {
4891
4891
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr",
4892
4892
  "source": "use crate::{hash::poseidon2_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash([storage_slot, key.to_field()])\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x15b9fe39449affd8b377461263e9d2b610b9ad40580553500b4e41d9cbd887ac;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n"
4893
4893
  },
4894
- "386": {
4894
+ "388": {
4895
4895
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr",
4896
4896
  "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"
4897
4897
  },
4898
- "388": {
4898
+ "39": {
4899
+ "path": "std/ops/arith.nr",
4900
+ "source": "use crate::convert::AsPrimitive;\n\n// docs:start:add-trait\npub trait Add {\n fn add(self, other: Self) -> Self;\n}\n// docs:end:add-trait\n\nimpl Add for Field {\n fn add(self, other: Field) -> Field {\n self + other\n }\n}\n\nimpl Add for u128 {\n fn add(self, other: u128) -> u128 {\n self + other\n }\n}\nimpl Add for u64 {\n fn add(self, other: u64) -> u64 {\n self + other\n }\n}\nimpl Add for u32 {\n fn add(self, other: u32) -> u32 {\n self + other\n }\n}\nimpl Add for u16 {\n fn add(self, other: u16) -> u16 {\n self + other\n }\n}\nimpl Add for u8 {\n fn add(self, other: u8) -> u8 {\n self + other\n }\n}\nimpl Add for u1 {\n fn add(self, other: u1) -> u1 {\n self + other\n }\n}\n\nimpl Add for i8 {\n fn add(self, other: i8) -> i8 {\n self + other\n }\n}\nimpl Add for i16 {\n fn add(self, other: i16) -> i16 {\n self + other\n }\n}\nimpl Add for i32 {\n fn add(self, other: i32) -> i32 {\n self + other\n }\n}\nimpl Add for i64 {\n fn add(self, other: i64) -> i64 {\n self + other\n }\n}\n\n// docs:start:sub-trait\npub trait Sub {\n fn sub(self, other: Self) -> Self;\n}\n// docs:end:sub-trait\n\nimpl Sub for Field {\n fn sub(self, other: Field) -> Field {\n self - other\n }\n}\n\nimpl Sub for u128 {\n fn sub(self, other: u128) -> u128 {\n self - other\n }\n}\nimpl Sub for u64 {\n fn sub(self, other: u64) -> u64 {\n self - other\n }\n}\nimpl Sub for u32 {\n fn sub(self, other: u32) -> u32 {\n self - other\n }\n}\nimpl Sub for u16 {\n fn sub(self, other: u16) -> u16 {\n self - other\n }\n}\nimpl Sub for u8 {\n fn sub(self, other: u8) -> u8 {\n self - other\n }\n}\nimpl Sub for u1 {\n fn sub(self, other: u1) -> u1 {\n self - other\n }\n}\n\nimpl Sub for i8 {\n fn sub(self, other: i8) -> i8 {\n self - other\n }\n}\nimpl Sub for i16 {\n fn sub(self, other: i16) -> i16 {\n self - other\n }\n}\nimpl Sub for i32 {\n fn sub(self, other: i32) -> i32 {\n self - other\n }\n}\nimpl Sub for i64 {\n fn sub(self, other: i64) -> i64 {\n self - other\n }\n}\n\n// docs:start:mul-trait\npub trait Mul {\n fn mul(self, other: Self) -> Self;\n}\n// docs:end:mul-trait\n\nimpl Mul for Field {\n fn mul(self, other: Field) -> Field {\n self * other\n }\n}\n\nimpl Mul for u128 {\n fn mul(self, other: u128) -> u128 {\n self * other\n }\n}\nimpl Mul for u64 {\n fn mul(self, other: u64) -> u64 {\n self * other\n }\n}\nimpl Mul for u32 {\n fn mul(self, other: u32) -> u32 {\n self * other\n }\n}\nimpl Mul for u16 {\n fn mul(self, other: u16) -> u16 {\n self * other\n }\n}\nimpl Mul for u8 {\n fn mul(self, other: u8) -> u8 {\n self * other\n }\n}\nimpl Mul for u1 {\n fn mul(self, other: u1) -> u1 {\n self * other\n }\n}\n\nimpl Mul for i8 {\n fn mul(self, other: i8) -> i8 {\n self * other\n }\n}\nimpl Mul for i16 {\n fn mul(self, other: i16) -> i16 {\n self * other\n }\n}\nimpl Mul for i32 {\n fn mul(self, other: i32) -> i32 {\n self * other\n }\n}\nimpl Mul for i64 {\n fn mul(self, other: i64) -> i64 {\n self * other\n }\n}\n\n// docs:start:div-trait\npub trait Div {\n fn div(self, other: Self) -> Self;\n}\n// docs:end:div-trait\n\nimpl Div for Field {\n fn div(self, other: Field) -> Field {\n self / other\n }\n}\n\nimpl Div for u128 {\n fn div(self, other: u128) -> u128 {\n self / other\n }\n}\nimpl Div for u64 {\n fn div(self, other: u64) -> u64 {\n self / other\n }\n}\nimpl Div for u32 {\n fn div(self, other: u32) -> u32 {\n self / other\n }\n}\nimpl Div for u16 {\n fn div(self, other: u16) -> u16 {\n self / other\n }\n}\nimpl Div for u8 {\n fn div(self, other: u8) -> u8 {\n self / other\n }\n}\nimpl Div for u1 {\n fn div(self, other: u1) -> u1 {\n self / other\n }\n}\n\nimpl Div for i8 {\n fn div(self, other: i8) -> i8 {\n self / other\n }\n}\nimpl Div for i16 {\n fn div(self, other: i16) -> i16 {\n self / other\n }\n}\nimpl Div for i32 {\n fn div(self, other: i32) -> i32 {\n self / other\n }\n}\nimpl Div for i64 {\n fn div(self, other: i64) -> i64 {\n self / other\n }\n}\n\n// docs:start:rem-trait\npub trait Rem {\n fn rem(self, other: Self) -> Self;\n}\n// docs:end:rem-trait\n\nimpl Rem for u128 {\n fn rem(self, other: u128) -> u128 {\n self % other\n }\n}\nimpl Rem for u64 {\n fn rem(self, other: u64) -> u64 {\n self % other\n }\n}\nimpl Rem for u32 {\n fn rem(self, other: u32) -> u32 {\n self % other\n }\n}\nimpl Rem for u16 {\n fn rem(self, other: u16) -> u16 {\n self % other\n }\n}\nimpl Rem for u8 {\n fn rem(self, other: u8) -> u8 {\n self % other\n }\n}\nimpl Rem for u1 {\n fn rem(self, other: u1) -> u1 {\n self % other\n }\n}\n\nimpl Rem for i8 {\n fn rem(self, other: i8) -> i8 {\n self % other\n }\n}\nimpl Rem for i16 {\n fn rem(self, other: i16) -> i16 {\n self % other\n }\n}\nimpl Rem for i32 {\n fn rem(self, other: i32) -> i32 {\n self % other\n }\n}\nimpl Rem for i64 {\n fn rem(self, other: i64) -> i64 {\n self % other\n }\n}\n\n// docs:start:neg-trait\npub trait Neg {\n fn neg(self) -> Self;\n}\n// docs:end:neg-trait\n\n// docs:start:neg-trait-impls\nimpl Neg for Field {\n fn neg(self) -> Field {\n -self\n }\n}\n\nimpl Neg for i8 {\n fn neg(self) -> i8 {\n -self\n }\n}\nimpl Neg for i16 {\n fn neg(self) -> i16 {\n -self\n }\n}\nimpl Neg for i32 {\n fn neg(self) -> i32 {\n -self\n }\n}\nimpl Neg for i64 {\n fn neg(self) -> i64 {\n -self\n }\n}\n// docs:end:neg-trait-impls\n\n// docs:start:wrapping-add-trait\npub trait WrappingAdd {\n fn wrapping_add(self, y: Self) -> Self;\n}\n// docs:end:wrapping-add-trait\n\nimpl WrappingAdd for u1 {\n fn wrapping_add(self: u1, y: u1) -> u1 {\n self ^ y\n }\n}\n\nimpl WrappingAdd for u8 {\n fn wrapping_add(self: u8, y: u8) -> u8 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u16 {\n fn wrapping_add(self: u16, y: u16) -> u16 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u32 {\n fn wrapping_add(self: u32, y: u32) -> u32 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u64 {\n fn wrapping_add(self: u64, y: u64) -> u64 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u128 {\n fn wrapping_add(self: u128, y: u128) -> u128 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for i8 {\n fn wrapping_add(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_add(y as u8) as i8\n }\n}\n\nimpl WrappingAdd for i16 {\n fn wrapping_add(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_add(y as u16) as i16\n }\n}\n\nimpl WrappingAdd for i32 {\n fn wrapping_add(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_add(y as u32) as i32\n }\n}\n\nimpl WrappingAdd for i64 {\n fn wrapping_add(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_add(y as u64) as i64\n }\n}\nimpl WrappingAdd for Field {\n fn wrapping_add(self: Field, y: Field) -> Field {\n self + y\n }\n}\n\n// docs:start:wrapping-sub-trait\npub trait WrappingSub {\n fn wrapping_sub(self, y: Self) -> Self;\n}\n// docs:start:wrapping-sub-trait\n\nimpl WrappingSub for u1 {\n fn wrapping_sub(self: u1, y: u1) -> u1 {\n self ^ y\n }\n}\n\nimpl WrappingSub for u8 {\n fn wrapping_sub(self: u8, y: u8) -> u8 {\n wrapping_sub_hlp(self, y) as u8\n }\n}\n\nimpl WrappingSub for u16 {\n fn wrapping_sub(self: u16, y: u16) -> u16 {\n wrapping_sub_hlp(self, y) as u16\n }\n}\n\nimpl WrappingSub for u32 {\n fn wrapping_sub(self: u32, y: u32) -> u32 {\n wrapping_sub_hlp(self, y) as u32\n }\n}\nimpl WrappingSub for u64 {\n fn wrapping_sub(self: u64, y: u64) -> u64 {\n wrapping_sub_hlp(self, y) as u64\n }\n}\nimpl WrappingSub for u128 {\n fn wrapping_sub(self: u128, y: u128) -> u128 {\n wrapping_sub_hlp(self, y) as u128\n }\n}\n\nimpl WrappingSub for i8 {\n fn wrapping_sub(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_sub(y as u8) as i8\n }\n}\n\nimpl WrappingSub for i16 {\n fn wrapping_sub(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_sub(y as u16) as i16\n }\n}\n\nimpl WrappingSub for i32 {\n fn wrapping_sub(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_sub(y as u32) as i32\n }\n}\nimpl WrappingSub for i64 {\n fn wrapping_sub(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_sub(y as u64) as i64\n }\n}\nimpl WrappingSub for Field {\n fn wrapping_sub(self: Field, y: Field) -> Field {\n self - y\n }\n}\n\n// docs:start:wrapping-mul-trait\npub trait WrappingMul {\n fn wrapping_mul(self, y: Self) -> Self;\n}\n// docs:start:wrapping-mul-trait\n\nimpl WrappingMul for u1 {\n fn wrapping_mul(self: u1, y: u1) -> u1 {\n self & y\n }\n}\n\nimpl WrappingMul for u8 {\n fn wrapping_mul(self: u8, y: u8) -> u8 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for u16 {\n fn wrapping_mul(self: u16, y: u16) -> u16 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for u32 {\n fn wrapping_mul(self: u32, y: u32) -> u32 {\n wrapping_mul_hlp(self, y)\n }\n}\nimpl WrappingMul for u64 {\n fn wrapping_mul(self: u64, y: u64) -> u64 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for i8 {\n fn wrapping_mul(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_mul(y as u8) as i8\n }\n}\n\nimpl WrappingMul for i16 {\n fn wrapping_mul(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_mul(y as u16) as i16\n }\n}\n\nimpl WrappingMul for i32 {\n fn wrapping_mul(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_mul(y as u32) as i32\n }\n}\n\nimpl WrappingMul for i64 {\n fn wrapping_mul(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_mul(y as u64) as i64\n }\n}\n\nimpl WrappingMul for u128 {\n fn wrapping_mul(self: u128, y: u128) -> u128 {\n wrapping_mul128_hlp(self, y)\n }\n}\nimpl WrappingMul for Field {\n fn wrapping_mul(self: Field, y: Field) -> Field {\n self * y\n }\n}\n\nfn wrapping_add_hlp<T>(x: T, y: T) -> T\nwhere\n T: AsPrimitive<Field>,\n Field: AsPrimitive<T>,\n{\n AsPrimitive::as_(x.as_() + y.as_())\n}\n\nfn wrapping_sub_hlp<T>(x: T, y: T) -> Field\nwhere\n T: AsPrimitive<Field>,\n{\n //340282366920938463463374607431768211456 is 2^128, it is used to avoid underflow\n x.as_() + 340282366920938463463374607431768211456 - y.as_()\n}\n\nfn wrapping_mul_hlp<T>(x: T, y: T) -> T\nwhere\n T: AsPrimitive<Field>,\n Field: AsPrimitive<T>,\n{\n AsPrimitive::as_(x.as_() * y.as_())\n}\n\nglobal two_pow_64: u128 = 0x10000000000000000;\n/// Splits a 128 bits number into two 64 bits limbs\nunconstrained fn split64(x: u128) -> (u64, u64) {\n let lo = x as u64;\n let hi = (x / two_pow_64) as u64;\n (lo, hi)\n}\n\n/// Split a 128 bits number into two 64 bits limbs\n/// It will fail if the number is more than 128 bits\nfn split_into_64_bit_limbs(x: u128) -> (u64, u64) {\n // Safety: the limbs are constrained below\n let (x_lo, x_hi) = unsafe { split64(x) };\n assert(x as Field == x_lo as Field + x_hi as Field * two_pow_64 as Field);\n (x_lo, x_hi)\n}\n\n#[field(bn254)]\nfn wrapping_mul128_hlp(x: u128, y: u128) -> u128 {\n let (x_lo, x_hi) = split_into_64_bit_limbs(x);\n let (y_lo, y_hi) = split_into_64_bit_limbs(y);\n // Multiplication using the limbs:(x_lo + 2**64*x_hi)*(y_lo + 2**64*y_hi)=x_lo*y_lo+...\n // and skipping the terms over 2**128\n // Working with u64 limbs ensures that we cannot overflow the field modulus.\n let low = x_lo as Field * y_lo as Field;\n let lo = low as u64 as Field;\n let carry = (low - lo) / two_pow_64 as Field;\n let high = x_lo as Field * y_hi as Field + x_hi as Field * y_lo as Field + carry;\n let hi = high as u64 as Field;\n (lo + two_pow_64 as Field * hi) as u128\n}\n\nmod tests {\n #[test(should_fail_with = \"custom message\")]\n fn test_static_assert_custom_message() {\n crate::static_assert(1 == 2, \"custom message\");\n }\n\n mod arithmetic {\n use crate::ops::arith::{Add, Div, Mul, Neg, Rem, Sub};\n #[test]\n fn test_basic_arithmetic_traits() {\n // add\n assert_eq(5.add(3), 8);\n assert_eq(0u8.add(255u8), 255u8);\n assert_eq(42.add(58), 100);\n\n // sub\n assert_eq(10.sub(3), 7);\n assert_eq(100.sub(42), 58);\n\n // mul\n assert_eq(6.mul(7), 42);\n\n // div\n assert_eq(15.div(3), 5);\n assert_eq(10u8.div(3u8), 3u8);\n assert_eq(15.div(3), 5);\n\n // rem\n assert_eq(17.rem(5), 2);\n assert_eq(10u8.rem(3u8), 1u8);\n\n // neg\n assert_eq(42.neg(), -42);\n assert_eq((-10).neg(), 10);\n assert_eq(42.neg(), -42);\n }\n\n #[test]\n fn test_division() {\n // test division by one\n assert_eq(42.div(1), 42);\n assert_eq(0.div(1), 0);\n assert_eq(255u8.div(1u8), 255u8);\n\n // test division by self\n assert_eq(42.div(42), 1);\n assert_eq(1.div(1), 1);\n\n // test remainder\n assert_eq(42.rem(42), 0);\n assert_eq(0.rem(42), 0);\n assert_eq(1.rem(42), 1);\n }\n\n #[test(should_fail)]\n fn test_u8_sub_overflow_failure() {\n let _ = 0u8.sub(1u8);\n }\n\n #[test(should_fail)]\n fn test_u8_add_overflow_failure() {\n let _ = 255u8.add(1u8);\n }\n\n #[test(should_fail)]\n fn test_u8_mul_overflow_failure() {\n let _ = 255u8.mul(2u8);\n }\n\n #[test(should_fail)]\n fn test_u16_sub_overflow_failure() {\n let _ = 0u16.sub(1u16);\n }\n\n #[test(should_fail)]\n fn test_u16_add_overflow_failure() {\n let _ = 65535u16.add(1u16);\n }\n\n #[test(should_fail)]\n fn test_u16_mul_overflow_failure() {\n let _ = 65535u16.mul(2u16);\n }\n\n #[test(should_fail)]\n fn test_signed_sub_overflow_failure() {\n let val: i8 = -128;\n let _ = val.sub(1i8);\n }\n\n #[test(should_fail)]\n fn test_signed_overflow_failure() {\n let _ = 127i8.add(1i8);\n }\n\n #[test]\n fn test_field() {\n let zero: Field = 0;\n let one: Field = 1;\n\n // test Field basic operations\n assert_eq(zero.add(one), one);\n assert_eq(one.add(zero), one);\n assert_eq(one.sub(one), zero);\n assert_eq(one.mul(one), one);\n assert_eq(one.div(one), one);\n assert_eq(zero.neg(), zero);\n assert_eq(one.neg(), -one);\n }\n\n }\n\n mod wrapping_arithmetic {\n use crate::ops::arith::{Add, Div, Mul, Neg, Sub, WrappingAdd, WrappingMul, WrappingSub};\n #[test]\n fn test_wrapping_add() {\n assert_eq(255u8.wrapping_add(1u8), 0u8);\n assert_eq(255u8.wrapping_add(255u8), 254u8);\n assert_eq(0u8.wrapping_add(0u8), 0u8);\n assert_eq(128u8.wrapping_add(128u8), 0u8);\n\n // test u16 wrapping add\n assert_eq(65535u16.wrapping_add(1u16), 0u16);\n assert_eq(65535u16.wrapping_add(65535u16), 65534u16);\n\n // test u32 wrapping add\n assert_eq(0xffffffffu32.wrapping_add(1u32), 0u32);\n assert_eq(0xffffffffu32.wrapping_add(0xffffffffu32), 0xfffffffeu32);\n\n // test u64 wrapping add\n assert_eq(0xffffffffffffffffu64.wrapping_add(1u64), 0u64);\n assert_eq(\n 0xffffffffffffffffu64.wrapping_add(0xffffffffffffffffu64),\n 0xfffffffffffffffeu64,\n );\n\n // test u128 wrapping add\n assert_eq(0xffffffffffffffffffffffffffffffffu128.wrapping_add(1u128), 0u128);\n\n // test signed types\n assert_eq(127i8.wrapping_add(1i8), -128i8);\n let val: i8 = -128;\n assert_eq(val.wrapping_add(-1i8), 127i8);\n\n // test Field wrapping add\n let forty_two: Field = 42;\n let fifty_eight: Field = 58;\n let hundred: Field = 100;\n let neg_two: Field = -2;\n let two: Field = 2;\n let zero: Field = 0;\n let neg_two_hundred: Field = -200;\n let neg_one_ninety_eight: Field = -198;\n assert_eq(forty_two.wrapping_add(fifty_eight), hundred);\n assert_eq(neg_two.wrapping_add(two), zero);\n assert_eq(neg_two_hundred.wrapping_add(two), neg_one_ninety_eight);\n }\n\n #[test]\n fn test_wrapping_sub() {\n assert_eq(0u8.wrapping_sub(1u8), 255u8);\n assert_eq(255u8.wrapping_sub(255u8), 0u8);\n assert_eq(0u8.wrapping_sub(0u8), 0u8);\n assert_eq(1u8.wrapping_sub(2u8), 255u8);\n\n // test u16 wrapping sub\n assert_eq(0u16.wrapping_sub(1u16), 65535u16);\n assert_eq(65535u16.wrapping_sub(65535u16), 0u16);\n\n // test u32 wrapping sub\n assert_eq(0u32.wrapping_sub(1u32), 0xffffffffu32);\n assert_eq(0xffffffffu32.wrapping_sub(0xffffffffu32), 0u32);\n\n // test u64 wrapping sub\n assert_eq(0u64.wrapping_sub(1u64), 0xffffffffffffffffu64);\n assert_eq(0xffffffffffffffffu64.wrapping_sub(0xffffffffffffffffu64), 0u64);\n\n // test u128 wrapping sub\n assert_eq(0u128.wrapping_sub(1u128), 0xffffffffffffffffffffffffffffffffu128);\n\n // test signed types\n let val: i8 = -128;\n assert_eq(val.wrapping_sub(1i8), 127i8);\n assert_eq(127i8.wrapping_sub(-1i8), -128i8);\n\n // test Field wrapping sub\n let forty_two: Field = 42;\n let fifty_eight: Field = 58;\n let neg_sixteen: Field = -16;\n assert_eq(forty_two.wrapping_sub(fifty_eight), neg_sixteen);\n }\n\n #[test]\n fn test_wrapping_mul() {\n let zero: u128 = 0;\n let one: u128 = 1;\n let two_pow_64: u128 = 0x10000000000000000;\n let u128_max: u128 = 0xffffffffffffffffffffffffffffffff;\n\n assert_eq(zero, zero.wrapping_mul(one));\n assert_eq(zero, one.wrapping_mul(zero));\n assert_eq(one, one.wrapping_mul(one));\n assert_eq(zero, zero.wrapping_mul(two_pow_64));\n assert_eq(zero, two_pow_64.wrapping_mul(zero));\n assert_eq(two_pow_64, two_pow_64.wrapping_mul(one));\n assert_eq(two_pow_64, one.wrapping_mul(two_pow_64));\n assert_eq(zero, two_pow_64.wrapping_mul(two_pow_64));\n assert_eq(one, u128_max.wrapping_mul(u128_max));\n\n // test u8 wrapping mul\n assert_eq(255u8.wrapping_mul(2u8), 254u8);\n assert_eq(255u8.wrapping_mul(255u8), 1u8);\n assert_eq(128u8.wrapping_mul(2u8), 0u8);\n\n // test u16 wrapping mul\n assert_eq(65535u16.wrapping_mul(2u16), 65534u16);\n assert_eq(65535u16.wrapping_mul(65535u16), 1u16);\n\n // test u32 wrapping mul\n assert_eq(0xffffffffu32.wrapping_mul(2u32), 0xfffffffeu32);\n assert_eq(0xffffffffu32.wrapping_mul(0xffffffffu32), 1u32);\n\n // test u64 wrapping mul\n // 0xffffffffffffffffu64 is 2^64 - 1\n assert_eq(0xffffffffffffffffu64.wrapping_mul(2u64), 0xfffffffffffffffeu64);\n assert_eq(0xffffffffffffffffu64.wrapping_mul(0xffffffffffffffffu64), 1u64);\n\n // test signed types\n assert_eq(127i8.wrapping_mul(2i8), -2i8);\n let val: i8 = -128;\n assert_eq(val.wrapping_mul(-1i8), -128i8);\n\n // test Field wrapping mul\n let six: Field = 6;\n let seven: Field = 7;\n let forty_two: Field = 42;\n let neg_two: Field = -2;\n let two: Field = 2;\n let neg_four: Field = -4;\n assert_eq(six.wrapping_mul(seven), forty_two);\n assert_eq(neg_two.wrapping_mul(two), neg_four);\n }\n\n #[test]\n fn test_u1_behavior() {\n // u1 wrapping add is XOR\n assert_eq(0u1.wrapping_add(0u1), 0u1);\n assert_eq(0u1.wrapping_add(1u1), 1u1);\n assert_eq(1u1.wrapping_add(0u1), 1u1);\n assert_eq(1u1.wrapping_add(1u1), 0u1);\n\n // u1 wrapping sub is XOR\n assert_eq(0u1.wrapping_sub(0u1), 0u1);\n assert_eq(0u1.wrapping_sub(1u1), 1u1);\n assert_eq(1u1.wrapping_sub(0u1), 1u1);\n assert_eq(1u1.wrapping_sub(1u1), 0u1);\n\n // u1 wrapping mul is AND\n assert_eq(0u1.wrapping_mul(0u1), 0u1);\n assert_eq(0u1.wrapping_mul(1u1), 0u1);\n assert_eq(1u1.wrapping_mul(0u1), 0u1);\n assert_eq(1u1.wrapping_mul(1u1), 1u1);\n }\n\n // test wrapping operations is the same as the regular operations\n #[test]\n fn test_wrapping_vs_regular() {\n let u64_large = 0x123456789abcdef0u64;\n let u128_large = 0x123456789abcdef0123456789abcdef0u128;\n\n assert_eq(u64_large.wrapping_add(1u64), u64_large + 1u64);\n assert_eq(u64_large.wrapping_sub(1u64), u64_large - 1u64);\n assert_eq(u64_large.wrapping_mul(2u64), u64_large * 2u64);\n\n assert_eq(u128_large.wrapping_add(1u128), u128_large + 1u128);\n assert_eq(u128_large.wrapping_sub(1u128), u128_large - 1u128);\n assert_eq(u128_large.wrapping_mul(2u128), u128_large * 2u128);\n }\n\n #[test]\n fn test_field_wrapping_operations() {\n let zero: Field = 0;\n let one: Field = 1;\n let large_val = 0xffffffffffffffff;\n\n // test Field wrapping operations\n assert_eq(zero.wrapping_add(one), one);\n assert_eq(one.wrapping_add(large_val), one + large_val);\n assert_eq(zero.wrapping_sub(one), -one);\n assert_eq(one.wrapping_sub(large_val), one - large_val);\n assert_eq(zero.wrapping_mul(one), zero);\n assert_eq(one.wrapping_mul(large_val), large_val);\n\n // test Field basic operations\n assert_eq(zero.add(one), one);\n assert_eq(one.add(zero), one);\n assert_eq(one.sub(one), zero);\n assert_eq(one.mul(one), one);\n assert_eq(one.div(one), one);\n assert_eq(zero.neg(), zero);\n assert_eq(one.neg(), -one);\n }\n\n }\n\n mod split_functions {\n\n use crate::ops::arith::{split64, split_into_64_bit_limbs};\n\n // test split64 and split_into_64_bit_limbs functions\n #[test]\n fn test_split_functions() {\n let small_val = 0x123456789abcdefu128;\n let large_val = 0x123456789abcdef0123456789abcdef0u128;\n let max_val = 0xffffffffffffffffffffffffffffffffu128;\n\n // test split64 (unconstrained)\n // Safety: testing\n unsafe {\n let (lo, hi) = split64(small_val);\n assert_eq(lo, 0x123456789abcdefu64);\n assert_eq(hi, 0u64);\n\n let (lo2, hi2) = split64(large_val);\n assert_eq(lo2, 0x123456789abcdef0u64);\n assert_eq(hi2, 0x123456789abcdef0u64);\n }\n\n // test split_into_64_bit_limbs (constrained)\n let (lo3, hi3) = split_into_64_bit_limbs(small_val);\n assert_eq(lo3, 0x123456789abcdefu64);\n assert_eq(hi3, 0u64);\n\n let (lo4, hi4) = split_into_64_bit_limbs(large_val);\n assert_eq(lo4, 0x123456789abcdef0u64);\n assert_eq(hi4, 0x123456789abcdef0u64);\n\n let (lo5, hi5) = split_into_64_bit_limbs(max_val);\n assert_eq(lo5, 0xffffffffffffffffu64);\n assert_eq(hi5, 0xffffffffffffffffu64);\n }\n }\n}\n"
4901
+ },
4902
+ "390": {
4899
4903
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr",
4900
4904
  "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n let N: u32 = BOOL_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n let N: u32 = U8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n let N: u32 = U16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n let N: u32 = U32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n let N: u32 = U64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n let N: u32 = U128_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n let N: u32 = FIELD_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n let N: u32 = I8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n let N: u32 = I16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n let N: u32 = I32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n let N: u32 = I64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl<T, let M: u32> Packable for [T; M]\nwhere\n T: Packable,\n{\n let N: u32 = M * <T as Packable>::N;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n let serialized = self[i].pack();\n for j in 0..<T as Packable>::N {\n result[i * <T as Packable>::N + j] = serialized[j];\n }\n }\n result\n }\n\n #[inline_always]\n fn unpack(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 Packable>::N, M>(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n"
4901
4905
  },
4902
- "389": {
4906
+ "391": {
4903
4907
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr",
4904
4908
  "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"
4905
4909
  },
4906
- "39": {
4907
- "path": "std/ops/arith.nr",
4908
- "source": "use crate::convert::AsPrimitive;\n\n// docs:start:add-trait\npub trait Add {\n fn add(self, other: Self) -> Self;\n}\n// docs:end:add-trait\n\nimpl Add for Field {\n fn add(self, other: Field) -> Field {\n self + other\n }\n}\n\nimpl Add for u128 {\n fn add(self, other: u128) -> u128 {\n self + other\n }\n}\nimpl Add for u64 {\n fn add(self, other: u64) -> u64 {\n self + other\n }\n}\nimpl Add for u32 {\n fn add(self, other: u32) -> u32 {\n self + other\n }\n}\nimpl Add for u16 {\n fn add(self, other: u16) -> u16 {\n self + other\n }\n}\nimpl Add for u8 {\n fn add(self, other: u8) -> u8 {\n self + other\n }\n}\nimpl Add for u1 {\n fn add(self, other: u1) -> u1 {\n self + other\n }\n}\n\nimpl Add for i8 {\n fn add(self, other: i8) -> i8 {\n self + other\n }\n}\nimpl Add for i16 {\n fn add(self, other: i16) -> i16 {\n self + other\n }\n}\nimpl Add for i32 {\n fn add(self, other: i32) -> i32 {\n self + other\n }\n}\nimpl Add for i64 {\n fn add(self, other: i64) -> i64 {\n self + other\n }\n}\n\n// docs:start:sub-trait\npub trait Sub {\n fn sub(self, other: Self) -> Self;\n}\n// docs:end:sub-trait\n\nimpl Sub for Field {\n fn sub(self, other: Field) -> Field {\n self - other\n }\n}\n\nimpl Sub for u128 {\n fn sub(self, other: u128) -> u128 {\n self - other\n }\n}\nimpl Sub for u64 {\n fn sub(self, other: u64) -> u64 {\n self - other\n }\n}\nimpl Sub for u32 {\n fn sub(self, other: u32) -> u32 {\n self - other\n }\n}\nimpl Sub for u16 {\n fn sub(self, other: u16) -> u16 {\n self - other\n }\n}\nimpl Sub for u8 {\n fn sub(self, other: u8) -> u8 {\n self - other\n }\n}\nimpl Sub for u1 {\n fn sub(self, other: u1) -> u1 {\n self - other\n }\n}\n\nimpl Sub for i8 {\n fn sub(self, other: i8) -> i8 {\n self - other\n }\n}\nimpl Sub for i16 {\n fn sub(self, other: i16) -> i16 {\n self - other\n }\n}\nimpl Sub for i32 {\n fn sub(self, other: i32) -> i32 {\n self - other\n }\n}\nimpl Sub for i64 {\n fn sub(self, other: i64) -> i64 {\n self - other\n }\n}\n\n// docs:start:mul-trait\npub trait Mul {\n fn mul(self, other: Self) -> Self;\n}\n// docs:end:mul-trait\n\nimpl Mul for Field {\n fn mul(self, other: Field) -> Field {\n self * other\n }\n}\n\nimpl Mul for u128 {\n fn mul(self, other: u128) -> u128 {\n self * other\n }\n}\nimpl Mul for u64 {\n fn mul(self, other: u64) -> u64 {\n self * other\n }\n}\nimpl Mul for u32 {\n fn mul(self, other: u32) -> u32 {\n self * other\n }\n}\nimpl Mul for u16 {\n fn mul(self, other: u16) -> u16 {\n self * other\n }\n}\nimpl Mul for u8 {\n fn mul(self, other: u8) -> u8 {\n self * other\n }\n}\nimpl Mul for u1 {\n fn mul(self, other: u1) -> u1 {\n self * other\n }\n}\n\nimpl Mul for i8 {\n fn mul(self, other: i8) -> i8 {\n self * other\n }\n}\nimpl Mul for i16 {\n fn mul(self, other: i16) -> i16 {\n self * other\n }\n}\nimpl Mul for i32 {\n fn mul(self, other: i32) -> i32 {\n self * other\n }\n}\nimpl Mul for i64 {\n fn mul(self, other: i64) -> i64 {\n self * other\n }\n}\n\n// docs:start:div-trait\npub trait Div {\n fn div(self, other: Self) -> Self;\n}\n// docs:end:div-trait\n\nimpl Div for Field {\n fn div(self, other: Field) -> Field {\n self / other\n }\n}\n\nimpl Div for u128 {\n fn div(self, other: u128) -> u128 {\n self / other\n }\n}\nimpl Div for u64 {\n fn div(self, other: u64) -> u64 {\n self / other\n }\n}\nimpl Div for u32 {\n fn div(self, other: u32) -> u32 {\n self / other\n }\n}\nimpl Div for u16 {\n fn div(self, other: u16) -> u16 {\n self / other\n }\n}\nimpl Div for u8 {\n fn div(self, other: u8) -> u8 {\n self / other\n }\n}\nimpl Div for u1 {\n fn div(self, other: u1) -> u1 {\n self / other\n }\n}\n\nimpl Div for i8 {\n fn div(self, other: i8) -> i8 {\n self / other\n }\n}\nimpl Div for i16 {\n fn div(self, other: i16) -> i16 {\n self / other\n }\n}\nimpl Div for i32 {\n fn div(self, other: i32) -> i32 {\n self / other\n }\n}\nimpl Div for i64 {\n fn div(self, other: i64) -> i64 {\n self / other\n }\n}\n\n// docs:start:rem-trait\npub trait Rem {\n fn rem(self, other: Self) -> Self;\n}\n// docs:end:rem-trait\n\nimpl Rem for u128 {\n fn rem(self, other: u128) -> u128 {\n self % other\n }\n}\nimpl Rem for u64 {\n fn rem(self, other: u64) -> u64 {\n self % other\n }\n}\nimpl Rem for u32 {\n fn rem(self, other: u32) -> u32 {\n self % other\n }\n}\nimpl Rem for u16 {\n fn rem(self, other: u16) -> u16 {\n self % other\n }\n}\nimpl Rem for u8 {\n fn rem(self, other: u8) -> u8 {\n self % other\n }\n}\nimpl Rem for u1 {\n fn rem(self, other: u1) -> u1 {\n self % other\n }\n}\n\nimpl Rem for i8 {\n fn rem(self, other: i8) -> i8 {\n self % other\n }\n}\nimpl Rem for i16 {\n fn rem(self, other: i16) -> i16 {\n self % other\n }\n}\nimpl Rem for i32 {\n fn rem(self, other: i32) -> i32 {\n self % other\n }\n}\nimpl Rem for i64 {\n fn rem(self, other: i64) -> i64 {\n self % other\n }\n}\n\n// docs:start:neg-trait\npub trait Neg {\n fn neg(self) -> Self;\n}\n// docs:end:neg-trait\n\n// docs:start:neg-trait-impls\nimpl Neg for Field {\n fn neg(self) -> Field {\n -self\n }\n}\n\nimpl Neg for i8 {\n fn neg(self) -> i8 {\n -self\n }\n}\nimpl Neg for i16 {\n fn neg(self) -> i16 {\n -self\n }\n}\nimpl Neg for i32 {\n fn neg(self) -> i32 {\n -self\n }\n}\nimpl Neg for i64 {\n fn neg(self) -> i64 {\n -self\n }\n}\n// docs:end:neg-trait-impls\n\n// docs:start:wrapping-add-trait\npub trait WrappingAdd {\n fn wrapping_add(self, y: Self) -> Self;\n}\n// docs:end:wrapping-add-trait\n\nimpl WrappingAdd for u1 {\n fn wrapping_add(self: u1, y: u1) -> u1 {\n self ^ y\n }\n}\n\nimpl WrappingAdd for u8 {\n fn wrapping_add(self: u8, y: u8) -> u8 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u16 {\n fn wrapping_add(self: u16, y: u16) -> u16 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u32 {\n fn wrapping_add(self: u32, y: u32) -> u32 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u64 {\n fn wrapping_add(self: u64, y: u64) -> u64 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for u128 {\n fn wrapping_add(self: u128, y: u128) -> u128 {\n wrapping_add_hlp(self, y)\n }\n}\n\nimpl WrappingAdd for i8 {\n fn wrapping_add(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_add(y as u8) as i8\n }\n}\n\nimpl WrappingAdd for i16 {\n fn wrapping_add(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_add(y as u16) as i16\n }\n}\n\nimpl WrappingAdd for i32 {\n fn wrapping_add(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_add(y as u32) as i32\n }\n}\n\nimpl WrappingAdd for i64 {\n fn wrapping_add(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_add(y as u64) as i64\n }\n}\nimpl WrappingAdd for Field {\n fn wrapping_add(self: Field, y: Field) -> Field {\n self + y\n }\n}\n\n// docs:start:wrapping-sub-trait\npub trait WrappingSub {\n fn wrapping_sub(self, y: Self) -> Self;\n}\n// docs:start:wrapping-sub-trait\n\nimpl WrappingSub for u1 {\n fn wrapping_sub(self: u1, y: u1) -> u1 {\n self ^ y\n }\n}\n\nimpl WrappingSub for u8 {\n fn wrapping_sub(self: u8, y: u8) -> u8 {\n wrapping_sub_hlp(self, y) as u8\n }\n}\n\nimpl WrappingSub for u16 {\n fn wrapping_sub(self: u16, y: u16) -> u16 {\n wrapping_sub_hlp(self, y) as u16\n }\n}\n\nimpl WrappingSub for u32 {\n fn wrapping_sub(self: u32, y: u32) -> u32 {\n wrapping_sub_hlp(self, y) as u32\n }\n}\nimpl WrappingSub for u64 {\n fn wrapping_sub(self: u64, y: u64) -> u64 {\n wrapping_sub_hlp(self, y) as u64\n }\n}\nimpl WrappingSub for u128 {\n fn wrapping_sub(self: u128, y: u128) -> u128 {\n wrapping_sub_hlp(self, y) as u128\n }\n}\n\nimpl WrappingSub for i8 {\n fn wrapping_sub(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_sub(y as u8) as i8\n }\n}\n\nimpl WrappingSub for i16 {\n fn wrapping_sub(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_sub(y as u16) as i16\n }\n}\n\nimpl WrappingSub for i32 {\n fn wrapping_sub(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_sub(y as u32) as i32\n }\n}\nimpl WrappingSub for i64 {\n fn wrapping_sub(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_sub(y as u64) as i64\n }\n}\nimpl WrappingSub for Field {\n fn wrapping_sub(self: Field, y: Field) -> Field {\n self - y\n }\n}\n\n// docs:start:wrapping-mul-trait\npub trait WrappingMul {\n fn wrapping_mul(self, y: Self) -> Self;\n}\n// docs:start:wrapping-mul-trait\n\nimpl WrappingMul for u1 {\n fn wrapping_mul(self: u1, y: u1) -> u1 {\n self & y\n }\n}\n\nimpl WrappingMul for u8 {\n fn wrapping_mul(self: u8, y: u8) -> u8 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for u16 {\n fn wrapping_mul(self: u16, y: u16) -> u16 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for u32 {\n fn wrapping_mul(self: u32, y: u32) -> u32 {\n wrapping_mul_hlp(self, y)\n }\n}\nimpl WrappingMul for u64 {\n fn wrapping_mul(self: u64, y: u64) -> u64 {\n wrapping_mul_hlp(self, y)\n }\n}\n\nimpl WrappingMul for i8 {\n fn wrapping_mul(self: i8, y: i8) -> i8 {\n let x = self as u8;\n x.wrapping_mul(y as u8) as i8\n }\n}\n\nimpl WrappingMul for i16 {\n fn wrapping_mul(self: i16, y: i16) -> i16 {\n let x = self as u16;\n x.wrapping_mul(y as u16) as i16\n }\n}\n\nimpl WrappingMul for i32 {\n fn wrapping_mul(self: i32, y: i32) -> i32 {\n let x = self as u32;\n x.wrapping_mul(y as u32) as i32\n }\n}\n\nimpl WrappingMul for i64 {\n fn wrapping_mul(self: i64, y: i64) -> i64 {\n let x = self as u64;\n x.wrapping_mul(y as u64) as i64\n }\n}\n\nimpl WrappingMul for u128 {\n fn wrapping_mul(self: u128, y: u128) -> u128 {\n wrapping_mul128_hlp(self, y)\n }\n}\nimpl WrappingMul for Field {\n fn wrapping_mul(self: Field, y: Field) -> Field {\n self * y\n }\n}\n\nfn wrapping_add_hlp<T>(x: T, y: T) -> T\nwhere\n T: AsPrimitive<Field>,\n Field: AsPrimitive<T>,\n{\n AsPrimitive::as_(x.as_() + y.as_())\n}\n\nfn wrapping_sub_hlp<T>(x: T, y: T) -> Field\nwhere\n T: AsPrimitive<Field>,\n{\n //340282366920938463463374607431768211456 is 2^128, it is used to avoid underflow\n x.as_() + 340282366920938463463374607431768211456 - y.as_()\n}\n\nfn wrapping_mul_hlp<T>(x: T, y: T) -> T\nwhere\n T: AsPrimitive<Field>,\n Field: AsPrimitive<T>,\n{\n AsPrimitive::as_(x.as_() * y.as_())\n}\n\nglobal two_pow_64: u128 = 0x10000000000000000;\n/// Splits a 128 bits number into two 64 bits limbs\nunconstrained fn split64(x: u128) -> (u64, u64) {\n let lo = x as u64;\n let hi = (x / two_pow_64) as u64;\n (lo, hi)\n}\n\n/// Split a 128 bits number into two 64 bits limbs\n/// It will fail if the number is more than 128 bits\nfn split_into_64_bit_limbs(x: u128) -> (u64, u64) {\n // Safety: the limbs are constrained below\n let (x_lo, x_hi) = unsafe { split64(x) };\n assert(x as Field == x_lo as Field + x_hi as Field * two_pow_64 as Field);\n (x_lo, x_hi)\n}\n\n#[field(bn254)]\nfn wrapping_mul128_hlp(x: u128, y: u128) -> u128 {\n let (x_lo, x_hi) = split_into_64_bit_limbs(x);\n let (y_lo, y_hi) = split_into_64_bit_limbs(y);\n // Multiplication using the limbs:(x_lo + 2**64*x_hi)*(y_lo + 2**64*y_hi)=x_lo*y_lo+...\n // and skipping the terms over 2**128\n // Working with u64 limbs ensures that we cannot overflow the field modulus.\n let low = x_lo as Field * y_lo as Field;\n let lo = low as u64 as Field;\n let carry = (low - lo) / two_pow_64 as Field;\n let high = x_lo as Field * y_hi as Field + x_hi as Field * y_lo as Field + carry;\n let hi = high as u64 as Field;\n (lo + two_pow_64 as Field * hi) as u128\n}\n\nmod tests {\n #[test(should_fail_with = \"custom message\")]\n fn test_static_assert_custom_message() {\n crate::static_assert(1 == 2, \"custom message\");\n }\n\n mod arithmetic {\n use crate::ops::arith::{Add, Div, Mul, Neg, Rem, Sub};\n #[test]\n fn test_basic_arithmetic_traits() {\n // add\n assert_eq(5.add(3), 8);\n assert_eq(0u8.add(255u8), 255u8);\n assert_eq(42.add(58), 100);\n\n // sub\n assert_eq(10.sub(3), 7);\n assert_eq(100.sub(42), 58);\n\n // mul\n assert_eq(6.mul(7), 42);\n\n // div\n assert_eq(15.div(3), 5);\n assert_eq(10u8.div(3u8), 3u8);\n assert_eq(15.div(3), 5);\n\n // rem\n assert_eq(17.rem(5), 2);\n assert_eq(10u8.rem(3u8), 1u8);\n\n // neg\n assert_eq(42.neg(), -42);\n assert_eq((-10).neg(), 10);\n assert_eq(42.neg(), -42);\n }\n\n #[test]\n fn test_division() {\n // test division by one\n assert_eq(42.div(1), 42);\n assert_eq(0.div(1), 0);\n assert_eq(255u8.div(1u8), 255u8);\n\n // test division by self\n assert_eq(42.div(42), 1);\n assert_eq(1.div(1), 1);\n\n // test remainder\n assert_eq(42.rem(42), 0);\n assert_eq(0.rem(42), 0);\n assert_eq(1.rem(42), 1);\n }\n\n #[test(should_fail)]\n fn test_u8_sub_overflow_failure() {\n let _ = 0u8.sub(1u8);\n }\n\n #[test(should_fail)]\n fn test_u8_add_overflow_failure() {\n let _ = 255u8.add(1u8);\n }\n\n #[test(should_fail)]\n fn test_u8_mul_overflow_failure() {\n let _ = 255u8.mul(2u8);\n }\n\n #[test(should_fail)]\n fn test_u16_sub_overflow_failure() {\n let _ = 0u16.sub(1u16);\n }\n\n #[test(should_fail)]\n fn test_u16_add_overflow_failure() {\n let _ = 65535u16.add(1u16);\n }\n\n #[test(should_fail)]\n fn test_u16_mul_overflow_failure() {\n let _ = 65535u16.mul(2u16);\n }\n\n #[test(should_fail)]\n fn test_signed_sub_overflow_failure() {\n let val: i8 = -128;\n let _ = val.sub(1i8);\n }\n\n #[test(should_fail)]\n fn test_signed_overflow_failure() {\n let _ = 127i8.add(1i8);\n }\n\n #[test]\n fn test_field() {\n let zero: Field = 0;\n let one: Field = 1;\n\n // test Field basic operations\n assert_eq(zero.add(one), one);\n assert_eq(one.add(zero), one);\n assert_eq(one.sub(one), zero);\n assert_eq(one.mul(one), one);\n assert_eq(one.div(one), one);\n assert_eq(zero.neg(), zero);\n assert_eq(one.neg(), -one);\n }\n\n }\n\n mod wrapping_arithmetic {\n use crate::ops::arith::{Add, Div, Mul, Neg, Sub, WrappingAdd, WrappingMul, WrappingSub};\n #[test]\n fn test_wrapping_add() {\n assert_eq(255u8.wrapping_add(1u8), 0u8);\n assert_eq(255u8.wrapping_add(255u8), 254u8);\n assert_eq(0u8.wrapping_add(0u8), 0u8);\n assert_eq(128u8.wrapping_add(128u8), 0u8);\n\n // test u16 wrapping add\n assert_eq(65535u16.wrapping_add(1u16), 0u16);\n assert_eq(65535u16.wrapping_add(65535u16), 65534u16);\n\n // test u32 wrapping add\n assert_eq(0xffffffffu32.wrapping_add(1u32), 0u32);\n assert_eq(0xffffffffu32.wrapping_add(0xffffffffu32), 0xfffffffeu32);\n\n // test u64 wrapping add\n assert_eq(0xffffffffffffffffu64.wrapping_add(1u64), 0u64);\n assert_eq(\n 0xffffffffffffffffu64.wrapping_add(0xffffffffffffffffu64),\n 0xfffffffffffffffeu64,\n );\n\n // test u128 wrapping add\n assert_eq(0xffffffffffffffffffffffffffffffffu128.wrapping_add(1u128), 0u128);\n\n // test signed types\n assert_eq(127i8.wrapping_add(1i8), -128i8);\n let val: i8 = -128;\n assert_eq(val.wrapping_add(-1i8), 127i8);\n\n // test Field wrapping add\n let forty_two: Field = 42;\n let fifty_eight: Field = 58;\n let hundred: Field = 100;\n let neg_two: Field = -2;\n let two: Field = 2;\n let zero: Field = 0;\n let neg_two_hundred: Field = -200;\n let neg_one_ninety_eight: Field = -198;\n assert_eq(forty_two.wrapping_add(fifty_eight), hundred);\n assert_eq(neg_two.wrapping_add(two), zero);\n assert_eq(neg_two_hundred.wrapping_add(two), neg_one_ninety_eight);\n }\n\n #[test]\n fn test_wrapping_sub() {\n assert_eq(0u8.wrapping_sub(1u8), 255u8);\n assert_eq(255u8.wrapping_sub(255u8), 0u8);\n assert_eq(0u8.wrapping_sub(0u8), 0u8);\n assert_eq(1u8.wrapping_sub(2u8), 255u8);\n\n // test u16 wrapping sub\n assert_eq(0u16.wrapping_sub(1u16), 65535u16);\n assert_eq(65535u16.wrapping_sub(65535u16), 0u16);\n\n // test u32 wrapping sub\n assert_eq(0u32.wrapping_sub(1u32), 0xffffffffu32);\n assert_eq(0xffffffffu32.wrapping_sub(0xffffffffu32), 0u32);\n\n // test u64 wrapping sub\n assert_eq(0u64.wrapping_sub(1u64), 0xffffffffffffffffu64);\n assert_eq(0xffffffffffffffffu64.wrapping_sub(0xffffffffffffffffu64), 0u64);\n\n // test u128 wrapping sub\n assert_eq(0u128.wrapping_sub(1u128), 0xffffffffffffffffffffffffffffffffu128);\n\n // test signed types\n let val: i8 = -128;\n assert_eq(val.wrapping_sub(1i8), 127i8);\n assert_eq(127i8.wrapping_sub(-1i8), -128i8);\n\n // test Field wrapping sub\n let forty_two: Field = 42;\n let fifty_eight: Field = 58;\n let neg_sixteen: Field = -16;\n assert_eq(forty_two.wrapping_sub(fifty_eight), neg_sixteen);\n }\n\n #[test]\n fn test_wrapping_mul() {\n let zero: u128 = 0;\n let one: u128 = 1;\n let two_pow_64: u128 = 0x10000000000000000;\n let u128_max: u128 = 0xffffffffffffffffffffffffffffffff;\n\n assert_eq(zero, zero.wrapping_mul(one));\n assert_eq(zero, one.wrapping_mul(zero));\n assert_eq(one, one.wrapping_mul(one));\n assert_eq(zero, zero.wrapping_mul(two_pow_64));\n assert_eq(zero, two_pow_64.wrapping_mul(zero));\n assert_eq(two_pow_64, two_pow_64.wrapping_mul(one));\n assert_eq(two_pow_64, one.wrapping_mul(two_pow_64));\n assert_eq(zero, two_pow_64.wrapping_mul(two_pow_64));\n assert_eq(one, u128_max.wrapping_mul(u128_max));\n\n // test u8 wrapping mul\n assert_eq(255u8.wrapping_mul(2u8), 254u8);\n assert_eq(255u8.wrapping_mul(255u8), 1u8);\n assert_eq(128u8.wrapping_mul(2u8), 0u8);\n\n // test u16 wrapping mul\n assert_eq(65535u16.wrapping_mul(2u16), 65534u16);\n assert_eq(65535u16.wrapping_mul(65535u16), 1u16);\n\n // test u32 wrapping mul\n assert_eq(0xffffffffu32.wrapping_mul(2u32), 0xfffffffeu32);\n assert_eq(0xffffffffu32.wrapping_mul(0xffffffffu32), 1u32);\n\n // test u64 wrapping mul\n // 0xffffffffffffffffu64 is 2^64 - 1\n assert_eq(0xffffffffffffffffu64.wrapping_mul(2u64), 0xfffffffffffffffeu64);\n assert_eq(0xffffffffffffffffu64.wrapping_mul(0xffffffffffffffffu64), 1u64);\n\n // test signed types\n assert_eq(127i8.wrapping_mul(2i8), -2i8);\n let val: i8 = -128;\n assert_eq(val.wrapping_mul(-1i8), -128i8);\n\n // test Field wrapping mul\n let six: Field = 6;\n let seven: Field = 7;\n let forty_two: Field = 42;\n let neg_two: Field = -2;\n let two: Field = 2;\n let neg_four: Field = -4;\n assert_eq(six.wrapping_mul(seven), forty_two);\n assert_eq(neg_two.wrapping_mul(two), neg_four);\n }\n\n #[test]\n fn test_u1_behavior() {\n // u1 wrapping add is XOR\n assert_eq(0u1.wrapping_add(0u1), 0u1);\n assert_eq(0u1.wrapping_add(1u1), 1u1);\n assert_eq(1u1.wrapping_add(0u1), 1u1);\n assert_eq(1u1.wrapping_add(1u1), 0u1);\n\n // u1 wrapping sub is XOR\n assert_eq(0u1.wrapping_sub(0u1), 0u1);\n assert_eq(0u1.wrapping_sub(1u1), 1u1);\n assert_eq(1u1.wrapping_sub(0u1), 1u1);\n assert_eq(1u1.wrapping_sub(1u1), 0u1);\n\n // u1 wrapping mul is AND\n assert_eq(0u1.wrapping_mul(0u1), 0u1);\n assert_eq(0u1.wrapping_mul(1u1), 0u1);\n assert_eq(1u1.wrapping_mul(0u1), 0u1);\n assert_eq(1u1.wrapping_mul(1u1), 1u1);\n }\n\n // test wrapping operations is the same as the regular operations\n #[test]\n fn test_wrapping_vs_regular() {\n let u64_large = 0x123456789abcdef0u64;\n let u128_large = 0x123456789abcdef0123456789abcdef0u128;\n\n assert_eq(u64_large.wrapping_add(1u64), u64_large + 1u64);\n assert_eq(u64_large.wrapping_sub(1u64), u64_large - 1u64);\n assert_eq(u64_large.wrapping_mul(2u64), u64_large * 2u64);\n\n assert_eq(u128_large.wrapping_add(1u128), u128_large + 1u128);\n assert_eq(u128_large.wrapping_sub(1u128), u128_large - 1u128);\n assert_eq(u128_large.wrapping_mul(2u128), u128_large * 2u128);\n }\n\n #[test]\n fn test_field_wrapping_operations() {\n let zero: Field = 0;\n let one: Field = 1;\n let large_val = 0xffffffffffffffff;\n\n // test Field wrapping operations\n assert_eq(zero.wrapping_add(one), one);\n assert_eq(one.wrapping_add(large_val), one + large_val);\n assert_eq(zero.wrapping_sub(one), -one);\n assert_eq(one.wrapping_sub(large_val), one - large_val);\n assert_eq(zero.wrapping_mul(one), zero);\n assert_eq(one.wrapping_mul(large_val), large_val);\n\n // test Field basic operations\n assert_eq(zero.add(one), one);\n assert_eq(one.add(zero), one);\n assert_eq(one.sub(one), zero);\n assert_eq(one.mul(one), one);\n assert_eq(one.div(one), one);\n assert_eq(zero.neg(), zero);\n assert_eq(one.neg(), -one);\n }\n\n }\n\n mod split_functions {\n\n use crate::ops::arith::{split64, split_into_64_bit_limbs};\n\n // test split64 and split_into_64_bit_limbs functions\n #[test]\n fn test_split_functions() {\n let small_val = 0x123456789abcdefu128;\n let large_val = 0x123456789abcdef0123456789abcdef0u128;\n let max_val = 0xffffffffffffffffffffffffffffffffu128;\n\n // test split64 (unconstrained)\n // Safety: testing\n unsafe {\n let (lo, hi) = split64(small_val);\n assert_eq(lo, 0x123456789abcdefu64);\n assert_eq(hi, 0u64);\n\n let (lo2, hi2) = split64(large_val);\n assert_eq(lo2, 0x123456789abcdef0u64);\n assert_eq(hi2, 0x123456789abcdef0u64);\n }\n\n // test split_into_64_bit_limbs (constrained)\n let (lo3, hi3) = split_into_64_bit_limbs(small_val);\n assert_eq(lo3, 0x123456789abcdefu64);\n assert_eq(hi3, 0u64);\n\n let (lo4, hi4) = split_into_64_bit_limbs(large_val);\n assert_eq(lo4, 0x123456789abcdef0u64);\n assert_eq(hi4, 0x123456789abcdef0u64);\n\n let (lo5, hi5) = split_into_64_bit_limbs(max_val);\n assert_eq(lo5, 0xffffffffffffffffu64);\n assert_eq(hi5, 0xffffffffffffffffu64);\n }\n }\n}\n"
4909
- },
4910
- "394": {
4910
+ "396": {
4911
4911
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr",
4912
4912
  "source": "global KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\n\npub fn field_from_bytes<let N: u32>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n/// Returns Option::some(sqrt) if there is a square root, and Option::none() if there isn't.\npub fn sqrt(x: Field) -> Option<Field> {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\nunconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n\n#[test]\nunconstrained fn sqrt_valid_test() {\n let x = 16; // examples: 16, 9, 25, 81\n let result = sqrt(x);\n assert(result.is_some());\n assert_eq(result.unwrap() * result.unwrap(), x);\n}\n\n#[test]\nunconstrained fn sqrt_invalid_test() {\n let x = KNOWN_NON_RESIDUE; // has no square root in the field\n let result = sqrt(x);\n assert(result.is_none());\n}\n"
4913
4913
  },
4914
- "398": {
4914
+ "400": {
4915
4915
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
4916
4916
  "source": "pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_u64(&mut self) -> u64 {\n self.read() as u64\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array<let K: u32>(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert_eq(self.offset, self.data.len(), \"Reader did not read all data\");\n }\n}\n"
4917
4917
  },
4918
- "409": {
4918
+ "411": {
4919
4919
  "path": "/home/aztec-dev/nargo/github.com/noir-lang/sha256/v0.3.0/src/sha256.nr",
4920
4920
  "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK_SIZE, INT_SIZE, INT_SIZE_PTR,\n MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\npub(crate) mod constants;\nmod tests;\nmod oracle_tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u32) -> HASH {\n assert(message_size <= N);\n\n let (h, msg_block) = process_full_blocks(msg, message_size, INITIAL_STATE);\n\n finalize_sha256_blocks(message_size, h, msg_block)\n}\n\n/// Returns the first partially filled message block along with the internal state prior to its compression.\npub(crate) fn process_full_blocks<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n initial_state: STATE,\n) -> (STATE, MSG_BLOCK) {\n if std::runtime::is_unconstrained() {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = initial_state;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // We now build the final un-filled block.\n let msg_byte_ptr = message_size % BLOCK_SIZE;\n let msg_block: MSG_BLOCK = if msg_byte_ptr != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n build_msg_block(msg, message_size, msg_start)\n } else {\n // If the message size is a multiple of the block size (i.e. `msg_byte_ptr == 0`) then this block will be empty,\n // so we short-circuit in this case.\n [0; 16]\n };\n\n (h, msg_block)\n } else {\n let num_blocks = N / BLOCK_SIZE;\n\n // We store the intermediate hash states and message blocks in these two arrays which allows us to select the correct state\n // for the given message size with a lookup.\n //\n // These can be reasoned about as followed:\n // Consider a message with an unknown number of bytes, `msg_size. It can be seen that this will have `msg_size / BLOCK_SIZE` full blocks.\n // - `states[i]` should then be the state after processing the first `i` blocks.\n // - `blocks[i]` should then be the next message block after processing the first `i` blocks.\n // blocks[first_partially_filled_block_index] is the last block that is partially filled or all 0 if the message is a multiple of the block size.\n //\n // In other words:\n //\n // blocks = [block 1, block 2, ..., block N / BLOCK_SIZE, block N / BLOCK_SIZE + 1]\n // states = [INITIAL_STATE, state after block 1, state after block 2, ..., state after block N / BLOCK_SIZE]\n //\n // We place the initial state in `states[0]` as in the case where the `message_size < BLOCK_SIZE` then there are no full blocks to process and no compressions should occur.\n let mut blocks: [MSG_BLOCK; N / BLOCK_SIZE + 1] = std::mem::zeroed();\n let mut states: [STATE; N / BLOCK_SIZE + 1] = [initial_state; N / BLOCK_SIZE + 1];\n\n // Optimization for small messages. If the largest possible message is smaller than a block then we know that the first block is partially filled\n // no matter the value of `message_size`.\n //\n // Note that the condition `N >= BLOCK_SIZE` is known during monomorphization so this has no runtime cost.\n let first_partially_filled_block_index = if N >= BLOCK_SIZE {\n message_size / BLOCK_SIZE\n } else {\n 0\n };\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let new_msg_block = build_msg_block(msg, message_size, msg_start);\n\n blocks[i] = new_msg_block;\n states[i + 1] = sha256_compression(new_msg_block, states[i]);\n }\n // If message_size/BLOCK_SIZE == N/BLOCK_SIZE, and there is a remainder, we need to process the last block.\n if N % BLOCK_SIZE != 0 {\n let new_msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * num_blocks);\n\n blocks[num_blocks] = new_msg_block;\n }\n\n (states[first_partially_filled_block_index], blocks[first_partially_filled_block_index])\n }\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start` and pack them into a `MSG_BLOCK`.\npub(crate) unconstrained fn build_msg_block_helper<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> MSG_BLOCK {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let int_input = (block_input + INT_SIZE - 1) / INT_SIZE;\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = (msg_item << 8) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n msg_block\n}\n\n// Build a message block from the input message starting at `msg_start`.\n//\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn build_msg_block<let N: u32>(msg: [u8; N], message_size: u32, msg_start: u32) -> MSG_BLOCK {\n let msg_block =\n // Safety: We constrain the block below by reconstructing each `u32` word from the input bytes.\n unsafe { build_msg_block_helper(msg, message_size, msg_start) };\n\n if !is_unconstrained() {\n let mut msg_end = msg_start + BLOCK_SIZE;\n\n let max_read_index = std::cmp::min(message_size, msg_end);\n\n // Reconstructed packed item\n let mut msg_item: Field = 0;\n\n // Inclusive at the end so that we can compare the last item.\n for k in msg_start..=msg_end {\n if (k != msg_start) & (k % INT_SIZE == 0) {\n // If we consumed some input we can compare against the block.\n let msg_block_index = (k - msg_start) / INT_SIZE - 1;\n assert_eq(msg_block[msg_block_index] as Field, msg_item);\n\n msg_item = 0;\n }\n\n // If we have input to consume, add it at the rightmost position.\n let msg_byte = if k < max_read_index { msg[k] } else { 0 };\n msg_item = msg_item * (TWO_POW_8 as Field) + msg_byte as Field;\n }\n }\n msg_block\n}\n\n// Encode `8 * message_size` into two `u32` limbs.\nunconstrained fn encode_len(message_size: u32) -> (u32, u32) {\n let len = 8 * message_size as u64;\n let lo = len & 0xFFFFFFFF;\n let hi = (len >> 32) & 0xFFFFFFFF;\n (lo as u32, hi as u32)\n}\n\n// Write the length into the last 8 bytes of the block.\nfn attach_len_to_msg_block(mut msg_block: MSG_BLOCK, message_size: u32) -> MSG_BLOCK {\n // Safety: We assert the correctness of the decomposition below.\n // 2 `u32` limbs cannot overflow the field modulus so performing the check as `Field`s is safe.\n let (lo, hi) = unsafe { encode_len(message_size) };\n assert_eq(8 * (message_size as Field), lo as Field + hi as Field * TWO_POW_32);\n\n msg_block[INT_SIZE_PTR] = hi;\n msg_block[INT_SIZE_PTR + 1] = lo;\n msg_block\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\n/// Lookup table for the position of the padding bit within one of the `u32` words in the final message block.\nglobal PADDING_BIT_TABLE: [u32; 4] =\n [(1 << 7) * TWO_POW_24, (1 << 7) * TWO_POW_16, (1 << 7) * TWO_POW_8, (1 << 7)];\n\n/// Add 1 bit padding to end of message and compress the block if there's not enough room for the 8-byte length.\n/// Returns the updated hash state and message block that will be used to write the message size.\n///\n/// # Assumptions:\n///\n/// - `msg_block[i] == 0` for all `i > msg_byte_ptr / INT_SIZE`\n/// - `msg_block[msg_byte_ptr / INT_SIZE] & ((1 << 7) * (msg_byte_ptr % INT_SIZE)) == 0`\nfn add_padding_byte_and_compress_if_needed(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n h: STATE,\n) -> (STATE, MSG_BLOCK) {\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n\n // Lookup the position of the padding bit and insert it into the message block.\n msg_block[index] += PADDING_BIT_TABLE[msg_byte_ptr % INT_SIZE];\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr >= MSG_SIZE_PTR {\n let h = sha256_compression(msg_block, h);\n\n // In this case, the final block consists of all zeros with the last 8 bytes containing the length.\n // We set msg_block to all zeros and attach_len_to_msg_block will add the length to the last 8 bytes.\n let msg_block = [0; INT_BLOCK_SIZE];\n (h, msg_block)\n } else {\n (h, msg_block)\n }\n}\n\npub(crate) fn finalize_sha256_blocks(\n message_size: u32,\n mut h: STATE,\n mut msg_block: MSG_BLOCK,\n) -> HASH {\n let msg_byte_ptr = message_size % BLOCK_SIZE;\n\n let (h, mut msg_block) = add_padding_byte_and_compress_if_needed(msg_block, msg_byte_ptr, h);\n\n msg_block = attach_len_to_msg_block(msg_block, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n/**\n * Given some state of a partially computed sha256 hash and part of the preimage, continue hashing\n * @notice used for complex/ recursive offloading of post-partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the preimage to hash\n * @param message_size - the actual length of the preimage to hash\n * @return the intermediate hash state after compressing in msg to h\n */\npub fn partial_sha256_var_interstitial<let N: u32>(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n __sha_partial_var_interstitial(h, msg, message_size)\n }\n } else {\n let (h, _) = process_full_blocks(msg, message_size, h);\n\n h\n }\n}\n\n/**\n * Given some state of a partially computed sha256 hash and remaining preimage, complete the hash\n * @notice used for traditional partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the remaining preimage to hash\n * @param message_size - the size of the current chunk\n * @param real_message_size - the total size of the original preimage\n * @return finalized sha256 hash\n */\npub fn partial_sha256_var_end<let N: u32>(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n real_message_size: u32,\n) -> [u8; 32] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n h = __sha_partial_var_interstitial(h, msg, message_size);\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, real_message_size, msg)\n }\n } else {\n let (h, msg_block) = process_full_blocks(msg, message_size, h);\n finalize_sha256_blocks(real_message_size, h, msg_block)\n }\n}\n\nunconstrained fn __sha_partial_var_interstitial<let N: u32>(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n h\n}\n\n// Helper function to finalize the message block with padding and length\nunconstrained fn finalize_last_sha256_block<let N: u32>(\n mut h: STATE,\n message_size: u32,\n msg: [u8; N],\n) -> HASH {\n let msg_byte_ptr = message_size % BLOCK_SIZE;\n\n // We now build the final un-filled block.\n let msg_block: MSG_BLOCK = if msg_byte_ptr != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n build_msg_block(msg, message_size, msg_start)\n } else {\n // If the message size is a multiple of the block size (i.e. `msg_byte_ptr == 0`) then this block will be empty,\n // so we short-circuit in this case.\n [0; 16]\n };\n\n // Once built, we need to add the necessary padding bytes and encoded length\n let (h, mut msg_block) = add_padding_byte_and_compress_if_needed(msg_block, msg_byte_ptr, h);\n msg_block = attach_len_to_msg_block(msg_block, message_size);\n\n hash_final_block(msg_block, h)\n}\n\nmod test_process_full_blocks {\n\n /// Wrapper to force an unconstrained runtime on process_full_blocks.\n unconstrained fn unconstrained_process_full_blocks<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n h: super::STATE,\n ) -> (super::STATE, super::MSG_BLOCK) {\n super::process_full_blocks(msg, message_size, h)\n }\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u32) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_state =\n unsafe { unconstrained_process_full_blocks(msg, message_size, super::INITIAL_STATE) };\n let state = super::process_full_blocks(msg, message_size, super::INITIAL_STATE);\n assert_eq(state, unconstrained_state);\n }\n}\n\nmod test_sha256_var {\n\n /// Wrapper to force an unconstrained runtime on sha256.\n unconstrained fn unconstrained_sha256<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n ) -> super::HASH {\n super::sha256_var(msg, message_size)\n }\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u32) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_sha = unsafe { unconstrained_sha256(msg, message_size) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n\n}\n"
4921
4921
  },