@aztec/protocol-contracts 0.0.1-commit.cbf2c2d5d → 0.0.1-commit.ce4f8c4f2

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.
@@ -67,7 +67,7 @@
67
67
  }
68
68
  },
69
69
  "bytecode": "JwACBAEoAAABBIBIJwAABEglAAAASicCBAQCJwIFBAAfCgAEAAUARhwAR0cGLQhGAi0IRwMlAAAAeicCAgRIJwIDBAA7DgADAAIsAABDADBkTnLhMaApuFBFtoGBWF0oM+hIeblwkUPh9ZPwAAAAJwBEBAMnAEUAACYeAgAEAQoiBEMFFgoFBhwKBgcABCoHBAYnAgQBAAoqBQQHJAIABwAAAK0nAggEADwGCAEeAgAFAAoqBgUHJAIABwAAAMQlAAABiicCBQABKQIABgDvUlNNLQgBBycCCAQEAAgBCAEnAwcEAQAiBwIILQoICS0OBgkAIgkCCS0OBQkAIgkCCS0OAgknAgUECC0IAAgtCgcKLQhECwAIAAUAJQAAAZwtAgAALQoKAgoiAkUFCioFBAYkAgAGAAABPiUAAATYHgIABAAvKgACAAQABRwKBQYGHAoGBAAcCgQFBgAqBQMEDioFBAYkAgAGAAABcSUAAATqLQsHAwAiAwIDLQ4DBxwKBAMAMAoAAwACJioBAAEFd9/sC2Ocl6E8BAIBJhwKAwYAKwIABwAAAAAAAAAAAQAAAAAAAAAABCoGBwgtCAEFJwIGBAUACAEGAScDBQQBACIFAgYtCgYHLQxFBwAiBwIHLQxFBwAiBwIHLQxFBwAiBwIHLQ4IBwYiA0QGJwIHBAAnAggBAScCCQQBJwIKBAItCgcEIwAAAhgMKgQGCwAqBQkMLQsMDAAqBQoNLQsNDSQCAAsAAAOUIwAAAjwGIgNECwQiC0QOAioDDgYKKgYHCxYKCw4tCgUEJAIACwAAAmQtCgQEJAIACwAAA0MjAAACcQIqAwYPDioGAxAkAgAQAAACiCUAAAT8DCIPRBAkAgAQAAACmiUAAAUOACICAhEAKhEPEC0LEBAAKgwQES0CBQMnAAQEBSUAAAUgLQgFDAAqDAkQLQ4REAwqCQYFJAIABQAAAt4tCgwLIwAAAzoAKg8JBQ4qDwUGJAIABgAAAvUlAAAE6gwiBUQGJAIABgAAAwclAAAFDgAiAgIIACoIBQYtCwYGACoNBgItAgwDJwAEBAUlAAAFIC0IBQsAKgsKBS0OAgUjAAADOi0KCwQjAAADQwoqAwcFEioFDgMkAgADAAADXi0KBAIjAAADhi0IAQInAgMEBQAIAQMBJwMCBAEAIgQCAwAiAgIFPw8AAwAFIwAAA4YAKgIJAy0LAwMtCgMCJgQiBEQLBiILRA8KKg8EDiQCAA4AAAOwJQAABXoMIgtEDiQCAA4AAAPCJQAABQ4AIgICDwAqDwsOLQsODgAqDA4PLQIFAycABAQFJQAABSAtCAUMACoMCQ4tDg8OACoLCQ4OKgsODyQCAA8AAAQHJQAABOoMIg5EDyQCAA8AAAQZJQAABQ4AIgICEAAqEA4PLQsPDwAqDQ8OLQIMAycABAQFJQAABSAtCAUNACoNCg8tDg4PACIFRAwtCwwMACoLCg4OKgsODyQCAA8AAARnJQAABOoMIg5ECyQCAAsAAAR5JQAABQ4AIgICDwAqDw4LLQsLCwAqDAsOLQINAycABAQFJQAABSAtCAULACILRAwtDg4MLQgBBScCDAQFAAgBDAEnAwUEAQAiCwIMACIFAg0/DwAMAA0AKgQJCy0KCwQjAAACGCoBAAEFursh14IzGGQ8BAIBJioBAAEF0Afr9MvGZ5A8BAIBJioBAAEFG7xl0D/c6tw8BAIBJioBAAEF5AhQRQK1jB88BAIBJi0BAwYKAAYCByQAAAcAAAV1LQABBQAAAQQBAAADBAktAAMKLQAFCwoACgkMJAAADAAABWstAQoILQQICwAACgIKAAALAgsjAAAFRycBBQQBIwAABXktAAMFJioBAAEFBQQbmSCvYEw8BAIBJg==",
70
- "debug_symbols": "rZlRbmMrDIb3kuc8YAwYdyujUZW26ShSlFaZ9kpXVfc+NgdzkpFALZmX8sUp/zG2MST52DztH95/3R9Ozy+/N3c/PjYP58PxePh1f3x53L0dXk5i/dg4/QPeb+5wKyNt7qKM6OuYFnuAOsprkjFCHevrFOrIy0i4uQOnkAVAIGMFBgOZC2m78Q4qgDMIBlzBm8WbBc2CuULwBlQhmnK0ZyV9BCtEA65QfC5AFbI3MEtxvoBM97IKdM7ALIAG4piXaKBXi8xC1DDqWyWuCsEsGlmUEKP6vIBZNLgLiKuYBdTVBXIFdTV4BXE1SOoCqCUpqEXcCBqoAkGmh6xAFaI3MEsySzILgUGskJ1BMOAKbI/gvEB0KihBiLr2Arr26BRShSiCERRiBdJC9ApUIZtFVxolLJH9AsnrrCCAzsAsuuQFxJ8o8UkRKyQwSBXILGQWXWlMCipIClyBg0G1kEODXEFzESUIpEUbWYErBLNoChaQdSWJBmkKCpAziBWyWXKziGCSiJH6k7xCXiCrPwuYRf1ZgCpooJLEMAdVlkDl8vSkkCpoWBYwSzZLNgtXC2u6EylQBdD/kSCwBwOzoFk0LAU0LIkVuEIJi0JxrIBZyCzqGEk0ONfS4pIvBXYGzcILgHOhkUSItDk53cWVmk39XUgdJl8oGanLldgoNltstqTKWCgvVQ6ulPlCZJSbTaO7kIa3kiyDJE8A2oEq6dNiITaCZtMeX0meQUlJ+/xCmvdK0Sg2W1xtqqwtfun55bm6joW0MVVqNl1HJTLSdRAXipV8WcdCzQbNBs3mm63kI39+bjd2pN2/nfd7PdEuzjg5+V535/3pbXN3ej8et5v/dsf38k+/X3enMr7tzvKuVMD+9CSjCD4fjnulz+062/WnEjubTexDE4hwpQB9hRR01xWFFIhWBb5S8H0F1KZaBOTEaPPJf90D9uZBDKHnQRh4kG0JQepkFZiKImIvimmgoD1sEaDU5gf4ugfIzYPLJVwr5EEUIWeLone+F0XuK3gyAc/dPH41igl6axgoZNC7UlHIgLFbzYNiBK+XkCIBcllqEvm6GAAHcci2DOS85hKvNyUM6pHl3lolGGjd1sh0rREH+XRoJZVcWGsKv+FF2xbsPfS9oEFGZKZlhBP3NfKoP9hCMK/xRJe/nlRg2x2ALvWS6gelFfMazTUhmaZKM3QbrR+sgvUOvKSDfM8FPyhMuQhEc0J40KzDSMQBNRGH3X7r483Nxqcbu81oIczk13WE3HViVJpxrc04cGOclHCRFO4GAwfVBbK5TIMBL5pOnirQ6HoFioMC9W2XIVy0i2+4kHJzIVPXhXBz+8Z4a/vGdHv7Rrq1fX81mNwPJo/apmvBBIReywmjwnQZQ6vuPLidDS54IFca05DPgt3qHjtCvLYtiUjXkeFejWntGdLEuiKjy2YiiwgSxImLkux2aLv94jj7+0gcS7gm4d2UBK+xYMIZCfnAZBLepTgnkWOT4DkvAC0WgnlKIrSrqw8w50VYvQgR5iTaByH5BpGmJGK7ZMhdgeckMP5LiTAXztgK3CeYKnD5qhWaBE1KtONIJOaSmtpB8E8kwpQE5hTbJZzSpETre+ymwons23Xr8hPi3xJpcLzLxrDCiN6tmwS+4UVeveC5jMj3b63lwJyEa+eZSPhbe+esBIR2DYfkJiX8KgE3d/BZCeImked6J6wZkexMSrSW4ye71sVCZiU8piZBoStBeW6b/ZRXu8fD+eoHvU/VOh92D8d9ffn8fnq8ePft/1d7x34QfD2/PO6f3s97VVp/FZQ/P+S3tK008J/6VW15CVs5YX9+6tP/AA=="
70
+ "debug_symbols": "rZndbmI5DMffhWsuYufDcV9lNKpoS0dIiFZMu9Kq6ruvnRPnwEiJ2DA3zQ/T/I9jO06Ar83L/unz1+Ph9Pr2e/Pw42vzdD4cj4dfj8e3593H4e0k1q+N0z+AuHnwWxlp8xBl9FjHtNgD1FFek4wR6lhfp1BHXkbymwdwClkABLKvwGAgcyFtN+igAjiDYMAV0CxoFm8WnysENKAK0ZSjPSvpI1ghGnCF4nMBqpDRwCzF+QIyHWUV3jkDs4A3EMdQouFRLTLLew2jvlXiqhDMopH1EmKvPi9gFg3uAuKqzwLq6gK5groaUEFcDZK6AGpJCmoRN4IGqkCQ6SErUIWIBmZJZklmITCIFbIzCAZcge0RnBeITgUlCFHXXkDXHp1CqhBFMIJCrEBaiKhAFbJZdKVRwhIZF0ios4KAdwZm0SUvIP5EiU+KvkICg1SBzEJm0ZXGpKCCpMAVOBhUCzlvkCtoLqIEgbRoIytwhWAWTcECsq4k0SBNQQFyBrFCNktuFhFMEjFSfxIq5AWy+rOAWdSfBaiCBipJDHNQZQlULk9PCqmChmUBs2SzZLNwtbCmO5ECVQD9HwkCIxiYxZtFw1JAw5JYgSuUsCgUxwqYhcyijpFEg3MtLS75UmBn0Cy8ADgXGkmESJuT011cqdnU34XUYcJCyUhdrsRGsdlisyVV9oXyUuXgSpkvREa52TS6C2l4K8kySPIEoB2okj4tFmIjaDbt8ZXkGZSUtM8vpHmvFI1is8XVpsra4peeX56r61hIG1OlZtN1VCIjXQdxoVgJyzoWajZoNmg2bLaSj/z9vd3Ykfb4cd7v9US7OOPk5Hvfnfenj83D6fN43G7+2R0/yz/9ft+dyvixO8u7UgH704uMIvh6OO6VvrfrbNefSuxsNjGGJhDhSgH6CinorisKKRCtCnylgH0Fr021CMiJ0eYT3u4Bo3kQQ+h5EAYeZFtCkDpZBaai6H0vimmgoD1sEaDU5ge43QPPzYPLJVwr5EEUIWeLIjrsRZH7CkgmgNzN461RTNBbw0Ahg96VikIGH7vVPChGQL2EFAmQy1KTyNfFAH4Qh2zL8JzXXOJ1IGFQjyz31irBQOu29pyuNeIgn85bSSUX1pry/8OLti0YEfpe0CAjMtMywon7GnnUH2whPq/x9I5uTyqw7Q7wLvWSioPSinmN5pqQTFOlGbqNFgerYL0DL+kg7LmAg8KUi0A0J4QHzTqMRBxQE3G+228x3t1sMN3ZbUYLYSZc1xFy14lRaca1NuPAjXFSwkVSuBsMP6gukM1lGgzrART8XIFG1ytQPyhQbLvMw0W7yLe7kHJzIVPXhXB3+/bx3vbt0/3t29O97fvWYHI/mDxqm64FEzz0Wk4YFabLPrTqzoPb2eCCB3KlMQ35LNit7rEjxGvbkoh0HRnu1ZjWniFNrCsyumwmsoh4gjhxUZLdDm23Xxxnfx6JYwnXJNBNSfAaCyY/IyEfmEwCXYpzEjk2CZ7zArzFQjBPSYR2dcUAc16E1YsQYU6ifRCSbxBpSiK2S4bcFXhOwse/KRHmwhlbgWOCqQKXr1qhSdCkRDuORGIuqakdBH9FIkxJ+Jxiu4RTmpRofY/dVDg9Y7tuXX5C/FMiDY532RhWGBHdukkg3+5FXr3guYzI92+t5cCchGvnmUjgvb1zVgJCu4ZDcpMSuErA3R18VoK4SeS53glrRiQ7kxKt5eBk17pYyKwE+tQkKHQlKM9ts5/yavd8OF/9oPetWufD7um4ry9fP0/PF+9+/Ptu79gPgu/nt+f9y+d5r0rrr4Ly54f8lraVBv5Tv6otL2ErJ+zPb336fw=="
71
71
  },
72
72
  {
73
73
  "name": "balance_of_public",
@@ -115,7 +115,7 @@
115
115
  }
116
116
  },
117
117
  "bytecode": "JwACBAEoAAABBIBFJwAABEUnAgMEAScCBAQAHwoAAwAEAEMtCEMCJQAAAEAtAgJEJwIDBEQnAgQEATsOAAQAAx4CAAMJJwIEAQEkAgADAAAAVyUAAAEoKQIAAwDvUlNNJwIEAAErAgAFAAAAAAAAAAADAAAAAAAAAAAtCAEGJwIHBAUACAEHAScDBgQBACIGAgctCgcILQ4DCAAiCAIILQ4ECAAiCAIILQ4CCAAiCAIILQ4FCC0IAQInAgMEBQAIAQMBJwMCBAEAIgYCAwAiAgIEPw8AAwAEJwIDBAEAKgIDBC0LBAQnAgIAAAoqBAIDJwICAQAKKgMCBSQCAAUAAAEHJQAAAToeAgACAC8qAAQAAgADHAoDBAYcCgQCABwKAgMGLQoDAiYqAQABBdwbbuv7trxDPAQCASYqAQABBbq7IdeCMxhkPAQCASY=",
118
- "debug_symbols": "nZbLruIwDIbfJesuYudm8ypHR6hAOapUFdQDI40Q7z4JxL0sEo3YkL9O+9W3mD7UqTvcf/b9eL78qt3XQx2mfhj6n/1wOba3/jJG60Pp9OOt2plGeVY726hgXwvhewlqB9Ao9u8VNGSBKEK2jGwZsVixWLE4LcKK4Cy8EUFZBHlFyF4AJaBJwmXBWkS2oNYixAJigeRGjAoRRIjFpHt8Ei4LKxYrFicWR1kknxGTiBZMnBCBmLaSq2/xsjyfjZLU729T16XMr2oRK3Rtp268qd14H4ZG/WmH++um32s7vtZbO8Vd3ahuPMU1As/90CX1bJandflR0AYoPx61XRAONgwoM9inoF4I9jYsBN4QsOYFWXEC9EII+GkcWIqjyrAeZ4YlKDFchRFbQxDIbiaQ2xB8mYAk5TRM8/PWbEsaKuWAOZkcu3pGGA4bBJURxCiJIPZcRHAZYayRMGgJw2jadlWlHAiBMwKBwmcMNNKaiMGWGZXmdBCkIg5XzQn/70as5JwNZii6UWssYMkGGO1LjQUVhJud8Ho55xQ+PB9sirOi1p02SHMGLDkBVPMCnZ+9wFCcN8A1iIYwQ+K8KA6tSj48kIwcjxqLiMroxCAEZFsae7VAOGZxicNS0QlT6U63nFVXcaNeFLsqCpeTUWvxOGuEwWBWsy+eku942R77afOx8kywqW8PQ5cvz/fxuNq9/b3KjnzsXKfLsTvdpy6Rli8eiP/NX44ar7+f6W3/AA=="
118
+ "debug_symbols": "nZbLruIwDIbfJesuYudm8ypHR6hAOapUFdQDI40Q7z5JiVu6SDRiQ/46zVffavpQp+5w/9n34/nyq3ZfD3WY+mHof/bD5dje+ssYrQ+l04+3amca5VntbKOCnRfC1xLUDqBR7F8raMgCUYRsGdkyYrFisWJxWoQVwVl4I4KyCPKIkL0ASkCThMuCtYhsQa1FiAXEAsmNGBUiiBCLSff4JFwWVixWLE4sjrJIPiMmES2YOCECMW0lV19itjyfjZLU729T16XMv9UiVujaTt14U7vxPgyN+tMO9/mm32s7zuutneKublQ3nuIaged+6JJ6NutpXT4K2gDl41HbFeFgw4Ayg30Kakawt2El8IaANS/IihOgV0LAT+PAUhxVhvW4MCxBieEqjNgagkB2C4HchuDLBCQpp2FazlvcJjNUygFLMjl29YIw7DcIKiOIURJB7LmI4DLCWCNh0BqGicXddFWlHAiBMwKBwmcMNNKaiMGWGZXmdBCkIg7fmhPov92IlVyywQxFN2qNBSzZAKN9qbGggnCLE16v7zmFD98PNsVZUetOG6Q5A5acAKp5gc4vXmAozhvgGkRDWCBxXhSHViUfHkhGjkeNRURldGIQArItjb1aIByzuMZhqeiEqXSnW99VV3GjXhT7VhQuJ6PW4nHWCINh7S5rYnd8x8v22E+bj5Vngk19exi6fHm+j8e33dvfq+zIx851uhy7033qEmn94oH43/zlqPH6+5me9g8="
119
119
  },
120
120
  {
121
121
  "name": "check_balance",
@@ -153,7 +153,7 @@
153
153
  }
154
154
  },
155
155
  "bytecode": "JwACBAEoAAABBIBFJwAABEUlAAAARicCAwQBJwIEBAAfCgADAAQARBwAREQGLQhEAiUAAABsJwICBEUnAgMEADsOAAMAAiwAAEMAMGROcuExoCm4UEW2gYFYXSgz6Eh5uXCRQ+H1k/AAAAAmHgIAAwknAgQBASQCAAMAAACDJQAAAZUeAgADAQoiA0MEFgoEBRwKBQYABCoGAwUnAgMBAAoqBAMGJAIABgAAALYnAgcEADwGBwEpAgAEAO9SU00nAgYAASsCAAcAAAAAAAAAAAMAAAAAAAAAAC0IAQgnAgkEBQAIAQkBJwMIBAEAIggCCS0KCQotDgQKACIKAgotDgYKACIKAgotDgUKACIKAgotDgcKLQgBBCcCBQQFAAgBBQEnAwQEAQAiCAIFACIEAgY/DwAFAAYnAgUEAQAqBAUGLQsGBicCBAAACioGBAUKKgUDBCQCAAQAAAFhJQAAAaceAgAEAC8qAAYABAAFHAoFBgYcCgYEABwKBAUGDCoFAgQKKgQDAiQCAAIAAAGUJQAAAbkmKgEAAQUO/iBJ6zdOPDwEAgEmKgEAAQW6uyHXgjMYZDwEAgEmKgEAAQWEcoDChCMLRjwEAgEm",
156
- "debug_symbols": "nZbbjuIwDIbfpddcxHZO5lVGo1EHyqhSVVAHVloh3n2dIe5hpUS73OC/Dvnq2K7be3PsPm9fH/14On83+7d78zn1w9B/fQznQ3vtz6N4741JP2Bis6ddA0DN3iYbnxb90xI0+5CsXLNYC9m6p9+ZbOUaQIQ3KtQTSEXMIqKIKIJBhX8KhJAFggpdIvWQeqx6UjRPwVk4qyJm4UmF3iKgCgGiERGNCpcFq4ezh4xRoR6QMBCS8FmgejD9R/JLZFSox6rHxiycRIicRCpK2u4FSGkpgAr1xOSxSfgsWD3MSTweu0YL/nGdui7Ve9UB0heXdurGa7Mfb8Owa361w+3nT9+Xdvyx13aSVTliNx7FCvDUD11Sj92y25S3MgTdzcA4AxxsCFAhePRK8DYsBN4QsEyQFreZAGAWQsDXTmFLp6gRCKMSyBXz4MoEb72eQtJQzIMvE8hyBpC3pSxUI2DUCJy1pQhiJYK5EBZk1wx4KYseit1UQQRPmRCCnwH2PwpplhAwFEOo9aNMK+1HmSozIm7zAFRGyJzSUnJcTkHb5xJsraXnWrCM2plBHLaMSkNE2ZkZkT2XGdWm1HpQXE4iSd4SQiUXELSvEWJ4jSGvFGVgsGUGlxluGRIOV2MG/j0MKeacDWYoh1HrLmBNB5Dxpe7CCsLNUXizzPwYXnpGVn3x1zOCtfa0QQkBSyGgqw19dFpS0eWBib4GMRBmiKHizMNKUT1EzYZHg0VEZW5iUAJycXLXDsKSxeUcNpaCoEpVyS2PqquEUS+KXRWFi8mgWoPLrFEGA62mX3ypQeP2ff4uV+2hnzbfyo/Emvr2c+jy5ek2Hlar198XXdFv7ct0PnTH29Ql0uqDWz7S3gLtgnt/pLv9AQ=="
156
+ "debug_symbols": "nZbbjuIwDIbfpddcxHZO5lVGI1SgjCpVBXVgpRXi3dcZ4paulGiXG/zXIV8d23V7b47d/va168fT+bvZftyb/dQPQ/+1G86H9tqfR/HeG5N+wMRmS5sGgJqtTTY+LfqnJWi2IVm5ZrEWsnVPvzPZyjWACG9UqCeQiphFRBFRBIMK/xQIIQsEFbpE6iH1WPWkaJ6Cs3BWRczCkwq9RUAVAkQjIhoVLgtWD2cPGaNCPSBhICThs0D1YPqP5JfIqFCPVY+NWTiJEDmJVJS03QuQ0lIAFeqJyWOT8FmwepiTeDw2jRZ8d526LtX7pQOkLy7t1I3XZjvehmHT/GqH28+fvi/t+GOv7SSrcsRuPIoV4KkfuqQem2W3KW9lCLqbgXEGOFgRoELw6JXgbVgIvCJgmSAtbjMBwCyEgO+dwpZOUSMQRiWQK+bBlQneej2FpKGYB18mkOUMIG9LWahGwKgROGtLEcRKBHMhLMiuGfBWFj0Uu6mCCJ4yIQQ/A+x/FNIsIWAohlDrR5lW2o8yVWZEXOcBqIyQOaWl5LicAteVAFtr6bkWLKN2ZhD7NaPSEFF2ZkZkz2VGtSm1HhSXk5A8pitCqOQCgvY1QgzvMeSVogwMtszgMsMtQ8Lhy5iB+M9hSDHnbDBDOYxadwFrOoCML3UXVhBujsKbZebH8NYz8tIXfz0jWGtPG5QQsBQCutrQR6clFV0emOhrEANhhhgqzjysFNVD1Gx4NFhEVOYmBiUgFyd37SAsWVzOYWMpCKpUldzyqLpKGPWi2JeicDEZVGtwmTXKYKBl+tF7DRrX7/NPuWoP/bT6Vn4k1tS3+6HLl6fbeHhZvf6+6Ip+a1+m86E73qYukV4+uOUj7SPQJrjPR7rbHw=="
157
157
  },
158
158
  {
159
159
  "name": "claim",
@@ -2004,7 +2004,7 @@
2004
2004
  }
2005
2005
  },
2006
2006
  "bytecode": "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g2M7k2M7i2M7m2M7h2P7Mcd2Lsd2Hsd2Psd2Acd2Icf2E47tIo7tYo7tpxzbJRzbzzi2n3NsSV+K+5Jj+xXH9muO7Tcc2285tt9xbL/n2C7l2C7j2P7AsQ1wbAXHdjnHdgXHdiXHdhXHdjXHdg3H9keO7U8c27Uc23Uc2/Uc2w0c240c200c280c2y0c260c220c2+0c2x0c250c210c290c2z0c270c230c2585tvs5tgfUvyilY3uQs9pDHNvDHNsjHNujHNtjHNvjHNsTHNtfOLYnObanOLa/cmx/49j+zrH9g2P7J8f2L47t3xzbfzi2pzm2nL69Nqdvr83p22tz+vbanL69Nqdvr83p22tz+vbanL69Nqdvr83p22tz+vbanL69Nqdvr83p22tz+vbaOe7bC/WEsPNlIj0hOB8t2vk5eyqA7MnD+fKizekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsB2eY4tpwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwewzekBbHN6ANucHsA2pwew/SDlU1ib0wPY5vQAtjk9gG1OD2Cb0wPY5vQAtjk9gG1OD2C7Kse2Gse2Osf2UY5tDY5tTY4tp5euzemla3N66dp1OLacXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla6dzbDm9dG1OL12b00vX5vTStTm9dG1OL12b00vX5vTStTm9dG1OL12b00vX5vTStTm9dG1OL12b00vX5vTStTm9dG1OL12b00vX5vTStTm9dG1OL12b00vX5vTStTm9dG1OL12b00vX5vTStTm9dG1OL12b00vXzuTYcnrp2pxeujanl67N6aVrc3rp2pxeujanl67N6aVrk76Ozumla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5euzemla3N66dqcXro2p5eu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",
2007
- "debug_symbols": "tZ3RjvS2kbbvxcc+6Koiq8jcyiIIkqx3YcBwAm+ywI/A9/63RL56xl6M3J6ZnKTfL56pR6RUT0stjvpf3/znd3/553//6fsf/+tv//PNH/7jX9/85afvf/jh+//+0w9/++uf//H93358/r//+uZx/I/FN3/w+Pnbb+z8l9U3f+jPf9jYr3O9+mO/2n71/Rr7te3Xvl9zv+56vuv5rhe7Xjzr5fH6/P06Xvt+zf1a+/X5++P52p68eby2/dr3a67X/twuexwhFJpCV3j+rNkRSmEozB3yofDcQPNnqCPEEY5fb0cohaEwdxgPheO3joGO47eOkY5SGApzh3n81jHaaQquEApNoSscBY+5mUfBYxLmXMEfDwVT8LU9/tib4Y+hsDfD7aGwN8PNFUKhKXSFVHgW9McR5g7HwbOCKbhCrI334wByO0JXSIVS2AN01wBDAwwNMDTA0ABDAwwNsGmATQNsGmDTAJsG2DTApgE2DbBpgF0D7Bpg1wC7Btg1wK4Bdg2wa4BdA+waYGqAqQGmBpgaYGqAqQGWBlgaYGmApQGWBlgaYGmApQGWBjg0wKEBDg1waIBDAxwa4NAAhwZ4HPMrzB2OY36Fo7IfwRVCoSl0hVQohaOyPz3mh8fOYfY9yr4H2fcYz9far2O/Li+dA+17nH0Ps+9R9j3IvsfY9xD7HmHu4dQeTe3B1B5L7aEck3W06HNvxtGh56vtV9+vY8kqzq48wtmVZzAFX46KsyvP0BS6QirU8lgc3XR4LM5OaUcIhabQFVKh1lEXZ6fkEUKhKXSFfSBFK4WhMHfoDwVT2AdSnMY+JuE09hlSoRTG3p7UZqQ2I7UZmQrajNRmpDajtBnqlFCnxHHoHEd4HMfOCqlQCkNh7o0f+3iOs1PO4AqhoAEODXBogEMDHBrg1ACnBjg1wKkBTg1waoBzD7A9Hgqm4Ap7gO3RFVKhFIbCHmCzPcBmpuAKobAH2KwrpEIp7AE23wNs3hS6QirsATYfChpgaIChAYYGGBpgaIChAYYGGBpgaIBNA2waYNMAmwbYmkJXSIVtpHa+TZxh7nC+TZzBFFwhFNr2WJwee/5gO97w1kusl7Ze+np5gtvz59s6f/vmD8fJXD/+cQ7/6JXny/P/S/2A/fz8l84E//SPn7777vgvb04NnyeMf//zT9/9+I9v/vDjP3/44dtv/vfPP/zz/KH/+fuffzxf//Hnn57/9Tlv3/34n8/XZ8H/+v6H747087f89uP9X02v/ctZcf36sFd/v5fr962u36989fc/sentEOr5y21M0PXyptsjdoFnbFeFlu3lEn700CrxPGf5UIk2tAd6f8yPlbh2wodLdH9cJdrH5qKqqUTN/GyJ8Xh8sMS1U4f5h0qMsKtE+9BW5MOvtnhE+1iJelwlRv9QCXuMqzndPliiUeJD05lu11Z4xOenc3xsKx52bYW1D5Z4fHYgz+uQq0R+aKfa43i3PkvY8xC5Sjyvpl4WZx+azieYEv2X1vf2fokxc1eYb/bH79mGMh1YT3vNd7ch3y8xH9c22BvpRb2+DTOud5A3XfrrbRjvl3hebuvgfl5M8waY/ssS82YYNjQT09906fNs8hc14nG3O64Gee6Z+X4Ne7/G80pil3ie9FLhMX5ZwW8qPPwq8Qj7WA279urzMqq9X6PdvbFf6ny+rbFT7HdsRnZ12fP6JT42lLc1qj5WYzKlM2+mdPx7p2MONmO+vxl3zUa7tpnvSqfdHaHOhPqbrejj9RIt1SjP69v+XonbcczrfO3x5sj49Thujs/n51TaiOf7Qb1bot80/PUmMN6cdvZf6rfl3Znr4KB4c7ZmvxRGq5s3s+Jdudp4t8TdVnD50TP6p0u8mYvfVaLGVWJ+rETnzLXXxwYyHm9Oft/fI3dHxbVP55vLgF8dFb19+qjo/dNHxe1WvHZUvFzi/aPivsRLR8VtideOitsSnz8qLFwlnvd3/F1b3JaY2qnW7N1DK+OmxPOz3WsrHuPdU5S8mYzM6wS83r8KyLsOaZwnvX/6nTdt+vx4TBvx/BTspsadOWfXZtTj5pOHuxrFJy/V5/h0jbcf3/yuGuO64K4xHx+sEfOqUV9Q46Pb8XY+HvWx4yOuk5TnZ5nzYzX65AKtv3/hXvn5Y+yuxqv79r7Ga/v25Rof3Y4X++XVGnfHx8s17nqu3135qsRzJ79bYdyY1MzQsT3vqb5f5e5t4dHsel94PHX4wW3xvD7SsOddtPer3PTueJ4pSO3Zxwdr5Lxq3HyEeT+auD5Kfeb+/tE6by/oH3W9Ud18sHxXY/L59nzu78/X8MdHa1yHq918bjY/f2I6P39iej+Sy8vTH+933u150PNm7nUeVPnuedC8uaKvUonxeHMG8ryefbXCGHx29vhghX5V+Ng2VF0N+8FtKNr1o6O4zvE/Oop5faAwh3+wgl0V6mMVrlOOj1awx/XZ9jOOj23FbK+UuP1kZM7BJ4jvfkhkdvsBeeet7THeftQ0flXF7q67uO+BOp8frf6ygt8pq18XbvneB8Nm8flPhs3a5z8aNuuf/WzYLD//iep9kRc/DjX7/Oehv7Ehr30genuM5fVOMLy9e4z5TYXZrgMk27vHmPun31jN49PvrPfb8dpnPq/XeP9Dn9+o8dKnPvc1XvvY577Ga5/73B4dTw1j5HjfQfH4/PFxd2fp1ePjdjtePD5ernFzfNzXeO34uK3x4vFxW+NLjo/i+Hgzlv9zfIwvOD7mFxwf4wuOj/EFx8f4guNjfMHxMf7Nx4ddC2GeZwePd4+PL7jPZF9wo8m+4E6TfcGtJvuCe032BTeb7AvuNv3G8cFdAX9z+fTr4+ML7jjZF9xysi+452RfcNPJvuCuk33BbSf7gvtO98eH9+ujDn9zw+bXx0d+wflpfsH5aX7B+Wl+wflpfsH5aX7B+Wn+u89P+7WUwtLePz+9rfG8P3LVuDnGyj5/a9LKP3tv0io+e3PSqn3+7qRV//yto9sir95vebnI3c2S+yIv3sX6jSKv3cZ6vciHt+TFm1D3x8mLdynvi7x4m9Lu7pe8fLDdFXl5F98XeXEXv1zkw1vyau+8WuT2OHm5yG0DxmdvV54nk5+/X2kzvuKG5W9szat3LO3ujtSrtyx/o8hr9yx/Y0Cv3rS027spL961vC3y6m3L14v448NFXrpx6Y/Pn8D64wtOYO8H89q9y/szpRdvXvojP3v38rbEa7cvf6PEK/cvf2Mgr9zAvC/x0h3M+4G8dAvztsRr9zB/o8QrNzHvS7x0F/O2xKu3Me+347X7mLe3dp635DofjeT7NxBvL0toNn9zFvCrGuefIL57n+q6Cdnenls9ftWufrcUhaP87dvL/ylxO5LrPtXzndPfdeDdZrw5Rss/NpJ5/bnPL3fs76nx/KC8vzkPuSlyt27qekvwt3+u+fjVQXr3x0+v3tZ1r8/e1vW7P4B69bbufZEXb+v67R2R127r/saGfMFt3ecJIeut35w2/K7eD04wm7+7AMHv/gzKRl7bMdu7H8969M8vQThV9eljNT5/rN7dE3n179Pui7z4B2rnBzGfPVbjKzrvvsh13h8ZfnPA/4YTixuJb84L+6/npN29/ed1yv72ovf/1Oh3n0pef2r85n73ePyOrUj+hiZnvb8Vdfe5Jis7njnf/TOzuw0Jv/7E9imRd/9IzNvdjdVHXH9u/HhzzRyvb0Vc75nPBuzvbkW/cdnTDdffyLZ49zazd/8CD/X4Ag/d3Rh50UN396te9tBtkVc91OvzHrrdkFc99HKRm7+VvS/y6mlE2r95Sl48jbjtvHZdQTw/j3m//+/+XormbW+6/1cPZ7ndiG51bUS+/xfyd3/MYv3h1y2a/vbxDb92an6FU39jW+z6ePaZ62ZbbrTark9SemCR3/HMHD5X6vbm4vCY1T8+//Xnv37/0y8fEXk8tum4oDie2hTnYwz361yvx5P9joEdzyk6X32/Hk8q8v2oIt/PKor9sKLj9VmvnQ+N269zvR4Pczpfbb/6fo392vZr36+5X3e92PVi12u7Xtv12q7Xdr2267Vdr+16bddru17b9fqu13e9vuv1Xa/ven3X67te3/X6rtd3vdz1ctfLXe94qll/7snjoWbna9+vx+Pmngf18USz83Xs17lej8eZna+2fv54mNn5uuudj8M7/nvfr7te7Xq169WuN3a9seuNXW/semNv39jbN3a9seuNXW/senPXOx6Pd776fo39urdv7nrHE87O19qvY7/O9WqPXdAepuAKodAUukIqlMJQUOXjOWcrmIIrhIIqmyqbKpsqmyrbnoP1LFXTw1RNT1M1PU71oeepPvRA1YeeqPrQI1Ufeqaq6aGqpqeq2n6s6gqqHJqN0DaHtjm0zaHKMRQ0G02z0TQbTZWbKjdVbqrcVLlpNpq2uWmbu7a5q3LXPHfNRtdsdM1GV+Wuyl2VuyqnKqdmI7XNqW1ObbM6zFLznJqN1GykZkNtdj4UdgVVLlVWq5l6zdRspm4ztdv54Niz8tA8q+NMLWfqORuqPFRZbWfqO1PjmTrP1Hqm3jM13/lw2bPy1Dyr/0wNaOrA8ymz67d2ZVcPunrQ1YOuHnT1oKsHXT14Pon2qHw+iXaFPRuuHnT14Pkk2vO3TJXVg64edPWgqwddPejqQVcPno+kPSu7K4RCU+gKquyqrB509aCrB1096OpBVw+6etBDlSMVNBvqQVcPno+tPX+rqbJ60NWDrh509aCrB1096OrB8/m1Z+WueVYPunrQ1YPn82vP3+qqrB509aCrB1096OpBVw+6etD1Hud6k3P1oKsHXT3oeqNzvdO5etDVg64edPWgqwddPejqwfUA2IeeAPvQI2AfegbsQw+BfegpsKbHwJqeA2t6EKzpSbC2HwW7grZZPejqwfPxsGflqXlWD7p60NWD58Nu12+psnrQ1YOhHgz1YKgHQz0Y6sF47MrxSIVSGAp7Ns7nzp6/ZaqsHgz1YKgHQz0Y6sFQD4Z6MEyV/aFgCq4QCqrsqqweDPVgqAdDPRjqwVAPhnrwfNjtWTmagmZDPRjqwQhVDlVWD4Z6MNSDoR4M9WCoB0M9eD4Q96zcNM/qwVAPhnowuip3VVYPhnow1IOhHgz1YKgHQz0YqcqpeVYPhnow1IOhU83QuWaoB0M9GOrBUA+GejDUg6EePB+je1YuzbN6MNSDoR4MnXiej9FdQZXVg6EeDPVgqAdDPRjqwRiqPDXP6sFQD4Z6MHQaej5qdwVVVg+GejDUg0092NSDTT3YHrvy+czdFbpCKpTC0G+psnqwqQeberCpB5t6sKkHm3rwfObuWdmGwp6Nph5s6sGmc9HzubwrqLJ6sKkHm3qwqQeberCpB8/n8p6VwxU0G+rBph5sOhc9H9C7giqrB5t6sKkHm3qwqQebevB8QO9ZuWme1YNNPdjUg03noucDeldQZfVgUw829WBTDzb1YFMPtq7KqXlWDzb1YFMPNp2LNvVg0/tg0/tgUw82nYu2UmVd8zX1YFMPNvVg0/tgO3swjnBUPh6xfPbgGeYOZw+ewRRcIRSaQldIBVUeqjxUearyVOWpylOVpypPVZ6qPFV5qvLclfvjoWAKrhAKTaErpEIpDAVVNlU2VTZVPnvw/FSgKXSFo/I8QikMhbnD2YNnsP1bZw+eQZXPHjx/piuosquyq7KrcqhyqHKocqhyaJtD2xyqHKocqhyq3FT57MEzuEIoaJubKp89eIZSGApzh67KXZW7KndV7qrcNRtd29y1zV3b3FX57MEzaDZSs5GajVTlVOVU5VTlVOXUbJS2ubTNpW0uVS7Nc2k2SrNRmo1S5VLlocpDlYcqD83G0DYPbfPQNg9VHprnodmYmo2p2ZiqPFV5qvJU5anKU7Mxtc1zb3M+Hgq7cj5cIRSaQldI/VYpDAVVNlU2U3CFUGgKqmypUApDYc9GqgfTVdlV2VVZPZjqwVQPpnow1YPpqhwPBc2GejDVgxmqHKqsHkz1YKoHUz2Y6sFUD6Z6MJsqN82zejDVg6kezKbKTZXVg6keTPVgqgdTPZjqwVQPZlflrnlWD6Z6MNWDmaqcqqweTPVgqgdTPZjqwVQPpnowS5VL86weTPVgqgezVLlUWT2Y6sFUD6Z6MNWDqR5M9WAOVR6aZ/VgqgdTPZhTlacqqwdTPZjqwVQPpnow1YOpHsy5K9fjoWAKrhAKu3I9ukIqlMJQ2LNR6sFSD5Z6sPQ+WHofLPVgqQdLPVh6Hyy9D5Z6sNSDpR4s9WCpB0s9WOrBclX2oaDZUA+WerBClUOV1YOlHiz1YKkHSz1Y6sFSD1ZT5aZ5Vg+WerDUg9VUuamyerDUg6UeLPVgqQdLPVjqweqq3DXP6sFSD5Z6sFKVU5XVg6UeLPVgqQdLPVjqwVIPVqpyaZ7Vg6UeLPVglSqXKqsHSz1Y6sFSD5Z6sNSDpR6socpD86weLPVgqQdrqPJQZfVgqQdLPVjqwVIPlnqw1IM1VXlqntWDQz041IPjsSuPRyg0ha6QCqUwFPY2D/XgMFU2VwiFptAVVFnnokM9ONSDQz041INDPTjUg0M9OFyVPRVKYShoNnQuOkKV1YNDPTjUg0M9ONSDQz041IMjVLlpntWDQz041IND56KjqbJ6cKgHh3pwqAeHenCoB4d6cHRV7ppn9eBQDw714NC56OiqrB4c6sGhHhzqwaEeHOrBoR4cqcqpeVYPDvXgUA8OnYuOUmX14FAPDvXgUA8O9eBQDw714BiqPDTP6sGhHhzqwaFz0TFUWT041INDPTjUg0M9ONSDQz04pipPzbN6cKgHh3pw6lx0PkzBFUKhKXSFVCiFoaDK9lAwBVcIBVVWD069D069D0714NS56HRV1vXgVA9O9eBUD069D86jB4/1JfPowTx/ayjMHY4eXMEUXCEUmkJXSAVVDlUOVW6q3FS5qfLRg8fSlnn04ApdIRVKYSjMHY4eXMEUXEGVuyp3Ve6q3FW5q/LRg8fS8nn04Aqm4Aqh0BS6QiqUwlA4Ktdxt/qh8Kx8LMmZRw+uEApNoSukQikMhbnD0YMrqPJQ5aHKQ5WHKg9VPnpwHgfJ0YMrzB2OHlzh+Cq6PIIrhEJT6AqpUApDYa5w/G3ElexKfqW4UrtSv1Jeqa40rnQx7GLYxbCLYRfDLoZdDLsYdjHsYtjF8IvhF8Mvhl8Mvxh+Mfxi+MXwi+EXIy5GXIy4GHEx4mLExYiLERcjLsb5BWfn94M+zi/A3NGIfv7FxBmD2IidmMQiDuK84vlVfzsaEVqH1qF1aB1ah9ahdWgJLaEltISW0BJaQktoCS2hFbSCVtAKWkEraAWtoJ1fKevnfju/WnDF82tldzxpdUYnBrEROzGpUERo55fRrp89v452R2gT2oQ2oU1oE9qENqHNa2znSh7Fi3au5lEMYiN2YhKLOIjX2M7VPZt2fiXejk4MYiNCM2gGzaAZNH8QGZszNmdsDu38HsQdk1jEQYQW0AJaQAtowUwGYwvGFowtoAX7rTGTjZlszGSD1qA1aA1ag9aYycbYOmPrjK1D6+y3zkx2ZrIzkx1ah9ahJbSElsxkMrZkbMnYElqy35KZTGaymMmCVtAKWkEraMVMFmMrxlaMDZesL6nekZkczORgJnHJ+krrHaENaLjEcInhEsMlhkvWV1wv2mS/4RLDJYZL1rdenxXW917vaEQnBrEROzGJRbxo69uyV8Qljkscl6xvzV4VDBoucVziuMRxieMSxyWOS9yheRAbsROTCM2h4RLHJY5LHJc4LnFc4rjEA1oUkZnEJY5L1ldzrwoNGi5xXOK4xHGJ4xLHJY5LvEPr7Ddc4rjEcYl3aB0aLnFc4rjEcYnjEscljks8oSX7DZc4LnFcsr7/e1UoaLjEcYnjEscljksclzgucc5LnPMSxyWOSxyXOOclznmJ4xLHJY5LHJc4LnFc4rjEJ7TJfsMljkscl/iENqHhksAlgUsClwQuCVwSuCQeFy0eRRzEayYDl6zv+V4VDBouCVwSuCRwSeCSwCWBS8KhuRGdGMRGhObQcEngksAlgUsClwQuCVyyvop80aITmUlcErgkAlqDhksClwQuCVwSuCRwSeCS9VXmi9bYb7gkcEngkvXt5qtCh4ZLApcELglcErgkcEngkkhoyX7DJYFLApesb0ffFaDhksAlgUsClwQuCVwSuCQKWrHfcEngksAlwTVOcI0TuCRwSeCSwCWBSwKXBC6JCW2y33BJ4JLAJcE1zvoS9h2h4ZLAJQ2XNFzScEnDJe1x0dqjE5NYxEGEZtBwScMlDZc0XNJwScMlDZesb25fNLv2W8MlDZc0XNK4xlnf9L4jNFzScEnDJQ2XNFzScMn65vdFiyAyk7ik4ZLGNU4LaLik4ZKGSxouabik4ZKGS1qD1thvuKThkoZLGtc4rUPDJQ2XNFzScEnDJQ2XNFzSElqy33BJwyUNlzSucVpCwyUNlzRc0nBJwyUNlzRc0gpasd9wScMlDZc0rnEaLmmclzTOSxouaVzjtAGNz0saLmm4pOGSxnlJWy6ZZzxox3ec2rm2TbEROzGJRRzEqXiudFM0ohOD2IidmMQiDiI0g2bQDJpBM2gGzaAZNINm0ByaQ3NoDs2hOTSH5tBOlxyPrrBzjdyOp0t2PGn9jE4MYiN2YlKhiNBOl6yfPV2yI7QGrUFr0Bq0Bq1Ba9AaY+uMrUPr0Dq0Dq1DO12yYxEHkbEltNMlOzoxiI0ILaEltISW0IqZLMZWjK0YW0E7XbIjM1nMZDGTBW1AG9AGtAFtMJODsQ3GNhjbgDbYb5OZnMzkZCYntAltQpvQJrTJTM5rbPl4EI140fIRxEbsxCQWFQYRmkEzaObEIDZiJ0KzIg7iNZPpDyI0h+bQHJpD8yQyNmdszthwSYYRmclgJoOZxCUZ0AJaQMMliUsSlyQuSVySDVpjv+GSxCWJS7JB69BwSeKSxCWJSxKXJC5JXJIdWme/4ZLEJYlLMqElNFySuCRxSeKSxCWJSxKXZEEr9hsuSVySuCQLWkHDJYlLEpckLklckrgkcUkOaIP9hksSlyQuyQltQsMliUsSlyQuSVySuCRxST0uWj2M6MQgNmKnQhKLOIjQcEnhksIlhUvKoFknJrGIgwjNoeGSwiWFSwqXFC4pXFK4pDgvKc5LCpcULilcUpyXFOclhUsKlxQuKVxSuKRwSeGSatAa+w2XFC4pXFINWoOGSwqXFC4pXFK4pHBJ4ZLq0Dr7DZcULilcUgktoeGSwiWFSwqXFC4pXFK4pApasd9wSeGSwiVV0AoaLilcUrikcEnhksIlhUtqQBvsN1xSuKRwSQ1oExouKVxSuKRwSeGSwiWFS2pCm9d+G7hk4JKBS8bjoo1HI3ZiEos4iNfYBi4ZuGQYNAtiI3ZiEqEZNFwycMnAJQOXDFwycMnAJcOheREHkZnEJYNrnME1zsAlA5cMXDJwycAlA5cMXDIatMZ+wyUDlwxcMrjGGQ0aLhm4ZOCSgUsGLhm4ZOCS0aF19hsuGbhk4JLBNc5IaLhk4JKBSwYuGbhk4JKBS0ZCS/YbLhm4ZOCSwTXOKGi4ZOCSgUsGLhm4ZOCSgUvGgDbYb7hk4JKBSwbXOGNAwyUDlwxcMnDJwCUDlwxcMia0yX7DJQOXTFwyucaZDycGsRE7MYlFHMRrbNOgmRGdGMRGhGbQcMnEJROXTFwyccnEJROXTIfmnZjEIg4iNFwyOS+ZnJdMXDK5xpkBjc9LJi6ZuGTiksl5yVwuqTMetLaeWRLERuzEJBZxEOcVT5fsaERoHVqH1qF1aB1ah9ahJbSEltASWkJLaAktoSW0hFbQClpBK2gFraAVtIJ2uuR4yped61R3PF2y40mLMzoxiI3YiUmFIkI7XbJ+9nTJjtAmtAltQpvQJrQJbUKbGpufC1oVRfNzSatiEBuxE5NYxEGcVzRop0t2dGIQGxGaQTNoBs2g+YPI2JyxOWNzaKdLdkxiEQcRWkALaAEtoAUzGYwtGFswtoAW7LfGTDZmsjGTDVqD1qA1aA1aYyYbY+uMrTO2Dq2z3zoz2ZnJzkx2aB1ah5bQEloyk8nYkrElY0toyX5LZjKZyWImC1pBK2gFraAVM1mMrRhbMbYBbbDfBjM5mMnBTA5oA9qANqANaJOZnIxtMrbJ2Ca0yX6bzORkJiczOS/aWve6oxGdGMRG7MQkFvGirXWvK+ISwyWGS9a611XBoOESwyWGSwyXGC4xXGK4ZK17XTQPYiN2YhKhOTRcYrjEcInhEsMlhksMl6x1r4sWRWQmcYnhkrXudVVo0HCJ4RLDJYZLDJcYLjFcsta9Llpnv+ESwyWGS9a6110BGi4xXGK4xHCJ4RLDJYZL1rrXRUv2Gy4xXGK4ZK17XRUKGi4xXGK4xHCJ4RLDJYZLrKAV+w2XGC4xXGID2oCGSwyXGC4xXGK4xHCJ4ZK17nXRJvsNlxguMVyy1r3uCtBwieMSxyWOSxyXOC5xXLLWvZ60te51x0G8ZtJxyVr3uioYNFziuMRxieMSxyWOSxyXrHWvi+ZGdGIQGxGaQ8MljksclzgucVziuMRxyVr3umjRicwkLnFcsta9rgoNGi5xXOK4xHGJ4xLHJY5L1rrXRWvsN1ziuMRxyVr3uip0aLjEcYnjEscljksclzguWeteFy3Zb7jEcYnjkrXudVeAhksclzgucVziuMRxieOSte510Yr9hksclzgu8QFtQMMljksclzgucVziuMRxyVr3umiT/YZLHJc4LvEJbULDJY5LHJcELglcErgkcMla93rS1rrXHZNYxEGEZtBwSeCSwCWBSwKXBC4JXLLWvS6aXfstcEngksAlwTXOWve6IzRcErgkcEngksAlgUvWutdFiyAyk7gkcElwjbPWve4IDZcELglcErgkcEngkrXuddEa+w2XBC4JXBJc46x1rztCwyWBSwKXBC4JXBK4ZK17XbRkv+GSwCWBS4JrnLXudUdouCRwSeCSwCWBSwKXrHWvi1bsN1wSuCRwSXCNE7gkOC8JzksClwTXOGvd647QcEngksAlwXnJWvd6PPPf17rX83nsa93rjo3YiUks4iBOxbXudUcjOjGIjdiJSSziIEIzaAbNoBk0g2bQDJpBM2gGzaE5NIfm0ByaQ3NoDu10yXru7+mSFU+X7HjQzqfArnWvOwaxETsxqVBEaKdL1s+eLtkRWoPWoDVoDVqD1qA1aI2xdcbWoXVoHVqH1qGdLtmxiIPI2BLa6ZIdnRjERoSW0BJaQktoxUwWYyvGVoytoJ0u2ZGZLGaymMmCNqANaAPagDaYycHYBmMbjG1AG+y3yUxOZnIykxPahDahTWgT2mQm5zW2te51RyNetLXudcdG7MQkFhUGEZpBM2jmxCA2YidCsyIO4jWTa93rjtAcmkNzaA7Nk8jYnLE5Y8Mla93rjsxkMJPBTOKSte51R2gBDZd0XNJxScclHZesda/7qePsN1zScUnHJWvd66rQoeGSjks6Lum4pOOSjks6LlnrXhets99wScclHZesda+rQkLDJR2XdFzScUnHJR2XdFyy1r0uWrHfcEnHJR2XrHWvuwI0XNJxScclHZd0XNJxSccla93rog32Gy7puKTjkrXudVWY0HBJxyUdl3Rc0nFJxyUdl6x1rydtrXvd0YlBbMROhSQWcRCh4ZLEJYlLEpesda+LZp2YxCIOIjSHhksSlyQuSVySuCRxSeKS5LwkOS9JXJK4JHFJcl6SnJckLklckrgkcUniksQliUvWutdFa+w3XJK4JHHJWve6K0DDJYlLEpckLklckrgkccla97ponf2GSxKXJC5Z615XhYSGSxKXJC5JXJK4JHFJ4pK17nXRiv2GSxKXJC5Z6153BWi4JHFJ4pLEJYlLEpckLlnrXhdtsN9wSeKSxCVr3euqMKHhksQliUsSlyQuSVySuGSte120ee23wiWFSwqXrHWvZ4W17nXHTkxiEQfxGlvhksIla93rolkQG7ETkwjNoOGSwiWFSwqXFC4pXFK4ZK17XTQv4iAyk7ikuMYprnEKlxQuKVxSuKRwSeGSwiVr3euiNfYbLilcUrikuMZZ6153hIZLCpcULilcUrikcMla97ponf2GSwqXFC4prnHWutcdoeGSwiWFSwqXFC4pXLLWvS5ast9wSeGSwiXFNc5a97ojNFxSuKRwSeGSwiWFS9a610Ub7DdcUrikcElxjbPWve4IDZcULilcUrikcEnhkrXuddEm+w2XFC4ZuGRwjbPWve4YxEbsxCQWcRCvsa11r4tmRnRiEBsRmkHDJQOXDFwycMnAJQOXDFyy1r0umndiEos4iNBwyeC8ZHBeMnDJ4BpnrXvdERouGbhk4JLBecla93p8w4Kvda/HFwX4Wve6YyN2YhKLOIjzisslKxoRWofWoXVoHVqH1qF1aAktoSW0hJbQElpCS2gJLaEVtIJW0ApaQStoBa2gLZeMM84rLpeseNLmGZ0YxEbsxKRCEaEtl5w/u1yyIrQJbUKb0Ca0CW1Cm9DmNba17nXHi7bWve4YxEbsxCQWcRCvsa11r4u2XLKiE4PYiNAMmkEzaAbNH0TG5ozNGZtDWy5ZMYlFHERoAS2gBbSAFsxkMLZgbMHYAlqw3xoz2ZjJxkw2aA1ag9agNWiNmWyMrTO2ztg6tM5+68xkZyY7M9mhdWgdWkJLaMlMJmNLxpaMLaEl+y2ZyWQmi5ksaAWtoBW0glbMZDG2YmzF2HDJWve6IzM5mMnBTOKSte51R2gDGi6ZuGTikolLJi5Z614XbbLfcMnEJROXrHWvR4VY6153NKITg9iInZjEIooWa93ripdL4nG5JB6XS2Kte10VDJpBM2gG7XJJPIyxOWNzxubQPIiN2IlJhObQHFpAC2jBTAZjC8YWjC2gRRGZyWAmGzPZoDVoDVqD1qA1ZrIxtsbYGmPr0Dr7rTOTnZnszGSH1qF1aB1ah5bMZDK2ZGzJ2BJast+SmUxmMpnJhFbQClpBK2jFTBZjK8ZWjK2gFfttMJODmRzM5IA2oA1oA9qANpjJwdgmY5uMbUKb7LfJTE5mcjKTE9qEhksMlxguMVxiuMRwieGSte71pK11rzsO4jWThkvWutdVwaDhEsMlhksMlxguMVxiuGSte100N6ITg9iI0BwaLjFcYrjEcInhEsMlhkvWutdFi05kJnGJ4ZK17nVVaNBwieESwyWGSwyXGC4xXLLWvS5aY7/hEsMlhkvWutdVoUPDJYZLDJcYLjFcYrjEcMla97poyX7DJYZLDJesda+7AjRcYrjEcInhEsMlhksMl6x1r4tW7DdcYrjEcIkNaAMaLjFcYrjEcInhEsMlhkvWutdFm+w3XGK4xHCJTWgTGi4xXGK4xHGJ4xLHJY5L1rrXk7bWve6YxCIOIjSDhksclzgucVziuMRxieOSte510ezab45LHJc4LnGH5tBwieMSxyWOSxyXOC5xXLLWvS5aBJGZxCWOSzygBTRc4rjEcYnjEscljkscl6x1r4vW2G+4xHGJ4xLv0Do0XOK4xHGJ4xLHJY5LHJesda+Lluw3XOK4xHGJJ7SEhksclzgucVziuMRxieOSte510Yr9hksclzgu8YKGS5zzEue8xHGJD2gD2oCGSxyXOC5xzkvWutfjW05irXvNdsYgNmInJrGIgzgV17rXHY3oxCA2YicmsYiDCM2gGTSDZtAMmkEzaAbNoBk0h+bQHJpDc2gOzaE5tNMlmWecVzxdsuNJqzM6MYiN2IlJhSJCO12yfvZ0yY7QGrQGrUFr0Bq0Bq1Ba4ytM7YOrUPr0Dq0Du10yY5FHETGltBOl+zoxCA2IrSEltASWkIrZrIYWzG2YmwF7XTJjsxkMZPFTBa0AW1AG9AGtMFMDsY2GNtgbAPaYL9NZnIyk5OZnNAmtAltQpvQJjM5r7Gtda87GvGirXWvOzZiJyaxqDCI0AyaQTMnBrEROxGaFXEQr5lc6153hObQHJpDc2ieRMbmjM0ZGy5Z6153ZCaDmQxmEpesda87QgtouKThkoZLGi5puGSte120xn7DJQ2XNFyy1r2uCh0aLmm4pOGShksaLmm4pOGSte510Tr7DZc0XNJwyVr3uiokNFzScEnDJQ2XNFzScEnDJWvd66IV+w2XNFzScMla97orQMMlDZc0XNJwScMlDZc0XLLWvS7aYL/hkoZLGi5Z615XhQkNlzRc0nBJwyUNlzRc0nDJWvd60ta61x2dGMRG7FRIYhEHERou6bik45KOS9a610WzTkxiEQcRmkPDJR2XdFzScUnHJR2XdFzSOS/pnJd0XNJxScclnfOSznlJxyUdl3Rc0nFJxyUdl3Rcsta9Llpjv+GSjks6LlnrXncFaLik45KOSzou6bik45KOS9a610Xr7Ddc0nFJxyVr3euqkNBwScclHZd0XNJxScclHZesda+LVuw3XNJxSccla93rrgANl3Rc0nFJxyUdl3Rc0nHJWve6aIP9hks6Lum4ZK17XRUmNFzScUnHJR2XdFzScUnHJWvd66LNa78lLklckrhkrXs9K6x1rzt2YhKLOIjX2BKXJC5Z614XzYLYiJ2YRGgGDZckLklckrgkcUniksQla93ronkRB5GZxCXJNU5yjZO4JHFJ4pLEJYlLEpckLlnrXhetsd9wSeKSxCXJNc5a97ojNFySuCRxSeKSxCWJS9a610Xr7DdckrgkcUlyjbPWve4IDZckLklckrgkcUnikrXuddGS/YZLEpckLkmucda61x2h4ZLEJYlLEpckLklcsta9Ltpgv+GSxCWJS5JrnLXudUdouCRxSeKSxCWJSxKXrHWvizbZb7gkcUnhkuIaZ6173TGIjdiJSSziIF5jW+teF82M6MQgNiI0g4ZLCpcULilcUrikcEnhkrXuddG8E5NYxEGEhkuK85LivKRwSXGNs9a97ggNlxQuKVxSnJesda85z3jQ6qxwumTHRuzEJBZxEOcVT5fseNBqnNGJQWzETkxiEQdxXvF0yY7QElpCS2gJLaGdLjm+PTfWutcdGVsxttMlOzKTxUwWM1nMZDGTxUwWM1nQBrQBbUAb0Aa0AW0wtsFMDmZyMJOTmZzM5GQmJzM5mcnJTE5oE9qENi/aWve6oxFds77WvZ6jWOted+zEJBZxEK+ZXOtedzSiE6EZNINm0AyaQTNozticsbkTg9iInZjEIg4iMxnQAlpAC2gBLaCdLlmzfrpk9DMO4rzi6ZIdjejEIDZiJx604+unY6173XEQ5xVPl+xoRCcGsRE7EVqH1qF1aAktoZ0umfOMQXzSnjcYz9iJSSziIM4rHi5RNKITgwitoBW0glbQCtqANqANaAPagDagDWgD2oA2oE1oE9qENqFNaBPahDahTWjzop3rXhWN6MQgNmInJrGIgwjNoBm0wyXP27pnPGjuZ2zETkxiEQdxXvFwiaIRnQjNoTk0h+bQHJpDC2gBLaAFtIAW0AJaQAtoAa1Ba9AatAatQWvQGrQGrUFr0Dq0wyXPm95ndGIQG7ETk1jEQZxXPFyiCC2hJbSEltASWkJLaAmtoBW0glbQClpBK2gFraAVtAFtQBvQBrQBbUAb0Aa0AW1Am9AmtAltQpvQJrQJbUKb0KZo7Vz3qmhEJwaxETsxiUUcRGgGzaAZNINm0AyaQTNoBs2gOTSH5tAcmkNzaA7NoTk0hxbQAlpAC2gBLaAFtIAW0AJag9agNWgNWoPWoDVoDVqD1qB1aB1ah9ahdWgdWofWoXVoHVpCS2gJLaEltISW0BJaQktoBa2gFbSCVtAKWkEraAWtoA1oA9qANqANaAPagDagDWgD2oQ2oU1oE9qENqFNaBPahIZLDJcYLjFcYrjEcInhEsMlhksMlxguMVxiuMRwieESwyWGSwyXGC4xXGK4xHCJ4RLDJYZLDJcYLjFcYrjEcInhEsMlhksMlxguMVxiuMRwieESwyWGSwyXGC4xXGK4xHCJ4RLDJYZLDJcYLjFcYsslccaD1tb/G8RG7MSD1vKMB+14qlQ7170qHrR+xtMlOxrRiQct/YyNeNCyn/Gg5frZIh60evz87Tf/++efvv/zX3747n+++cO/nv/8r3/++Nd/fP+3H/c///H//q7/8pefvv/hh+//+09//+lvf/3uP//503d/+uFvfz3+2zd2/M9zQ/8jrL6N6H98vkk///Vsh2+fB+nzX8cB/h/x6N/Go/74LOX6hedN5m+ft2j3Lxwb7+X6hedd8G+f97yPX4jjF+Is8m17HP9P1//j8UT+8eeff/7jz/8f",
2007
+ "debug_symbols": "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",
2008
2008
  "verification_key": "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"
2009
2009
  },
2010
2010
  {
@@ -3856,7 +3856,7 @@
3856
3856
  }
3857
3857
  },
3858
3858
  "bytecode": "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",
3859
- "debug_symbols": "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hJbQElpCS2gFraAVtIJW0ApaQStoBa2gDWgD2oA2oA1oA9qANqANaAPahDahTWgT2oQ2oU1oE9qENkWLc92rYiMa0YlB7MQkFnEQoTVoDVqD1qA1aA1ag9agNWgNmkEzaAbNoBk0g2bQDJpBM2gOzaE5NIfm0ByaQ3NoDs2hBbSAFtACWkALaAEtoAW0gNahdWgdWofWoXVoHVqH1qF1aAktoSW0hJbQElpCS2gJLaEVtIJW0ApaQStoBa2gFbSCNqANaAPagDagDWgD2oA2oA1oE9qENqFNaBPahDahTWgTGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZLGi5puKThkoZL2nJJnPGgxfp/nRjETjxoUWc8aMdTpeJc96p40PoZT5fs2IhGPGjpZwziQcs840HL9bNFPGjVznjQ6vy10yU7HrTqZzTiQav657ff/J/vfv7huz/9+P3/fvOHfzz/+d9//+nPf/vhLz/tf/7t//5V/+VPP//w448//M8f//rzX/78/X/9/efv//jjX/58/Ldv2vE/T+J/eKtv3ft/Pt/bn/96dtG3z2P7+a+jL/7Dnyfs/qj/fJYy/cLz3vS3zzu7+xcs7Vsr0y88b55/+7xVfvyCH7/gZ5Fv43H8P13/z/PM0p8/889//uc//x8=",
3859
+ "debug_symbols": "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JvsNlxguMVxiE9qEhksMlxgucVziuMRxieOSte71pK11rzsmsYiDCK1BwyWOSxyXOC5xXOK4xHHJWve6aO3ab45LHJc4LnGucda61x2h4RLHJY5LHJc4LnFcsta9Lpo7kZnEJY5LnGucte51R2i4xHGJ4xLHJY5LHJesda+LFuw3XOK4xHGJc42z1r3uCA2XOC5xXOK4xHGJ45K17nXRkv2GSxyXOC5xrnHWutcdoeESxyWOSxyXOC5xXLLWvS5asd9wieMSxyXONY7jEue8xDkvcVziXOOsda87QsMljksclzjnJWvd6/GVM7bWvZ7PY1/rXncMYicmsYiDOBXXutcdG9GITgxiJyaxiIMIrUFr0Bq0Bq1Ba9AatAatQWvQDJpBM2gGzaAZNINm0E6XrOf+ni5Z8XTJjgftfArsWve6oxOD2IlJhSJCO12yfvZ0yY7QAlpAC2gBLaAFtIAWjK0ztg6tQ+vQOrQO7XTJjkUcRMaW0E6X7GhEJwYRWkJLaAktoRUzWYytGFsxtoJ2umRHZrKYyWImC9qANqANaAPaYCYHYxuMbTC2AW2w3yYzOZnJyUxOaBPahDahTWiTmZzX2Na61x0b8aKtda87BrETk1hUGERoDVqD1ozoxCB2IrRWxEG8ZnKte90RmkEzaAbNoFkSGZsxNmNsuGSte92RmXRm0plJXLLWve4IzaHhko5LOi7puKTjkrXudT91nP2GSzou6bhkrXtdFTo0XNJxScclHZd0XNJxSccla93ronX2Gy7puKTjkrXudVVIaLik45KOSzou6bik45KOS9a610Ur9hsu6bik45K17nVXgIZLOi7puKTjko5LOi7puGSte120wX7DJR2XdFyy1r2uChMaLum4pOOSjks6Lum4pOOSte71pK11rzsa0YlB7FRIYhEHERouSVySuCRxyVr3umitE5NYxEGEZtBwSeKSxCWJSxKXJC5JXJKclyTnJYlLEpckLknOS5LzksQliUsSlyQuSVySuCRxyVr3umjBfsMliUsSl6x1r7sCNFySuCRxSeKSxCWJSxKXrHWvi9bZb7gkcUnikrXudVVIaLgkcUniksQliUsSlyQuWeteF63Yb7gkcUnikrXudVeAhksSlyQuSVySuCRxSeKSte510Qb7DZckLklcsta9rgoTGi5JXJK4JHFJ4pLEJYlL1rrXRZvX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hJbQElpCS2gJLaEVtIJW0ApaQStoBa2gFbSCNqANaAPagDagDWgD2oA2oA1oE9qENqFNaBPahDahTWgT2hQtznWvio1oRCcGsROTWMRBhNagNWgNWoPWoDVoDVqD1qA1aAbNoBk0g2bQDJpBM2gGzaA5NIfm0ByaQ3NoDs2hOTSHFtACWkALaAEtoAW0gBbQAlqH1qF1aB1ah9ahdWgdWofWoSW0hJbQElpCS2gJLaEltIRW0ApaQStoBa2gFbSCVtAK2oA2oA1oA9qANqANaAPagDagTWgT2oQ2oU1oE9qENqFNaLik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouabik4ZKGSxouacslccaDFuv/dWIQO/GgRZ3xoB1PlYpz3aviQetnPF2yYyMa8aClnzGIBy3zjAct188W8aBVO+NBq/PXTpfseNCqn9GIB63qn99+83+++/mH7/704/f/+80f/vH853///ac//+2Hv/y0//m3//tX/Zc//fzDjz/+8D9//OvPf/nz9//195+//+OPf/nz8d++acf/PIn/4a2+de//+Xxvf/7r2UXfPo/t57+OvvgPf56w+6P+81nK9AvPe9PfPu/s7l+wtG+tTL/wvHn+7fNW+fELfvyCn0W+jcfx/3T9P88zS3/+zD//+Z///H8=",
3860
3860
  "verification_key": "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"
3861
3861
  },
3862
3862
  {
@@ -3925,7 +3925,7 @@
3925
3925
  }
3926
3926
  },
3927
3927
  "bytecode": "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",
3928
- "debug_symbols": "tZvRbh6pDoDfJde9wGDA7qusVqtsN11FitIq2x7pqOq7H2zA/tMj2MlMe5P5xn9+Y8AYG5Jvd389/Pn17z8enz9++ufu/W/f7v58eXx6evz7j6dPH+6/PH56btJvd0F+QGkPeNee+e59bM8axnO803gnHE/uTx7v3N9jSONJ/QlxPGt/5vb7KE/qz5LGc7zX8V7HO5W799SeDOPZ7IFmaAphQtMIUYAHwJSASEqDKBIS4AEpjY8SDUCxPAjQgFwGFJggo5Ea6PCgQB5AaYJ8nRtwnFA7YIgTpgSmBMqAGCbkCTwg4YTWRGodRLG5Qx2QYUIeIDPbwSQ8QAY7oQANoCmR8e7QDMPW9xyaBKNA+zq2j7KMc4cpkXHGIsAD0pRgnNBMzW3ispjaoQwQU3MWaKbmNk25yu+wQB4gjtihaS7yLXFFBU4TqEMJQ1LE1NKML6mZUVCgDECYMCV5SvKUFPl6FeABMnSFBGgATYk4QJW2xJ7avKXK0HVoCmsbhAoiIYEyQOZdP5J5V0hNQkEgD5Dp7kADcusOZYEyQHy1w5TUKalTImPYASfwALG5A3UgcVoigTpAjO+QJ/AAcYAOUyILrUP7OjebSTyhw5SIryqIA3AREIl8S8YZgnwmA92JTEYqaxNMnIymjGW0O4nFUZ49mnEM4ylxISQhnqSRoRNNQpNl/UbzCa5RqAiVSQRGJmOT8ZQ140UNBEU2BGkGUFHahiwYi2ESXVF/V5xiIAZHl2aX5hspG0ronUiG2q2B1VA7JpGvYTHk4IiONBFCcnQpREdVJn2DCI4uTegopifZpABFmlSDrABI+gu5GhaVFsVqWF1aXap9G1gM2aVs0qi7zsDsyIa69wx0aUyO2jAJpuhYDBEcXdr7VgV73zq6tLq0upRcSi5ll7JJU4iOLgWXgkujS6NL1T0HFkN0Kbo0u1TdcyAbFnQkQ40HA71h72Yib4K9CbYmsE9hR3S0hhGSozWM3mP0HqP3GL3HiN4EesPoTWRvOHsTxRv2iUWfWKzeBHnD5E2wN8zeBFvDOSRHazj7HGef4xzB0RrOKThmR28C0dGbyN6wu3J2V87Fm6jecPUmyBsmb4K8Yd0CJFUBTQA6Ft0EOsouMDEbyl4w8UbKhrJfTayG2aXZpcWbKK6suLKKji4ll5Kb7h0qbE3UYA1X3b4QFFVZz9iDo9qQFNlQV9ZAl1aXVpfqXjuwGmoAGVgmUgBHa5ggOGoTsr9RJEPdcDErkmEf9aJYDbvpVZENq0u76RIyqQ+qIKtXIwvqOh7oUnXljrp4c1DMhuq/A8mwuLS4VFesJLQNpYmsBZKu2IHFkF2qMSpr8aQxaqD0IidBXYUZtcoCR5fq0hso4yC5dNun0FDX28BqWF1aXdrtLYraRBXUCDMwT4QQHNGRDXWoJaOPoLueZPAR1DLJzxuSoQ7qQJdWl1aXkks14BWtNTXgKWod2jQKalwf6NLoUh3UgdJjSf1j348HsmE3vaNLi0u76TKSWtOqV8e+NXfUPWugS9UfBpaJvdgtRTEbgkt7hxR7h6oiGfYOKfYOdXRpdqlGDSll2jCEsfRi348HsmF1qU5Lxx41Okrfiky3FsQTpeHaVktEjRoDXaqhYqC0VmWOUQNeR3WjgdUQXYou1b5JSdawTBu0MJ6YDatLtW8D2VD7VlGxGmrfBpo0h+joUnCpzltN37+/u5uHMn98eXl4kDOZm1Oadnbz+f7l4fnL3fvnr09P7+7+c//0VX/pn8/3z/r8cv/SPm0D9vD8V3s2hR8fnx6Evr/zb4f1V1u+L8FSv96Yo6nIcFhHizZ56pAYc0ZHIJzdACljVjrSWkebGhwqYo7ZNNR42IqWfSezoq26lRV5rYNLrENF2x7INGB+bUZZqygEc05Kq6lvVOArFXU3FnNG4s184BsmRLJ5HwpeTghv+hESz37cTumP/YBwtSNHjShrI7ZjgQFtLFqivxoL2Hhn5TAdvC0zXKrATVewTDNaUnqzzPi1io13JpyD0UL7aoXsbeA4bWhZ/9KGjW8mW6bYUgLXcG4oU1oO5cYrapnrvB2QuU+8ZTrNrSrf9uK1igiboQSyZd7yvNVQxrhZHXVqiLyezqNDWeCMY7eTwRkoqNXyy5HIux0EfQNhV0GvfSJuYmak2Y/EN0E3vd4J48YtWYuqHrhbEmI62kn+ax20DTbJgg26Y6U3WGGro1UtsLQibeIVcZxrlLjwWgfsAsXsSLrZxFKg45PaMvI5qSmU1aSmjWtl8tH0CaF6zjdxGXTTbj9H285rXNmQyi61idl20hDXcTvVnZIA1ZSEtAy8iS4HnMQXA86uI8w1ej+QVkbgzjezO2femLGfFLyZFF4OBm68q92Hmg6GdBN16JyHrtNe3HhotHWW4CZgvMWGQmYDLdN3rJcjONLVCI58PYLncDWCHx5NXo5mjrvQGbLn3rCKOjltC6pkOWsrrpYBI2+SvXbQZ3ZQoKWD7w2p7JGrjcjSkO1yzcXDRotjSyW7vLPUOSKpwrn6EMknBvlUpSsXAaYjh+WSLxslKeAcjnRbcL+lKznemJHpVFdK8BqxpqWO8ourdo5etXNdzkrJ12vVUq7WqoetOFustuNlP42BtX9tI2kNFknXh0I1bM9Bip2D4DLpqbA/FPIzoaWXH+8InhqLFGc8bzcG67G4XrjXq4V7vV6416uF++GhXFeb9WrhvrchuA1xGSsILic7FK8mO5SuJzuEV5OdvRXHylUq18tVqlfL1e2kHitXiS+Wq4d9sywPlRgulqscf0K5yuknlKuMl8tVzhfL1V1HjparXC+Xq/8yKcfKVebr5ephDyU8d1vkiWe7e14fpof4SxPgdpftdrQL6lN9AYvj8pddm77kX5oBtztFy4BjrnltR71+cwWBrt9dQeBfeXsVi2U7EG+LvR8HBLb5ZwK/HE2bex+IlxNhgHQ5E35Tb+LJMcGbShxpfWUA5XIGBbtrpGMpFABdz6EA+PKJ0d6OY1kU7K6TjqZRsLtQOpZH7ef2WCIFEa8e/L/BT3l9S7i7VTqUTUGsPyGdgt290uF8CiJfTqhgd7d07MZx15ejKRWkeDmn+repOZZUQcLrWdV2t6rFj2wqpVOpSE3hRkdZ+vvuduZnpFUUzFMjre/cYHfNZAe19SaDOG4D+QkY30SgH8PYXoWNJt/kdW9RwR6AuKYzKmLIU0UMJZ9TYSfWLeE9ZwWYZzWkUyrQ/swgIpyzAt0KyQRPqbCksCXM9ZSKbDtCi+t8TkXKP1MFnhvObA4eC5xy8FgyeJp+UsVtpn9uUoulXz9FBZ5SkahkS5xqOanCrqc4nBrO5Bch6favef4vf9vdLWU/Ms/xptaAN5hBbgafmxL9x7sRc+CcimD3jk1FvBo8z6oA+/vaCCWcVBFdBVwO4WdVVDYVdC54gs9Im52TKizmxJNh66YjZ1VE+9vYGCuu11lN59bZ7+3t/sPjy6t/2v8uul4e7/98ehivH78+f7j59Mt/P89P5j/9f3759OHhr68vD6LJ//O//fgtt9w4Y/793V2SNwjvmhntTf5hqn0I7TX9/l1s+R8="
3928
+ "debug_symbols": "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"
3929
3929
  }
3930
3930
  ],
3931
3931
  "outputs": {
@@ -4736,7 +4736,7 @@
4736
4736
  "path": "std/array/mod.nr",
4737
4737
  "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 vector.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let vector = array.as_vector();\n /// assert_eq(vector, [1, 2].as_vector());\n /// ```\n #[builtin(as_vector)]\n pub fn as_vector(self) -> [T] {}\n\n /// Returns this array as a vector.\n /// This method is deprecated in favor of `as_vector`.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let vector = array.as_slice();\n /// assert_eq(vector, [1, 2].as_vector());\n /// ```\n #[builtin(as_vector)]\n #[deprecated(\"This method has been renamed to `as_vector`\")]\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 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 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 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 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"
4738
4738
  },
4739
- "308": {
4739
+ "307": {
4740
4740
  "function_locations": [
4741
4741
  {
4742
4742
  "name": "Poseidon2::hash",
@@ -5252,7 +5252,7 @@
5252
5252
  "path": "std/ops/arith.nr",
5253
5253
  "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 (Field doesn't implement Rem)\n assert_eq(17u64.rem(5u64), 2u64);\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 (Field doesn't implement Rem)\n assert_eq(42u32.rem(42u32), 0u32);\n assert_eq(0u16.rem(42u16), 0u16);\n assert_eq(1u64.rem(42u64), 1u64);\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"
5254
5254
  },
5255
- "397": {
5255
+ "396": {
5256
5256
  "function_locations": [
5257
5257
  {
5258
5258
  "name": "sha256_to_field",
@@ -5370,7 +5370,7 @@
5370
5370
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
5371
5371
  "source": "mod poseidon2_chunks;\n\nuse crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, nullifier::Nullifier, private_log::PrivateLog,\n transaction::tx_request::TxRequest,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, DOM_SEP__NOTE_HASH_NONCE,\n DOM_SEP__PRIVATE_LOG_FIRST_FIELD, DOM_SEP__SILOED_NOTE_HASH, DOM_SEP__SILOED_NULLIFIER,\n DOM_SEP__UNIQUE_NOTE_HASH, FUNCTION_TREE_HEIGHT, NULL_MSG_SENDER_CONTRACT_ADDRESS,\n 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\n// TODO: refactor these into their own files: sha256, poseidon2, some protocol-specific hash computations, some merkle computations.\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\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 compute_siloed_note_hash(contract_address: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [contract_address.to_field(), note_hash],\n DOM_SEP__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique, siloed note hashes from siloed note hashes.\n///\n/// The protocol injects uniqueness into every note_hash, so that every single note_hash in the\n/// tree is unique. This prevents faerie gold attacks, where a malicious sender could create\n/// two identical note_hashes for a recipient (meaning only one would be nullifiable in future).\n///\n/// Most privacy protocols will inject the note's leaf_index (its position in the Note Hashes Tree)\n/// into the note, but this requires the creator of a note to wait until their tx is included in\n/// a block to know the note's final note hash (the unique, siloed note hash), because inserting\n/// leaves into trees is the job of a block producer.\n///\n/// We took a different approach so that the creator of a note will know each note's unique, siloed\n/// note hash before broadcasting their tx to the network.\n/// (There was also a historical requirement relating to \"chained transactions\" -- a feature that\n/// Aztec Connect had to enable notes to be spent from distinct txs earlier in the same block,\n/// and hence before an archive block root had been established for that block -- but that feature\n/// was abandoned for the Aztec Network for having too many bad tradeoffs).\n///\n/// (\n/// Edit: it is no longer true that all final note_hashes will be known by the creator of a tx\n/// before they send it to the network. If a tx makes public function calls, then _revertible_\n/// note_hashes that are created in private will not be made unique in private by the Reset circuit,\n/// but will instead be made unique by the AVM, because the `note_index_in_tx` will not be known\n/// until the AVM has executed the public functions of the tx. (See an explanation in\n/// reset_output_composer.nr for why).\n/// For some such txs, the `note_index_in_tx` might still be predictable through simulation, but\n/// for txs whose public functions create a varying number of non-revertible notes (determined at\n/// runtime), the `note_index_in_tx` will not be deterministically derivable before submitting the\n/// tx to the network.\n/// )\n///\n/// We use the `first_nullifier` of a tx as a seed of uniqueness. We have a guarantee that there will\n/// always be at least one nullifier per tx, because the init circuit will create one if one isn't\n/// created naturally by any functions of the tx. (Search \"protocol_nullifier\").\n/// We combine the `first_nullifier` with the note's index (its position within this tx's new\n/// note_hashes array) (`note_index_in_tx`) to get a truly unique value to inject into a note, which\n/// we call a `note_nonce`.\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, DOM_SEP__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n DOM_SEP__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_note_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_nullifier(contract_address: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [contract_address.to_field(), nullifier],\n DOM_SEP__SILOED_NULLIFIER,\n )\n}\n\npub fn create_protocol_nullifier(tx_request: TxRequest) -> Scoped<Counted<Nullifier>> {\n // The protocol nullifier is ascribed a special side-effect counter of 1. No other side-effect\n // can have counter 1 (see `validate_as_first_call` for that assertion).\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_first_field(\n contract_address: AztecAddress,\n field: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [contract_address.to_field(), field],\n DOM_SEP__PRIVATE_LOG_FIRST_FIELD,\n )\n}\n\npub fn compute_siloed_private_log(contract_address: AztecAddress, log: PrivateLog) -> PrivateLog {\n let mut fields = log.fields;\n fields[0] = compute_siloed_private_log_first_field(contract_address, fields[0]);\n PrivateLog::new(fields, log.length)\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_siloed_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n key_type_domain_separator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n key_type_domain_separator,\n )\n}\n\npub fn compute_l2_to_l1_message_hash(\n message: Scoped<L2ToL1Message>,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = message.contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = message.inner.recipient.to_be_bytes();\n let content_bytes: [u8; 32] = message.inner.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\n// TODO: consider a variant that enables domain separation with a u32 (we seem to have standardised u32s for domain separators)\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\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// 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 subarray_hash_matches_fixed() {\n let values_to_hash = [3; 17];\n let padded = values_to_hash.concat([0; 11]);\n let subarray_hash = poseidon2_hash_subarray(padded, values_to_hash.len());\n\n // Hash the entire values_to_hash.\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(values_to_hash, values_to_hash.len());\n\n assert_eq(subarray_hash, fixed_len_hash);\n}\n\n#[test]\nfn subarray_hash_matches_variable() {\n let values_to_hash = [3; 17];\n let padded = values_to_hash.concat([0; 11]);\n let subarray_hash = poseidon2_hash_subarray(padded, values_to_hash.len());\n\n // Hash up to values_to_hash.len() fields of the padded array.\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(padded, values_to_hash.len());\n\n assert_eq(subarray_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 unique_siloed_note_hash_matches_typescript() {\n let inner_note_hash = 1;\n let contract_address = AztecAddress::from_field(2);\n let first_nullifier = 3;\n let note_index_in_tx = 4;\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, inner_note_hash);\n let siloed_note_hash_from_ts =\n 0x1986a4bea3eddb1fff917d629a13e10f63f514f401bdd61838c6b475db949169;\n assert_eq(siloed_note_hash, siloed_note_hash_from_ts);\n\n let nonce: Field = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n let note_hash_nonce_from_ts =\n 0x28e7799791bf066a57bb51fdd0fbcaf3f0926414314c7db515ea343f44f5d58b;\n assert_eq(nonce, note_hash_nonce_from_ts);\n\n let unique_siloed_note_hash_from_nonce = compute_unique_note_hash(nonce, siloed_note_hash);\n let unique_siloed_note_hash = compute_note_nonce_and_unique_note_hash(\n siloed_note_hash,\n first_nullifier,\n note_index_in_tx,\n );\n assert_eq(unique_siloed_note_hash_from_nonce, unique_siloed_note_hash);\n\n let unique_siloed_note_hash_from_ts =\n 0x29949aef207b715303b24639737c17fbfeb375c1d965ecfa85c7e4f0febb7d16;\n assert_eq(unique_siloed_note_hash, unique_siloed_note_hash_from_ts);\n}\n\n#[test]\nfn siloed_nullifier_matches_typescript() {\n let contract_address = AztecAddress::from_field(123);\n let nullifier = 456;\n\n let res = compute_siloed_nullifier(contract_address, nullifier);\n\n let siloed_nullifier_from_ts =\n 0x169b50336c1f29afdb8a03d955a81e485f5ac7d5f0b8065673d1e407e5877813;\n\n assert_eq(res, siloed_nullifier_from_ts);\n}\n\n#[test]\nfn siloed_private_log_first_field_matches_typescript() {\n let contract_address = AztecAddress::from_field(123);\n let field = 456;\n let res = compute_siloed_private_log_first_field(contract_address, field);\n\n let siloed_private_log_first_field_from_ts =\n 0x29480984f7b9257fded523d50addbcfc8d1d33adcf2db73ef3390a8fd5cdffaa;\n\n assert_eq(res, siloed_private_log_first_field_from_ts);\n}\n\n#[test]\nfn empty_l2_to_l1_message_hash_matches_typescript() {\n // All zeroes\n let res = compute_l2_to_l1_message_hash(\n L2ToL1Message { recipient: EthAddress::zero(), content: 0 }.scope(AztecAddress::from_field(\n 0,\n )),\n 0,\n 0,\n );\n\n let empty_l2_to_l1_msg_hash_from_ts =\n 0x003b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992;\n\n assert_eq(res, empty_l2_to_l1_msg_hash_from_ts);\n}\n\n#[test]\nfn l2_to_l1_message_hash_matches_typescript() {\n let message = L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n );\n let version = 4;\n let chainId = 5;\n\n let hash = compute_l2_to_l1_message_hash(message, version, chainId);\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let l2_to_l1_message_hash_from_ts =\n 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, l2_to_l1_message_hash_from_ts);\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"
5372
5372
  },
5373
- "405": {
5373
+ "404": {
5374
5374
  "function_locations": [
5375
5375
  {
5376
5376
  "name": "merkle_hash",
@@ -5412,7 +5412,7 @@
5412
5412
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/merkle_tree.nr",
5413
5413
  "source": "use crate::{\n hash::{accumulate_sha256, poseidon2_hash},\n traits::Empty,\n utils::math::is_power_of_2_u32,\n};\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn sha_merkle_hash(left: Field, right: Field) -> Field {\n accumulate_sha256(left, right)\n}\n\n#[derive(Eq)]\npub struct MerkleTree<let N: u32> {\n pub leaves: [Field; N],\n pub nodes: [Field; N - 1],\n}\n\nimpl<let N: u32> Empty for MerkleTree<N> {\n fn empty() -> Self {\n MerkleTree { leaves: [0; N], nodes: [0; N - 1] }\n }\n}\n\nimpl<let N: u32> MerkleTree<N> {\n pub fn new(leaves: [Field; N]) -> Self {\n let nodes = compute_merkle_tree_nodes(leaves, merkle_hash);\n MerkleTree { leaves, nodes }\n }\n\n pub fn new_sha(leaves: [Field; N]) -> Self {\n let nodes = compute_merkle_tree_nodes(leaves, sha_merkle_hash);\n MerkleTree { leaves, nodes }\n }\n\n pub fn get_root(self) -> Field {\n self.nodes[N - 2]\n }\n\n pub fn get_sibling_path<let K: u32>(self, leaf_index: u32) -> [Field; K] {\n assert_eq(2.pow_32(K as Field), N as Field, \"Invalid path length\");\n\n let mut path = [0; K];\n let mut current_index = leaf_index;\n let mut subtree_width = N;\n\n let mut current_sibling_index = sibling_index(current_index);\n\n path[0] = self.leaves[current_sibling_index];\n\n let mut subtree_offset: u32 = 0;\n\n for i in 1..K {\n current_index = current_index / 2;\n subtree_width = subtree_width / 2;\n\n current_sibling_index = sibling_index(current_index);\n\n path[i] = self.nodes[subtree_offset + current_sibling_index];\n\n subtree_offset += subtree_width;\n }\n\n path\n }\n}\n\npub fn sibling_index(index: u32) -> u32 {\n if index % 2 == 0 {\n index + 1\n } else {\n index - 1\n }\n}\n\npub fn compute_merkle_tree_nodes<let N: u32>(\n leaves: [Field; N],\n hasher: fn(Field, Field) -> Field,\n) -> [Field; N - 1] {\n // Note: `N` must be a power of 2.\n std::static_assert(is_power_of_2_u32(N), \"N must be a power of 2\");\n std::static_assert(N != 1, \"2 must divide N\");\n\n let mut nodes = [0; N - 1];\n\n let total_nodes = N - 1;\n let half_size = N / 2;\n\n // Hash base layer.\n for i in 0..half_size {\n nodes[i] = hasher(leaves[2 * i], leaves[2 * i + 1]);\n }\n\n // Hash the other layers.\n for i in 0..(total_nodes - half_size) {\n nodes[half_size + i] = hasher(nodes[2 * i], nodes[2 * i + 1]);\n }\n\n nodes\n}\n"
5414
5414
  },
5415
- "407": {
5415
+ "406": {
5416
5416
  "function_locations": [
5417
5417
  {
5418
5418
  "name": "root_from_sibling_path",
@@ -5566,7 +5566,7 @@
5566
5566
  "path": "std/panic.nr",
5567
5567
  "source": "pub fn panic<T, U>(message: T) -> U\nwhere\n T: StringLike,\n{\n assert(false, message);\n crate::mem::zeroed()\n}\n\ntrait StringLike {}\n\nimpl<let N: u32> StringLike for str<N> {}\nimpl<let N: u32, T> StringLike for fmtstr<N, T> {}\n"
5568
5568
  },
5569
- "430": {
5569
+ "429": {
5570
5570
  "function_locations": [
5571
5571
  {
5572
5572
  "name": "derive_storage_slot_in_map",
@@ -5580,7 +5580,7 @@
5580
5580
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr",
5581
5581
  "source": "use crate::{\n constants::DOM_SEP__PUBLIC_STORAGE_MAP_SLOT, hash::poseidon2_hash_with_separator,\n traits::ToField,\n};\n\n// TODO: Move this to src/public_data/storage/map.nr\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash_with_separator(\n [storage_slot, key.to_field()],\n DOM_SEP__PUBLIC_STORAGE_MAP_SLOT,\n )\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 0x2d225f361108379adc2da91378b9702675c5546b57e78bafc1e74ec7fec55967;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n"
5582
5582
  },
5583
- "438": {
5583
+ "437": {
5584
5584
  "function_locations": [
5585
5585
  {
5586
5586
  "name": "<impl Packable for bool>::pack",
@@ -5702,7 +5702,7 @@
5702
5702
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr",
5703
5703
  "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 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"
5704
5704
  },
5705
- "451": {
5705
+ "450": {
5706
5706
  "function_locations": [
5707
5707
  {
5708
5708
  "name": "Reader<N>::new",
@@ -5752,7 +5752,7 @@
5752
5752
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/reader.nr",
5753
5753
  "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 peek_offset(&mut self, offset: u32) -> Field {\n self.data[self.offset + offset]\n }\n\n pub fn advance_offset(&mut self, offset: u32) {\n self.offset += offset;\n }\n\n pub fn finish(self) {\n assert_eq(self.offset, self.data.len(), \"Reader did not read all data\");\n }\n}\n"
5754
5754
  },
5755
- "452": {
5755
+ "451": {
5756
5756
  "function_locations": [
5757
5757
  {
5758
5758
  "name": "derive_serialize",
@@ -5778,7 +5778,7 @@
5778
5778
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/serialization.nr",
5779
5779
  "source": "use crate::{reader::Reader, writer::Writer};\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 mut writer: Writer<Self::N> = Writer::new();\n/// self.stream_serialize(&mut writer);\n/// writer.finish()\n/// }\n///\n/// fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n/// let bytes = self.as_bytes();\n/// for i in 0..bytes.len() {\n/// writer.write(bytes[i] as Field);\n/// }\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n let N: u32;\n\n fn serialize(self) -> [Field; Self::N];\n\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>);\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/// fn serialize(self) -> [Field; Self::N] {\n/// let mut writer: Writer<Self::N> = Writer::new();\n/// self.stream_serialize(&mut writer);\n/// writer.finish()\n/// }\n///\n/// #[inline_always]\n/// fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n/// Serialize::stream_serialize(self.fields, writer);\n/// Serialize::stream_serialize(self.length, writer);\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 params_len_quote = get_params_len_quote(params);\n\n let function_body = params\n .map(|(name, _typ): (Quoted, Type)| {\n quote {\n $crate::serialization::Serialize::stream_serialize(self.$name, writer);\n }\n })\n .join(quote {});\n\n quote {\n impl$generics_declarations $crate::serialization::Serialize for $typ\n $where_serialize_clause\n {\n let N: u32 = $params_len_quote;\n\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: $crate::writer::Writer<Self::N> = $crate::writer::Writer::new();\n $crate::serialization::Serialize::stream_serialize(self, &mut writer);\n writer.finish()\n }\n\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut $crate::writer::Writer<K>) {\n $function_body\n }\n }\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/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// let mut reader = Reader::new(fields);\n/// let result = Self::stream_deserialize(&mut reader);\n/// reader.finish();\n/// result\n/// }\n///\n/// fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n/// let mut bytes = [0 as u8; M];\n/// for i in 0..M {\n/// bytes[i] = reader.read() as u8;\n/// }\n/// str::<M>::from(bytes)\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n let N: u32;\n\n fn deserialize(fields: [Field; Self::N]) -> Self;\n\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self;\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(fields: [Field; Self::N]) -> Self {\n/// let mut reader = Reader::new(fields);\n/// let result = Self::stream_deserialize(&mut reader);\n/// reader.finish();\n/// result\n/// }\n///\n/// #[inline_always]\n/// fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n/// let x = <AztecAddress as Deserialize>::stream_deserialize(reader);\n/// let y = <Field as Deserialize>::stream_deserialize(reader);\n/// Self { x, y }\n/// }\n/// }\n/// ```\npub 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::serialization::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 $param_name = <$param_type as Deserialize>::stream_deserialize(reader);\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 $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::serialization::Deserialize::stream_deserialize(reader) }\n }\n } else {\n quote {\n Self {}\n }\n };\n\n quote {\n impl$generics_declarations $crate::serialization::Deserialize for $typ\n $where_deserialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = $crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut $crate::reader::Reader<K>) -> Self {\n $function_body\n }\n }\n }\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\ncomptime 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::serialization::Serialize>::N\n }\n })\n .join(quote {+});\n quote { ($params_quote_without_parentheses) }\n }\n}\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\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"
5780
5780
  },
5781
- "454": {
5781
+ "453": {
5782
5782
  "function_locations": [
5783
5783
  {
5784
5784
  "name": "<impl Serialize for bool>::serialize",
@@ -6108,7 +6108,7 @@
6108
6108
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr",
6109
6109
  "source": "use crate::{reader::Reader, serialization::{Deserialize, Serialize}, writer::Writer};\nuse std::embedded_curve_ops::EmbeddedCurvePoint;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\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 fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> bool {\n reader.read() != 0\n }\n}\n\nimpl Serialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u1\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self);\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read()\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u8 as Field);\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u16 as Field);\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u32 as Field);\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u64 as Field);\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() 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\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n for i in 0..M {\n self[i].stream_serialize(writer);\n }\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 fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut result: [T; M] = std::mem::zeroed();\n for i in 0..M {\n result[i] = T::stream_deserialize(reader);\n }\n 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 fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write_bool(self.is_some());\n if self.is_some() {\n self.unwrap_unchecked().stream_serialize(writer);\n } else {\n writer.advance_offset(<T as Serialize>::N);\n }\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 fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n if reader.read_bool() {\n Option::some(<T as Deserialize>::stream_deserialize(reader))\n } else {\n reader.advance_offset(<T as Deserialize>::N);\n Option::none()\n }\n }\n}\n\nglobal SCALAR_SIZE: u32 = 2;\n\nimpl Serialize for EmbeddedCurveScalar {\n\n let N: u32 = SCALAR_SIZE;\n\n fn serialize(self) -> [Field; SCALAR_SIZE] {\n [self.lo, self.hi]\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.lo);\n writer.write(self.hi);\n }\n}\n\nimpl Deserialize for EmbeddedCurveScalar {\n let N: u32 = SCALAR_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { lo: fields[0], hi: fields[1] }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { lo: reader.read(), hi: reader.read() }\n }\n}\n\nglobal POINT_SIZE: u32 = 3;\n\nimpl Serialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn serialize(self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.x);\n writer.write(self.y);\n writer.write(self.is_infinite as Field);\n }\n}\n\nimpl Deserialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { x: fields[0], y: fields[1], is_infinite: fields[2] != 0 }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { x: reader.read(), y: reader.read(), is_infinite: reader.read_bool() }\n }\n}\n\nimpl<let M: u32> Deserialize for str<M> {\n let N: u32 = M;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let u8_arr = <[u8; Self::N] as Deserialize>::stream_deserialize(reader);\n str::<Self::N>::from(u8_arr)\n }\n}\n\nimpl<let M: u32> Serialize for str<M> {\n let N: u32 = M;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.as_bytes().stream_serialize(writer);\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> Deserialize for BoundedVec<T, M>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M + 1;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut new_bounded_vec: BoundedVec<T, M> = BoundedVec::new();\n let payload_len = Self::N - 1;\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 = reader.peek_offset(payload_len) as u32;\n\n for i in 0..M {\n if i < len {\n new_bounded_vec.push(<T as Deserialize>::stream_deserialize(reader));\n }\n }\n\n // +1 for the length of the BoundedVec\n reader.advance_offset((M - len) * <T as Deserialize>::N + 1);\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 let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(_reader: &mut Reader<K>) -> 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 fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.storage().stream_serialize(writer);\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 writer.write_u32(self.len() as u32);\n }\n}\n\n// Create a slice of the given length with each element made from `f(i)` where `i` is the current index\ncomptime fn make_slice<Env, T>(length: u32, f: fn[Env](u32) -> T) -> [T] {\n let mut slice = @[];\n for i in 0..length {\n slice = slice.push_back(f(i));\n }\n slice\n}\n\n// Implements Serialize and Deserialize for an arbitrary tuple type\ncomptime fn impl_serialize_for_tuple(_m: Module, length: u32) -> Quoted {\n // `T0`, `T1`, `T2`\n let type_names = make_slice(length, |i| f\"T{i}\".quoted_contents());\n\n // `result0`, `result1`, `result2`\n let result_names = make_slice(length, |i| f\"result{i}\".quoted_contents());\n\n // `T0, T1, T2`\n let field_generics = type_names.join(quote [,]);\n\n // `<T0 as Serialize>::N + <T1 as Serialize>::N + <T2 as Serialize>::N`\n let full_size_serialize = type_names\n .map(|type_name| quote {\n <$type_name as Serialize>::N\n })\n .join(quote [+]);\n\n // `<T0 as Deserialize>::N + <T1 as Deserialize>::N + <T2 as Deserialize>::N`\n let full_size_deserialize = type_names\n .map(|type_name| quote {\n <$type_name as Deserialize>::N\n })\n .join(quote [+]);\n\n // `T0: Serialize, T1: Serialize, T2: Serialize,`\n let serialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Serialize,\n })\n .join(quote []);\n\n // `T0: Deserialize, T1: Deserialize, T2: Deserialize,`\n let deserialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Deserialize,\n })\n .join(quote []);\n\n // Statements to serialize each field\n let serialized_fields = type_names\n .mapi(|i, _type_name| quote {\n $crate::serialization::Serialize::stream_serialize(self.$i, writer);\n })\n .join(quote []);\n\n // Statements to deserialize each field\n let deserialized_fields = type_names\n .mapi(|i, type_name| {\n let result_name = result_names[i];\n quote {\n let $result_name = <$type_name as $crate::serialization::Deserialize>::stream_deserialize(reader);\n }\n })\n .join(quote []);\n let deserialize_results = result_names.join(quote [,]);\n\n quote {\n impl<$field_generics> Serialize for ($field_generics) where $serialize_constraints {\n let N: u32 = $full_size_serialize;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: $crate::writer::Writer<Self::N> = $crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut $crate::writer::Writer<K>) {\n\n $serialized_fields\n }\n }\n\n impl<$field_generics> Deserialize for ($field_generics) where $deserialize_constraints {\n let N: u32 = $full_size_deserialize;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = $crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n \n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut $crate::reader::Reader<K>) -> Self {\n $deserialized_fields\n ($deserialize_results)\n }\n }\n }\n}\n\n// Keeping these manual impls. They are more efficient since they do not\n// require copying sub-arrays from any serialized arrays.\nimpl<T1> Serialize for (T1,)\nwhere\n T1: Serialize,\n{\n let N: u32 = <T1 as Serialize>::N;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: crate::writer::Writer<Self::N> = crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.0.stream_serialize(writer);\n }\n}\n\nimpl<T1> Deserialize for (T1,)\nwhere\n T1: Deserialize,\n{\n let N: u32 = <T1 as Deserialize>::N;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n (<T1 as Deserialize>::stream_deserialize(reader),)\n }\n}\n\n#[impl_serialize_for_tuple(2)]\n#[impl_serialize_for_tuple(3)]\n#[impl_serialize_for_tuple(4)]\n#[impl_serialize_for_tuple(5)]\n#[impl_serialize_for_tuple(6)]\nmod impls {\n use crate::serialization::{Deserialize, Serialize};\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"
6110
6110
  },
6111
- "464": {
6111
+ "463": {
6112
6112
  "function_locations": [
6113
6113
  {
6114
6114
  "name": "sha256",