@aztec/accounts 0.58.0 → 0.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"transpiled":true,"noir_version":"0.35.0+df29d315d6b71131ffe0180c97130395edb2e4ba-x8664","name":"SchnorrAccount","functions":[{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"5Z3fjhvHsYffRde+6Oqq/udXOTgI5MQJBAhyYCsHODD87uFql0PKHE5HldHyq52bYBVPLb/abX6/Jneq+fu7v/3807/+8ZcPn/7+y2/vfvyf3999/OWv7z9/+OXT6V+///HDu59+/fDx44d//OX6/36Xnv5H8pfrf/vn+09P//zt8/tfP7/7UVq2H979/OlvT1+qnb7D3z98/Pndj6bjjx9urm5DXy7uIsu1ktauLbm8XFtKulxb+h//+8M70f8eptv54l7rBOb0HV6utdpvYGwHmCEvF49UJjA1nX8yNdcbmPLfw4x87nZYnsH09HJtS7e/pvqtME9FzVPUPUXDUZSTp0g8RdlTpJ4i8xQVT5FnRWTPisirK0KbnZ9o2lqbPBG0LA+hpV2el13XnjVteSqMNi48ovULz2DxaILxCIwnw3gUxmMwngLjqTCeBuOB+VlhfjaYnw3mZ4P52WB+NpifDeZng/nZYH42mJ8N5ucC83OB+bnA/Fxgfi4wPxeYnwvMzwXm5wLzc4H5ucL8XGF+rjA/V5ifK8zPFebnCvNzhfm5wvxcYX5uMD83mJ8bzM8N5ucG83OD+bnB/Nxgfm4wPzeYnzvMzx3m5w7zc4f5ucP83GF+7jA/d5ifO8zPHebnAfPzgPl5wPw8YH4eMD8PmJ8HzM8D5ucB8/OA+VkSTNCSYIaWBFO0JJijJcEkLQlmaUkwTUuCeVoSTNSSaKYWmqmFZmqhmVpophaaqYVmaqGZWmimFpqphWbqTDN1ppk600ydaabONFNnmqkzzdSZZmracKHQpguFNl4otPlCoQ0YCm3CUGgjhkKbMRTakKHQpgyFNmYotDlDoQ0aCm3SUGijhkKbNRTasKHQpg2FNm4otHlDoQ0cCm3iUGgjh0KbORTa0KHQpg6FNnYotLlDoQ0eCm3yUGijh0KbPRTa8KHQpg+FNn4otPlDoQ0gCm0CUWgjiEKbQRTaEKLQphCFNoYotDlEoQ0iCm0SUWijiEKbRRTaMKLQphGFNo4otHlEoQ0kCm0iUWgjiUKbSRTaUKLQphKFNpYotLlEoQ0mCm0yUWijiUKbTRTacKLQphOFNp4otPlEoQ0oCm1CUWgjivL6M4rD+svFkuz6M1dORLeX52Zn/tOXl6vbE31+/YHGXeklNH0OTa+h6S00fWHTW6nLZysNu3JmkTUSTeePkNI65Kurv3RbD9VtO1S3/VDdwvcK+3Yr8L3Fzt3C9yI7dwvfu+zcLXyvs3O3dqhuD7WXkkPtpeRQeyk51F5KDrWXyofaS+VD7aXyofZS+VB7qdc/mOCh3R5qL5UPtZfKh9pL5UPtpfKh9lJ6qL2UHmovpYfaS+mh9lKvf3TIQ7s91F5KD7WX0kPtpfRQeyk91F7KDrWXskPtpexQeyk71F7q9Q/3eWi3h9pL2aH2UnaovZQdai9lh9pLlUPtpcqh9lLlUHupcqi91Osfv/XQbg+1lyqH2kuVQ+2lyqH2UuVQe6l6qL1UPdReqtL3UqPWpdur773w03dHM34Lzk/fwVzz93zLT9+TzPjpu4wZP3zfUJKe+UuylfUP3wnM+Bs826f8+J9/tYV/JX87PH9L13zm76Xe8sPzd8oPz98pPzx/p/yvnb8naLVLA+XrBr4gNR5S5yENHNKrH6v1HyAJDynzkJSHZDykwkPi2Xvw7D149h44e2vC2VsTzt6acPbWhLO3Jpy9NeHsrQlnb004e2vC2VsTz97Cs7fw7C08ewvP3sKzt/DsLTx7C8/ewrO38OydefbOPHtnnr0zz96ZZ+/Ms3fm2Tvz7J159s48eyvP3sqzt/LsrTx7K8/eyrO38uytPHsrz97Ks7fx7G08exvP3sazt/HsbTx7G8/exrO38extPHsXnr0Lz96FZ+/Cs3fh2bvw7F149i48exeevQvP3pVn78qzd+XZu/LsXXn2rjx7V569K8/elWfvyrN349m78ezdePZuPHs3nr0bz96NZ+/Gs3fj2bvx7N159u48e3eevTvP3p1n786zN2/WUnmzlsqbtVTerKXyZi2VN2upvFlL5c1aKm/WUnmzlsqbtVTerKXyZi2VN2tpvFlL481aGm/W0nizlpZw9jberKXxZi2NN2tpvFlL481aGm/W0nizlsabtTTerKXxZi2NN2tpvFlL481aGm/W0nizlsabtTTerKXxZi2NN2tpvFlL481aGm/W0nizlsabtTTerKXxZi2NN2tpvFlL481aGm/W0nizlsabtTTerKXxZi2NN2tpjxhGWz6t4/R1r7dIr/+LK3pBKjZukQYOaf8xq7GNpHk5t11zT8vF7RlHWDiZhaOvjaNazhdr0Suc22tP7+W0l2tPb1jUP6NbXPQSF73GRW9x0Xtc9G9OqKeqO9NefflAA+3VbqvWXd/TWKpGn/yYcipybj2nOq6MWdd3De3yIQtFLt9etT9DZSKUEqGMCFWIUJUI1YhQnQg1gFB3RrQeDEU0eiMavRGN3ohGb0SjN6LRG9HojWj0RjR6Jxq9E43eiUbvRKN3otE70eidaPRONHonGr0TjT4eYfTL+0ZPb/63WyghQmUilBKhjAhViFCVCNWIUJ0INXhQJQGNXtJDPHWdfVeXL1CPePZVvUDVkm+hGhGqE6EGEEoSEUqIUJkIpUQoI0IVItS60YfWM9SodQJ1euP05eLTaliu7fL8AO17P0D/3g8wvvMD3Blx2fEB5Hs/wKqZLKXlpoSUvl7aX6rUVWWuquKqqq6q5qrqrqrhqVq/LX9aJa4q19pQ19pQ19pQ19pQ19pQ19pQ19pQ19ow19ow19qwOz/55can05ftturOT6Pkper2xqSyfpuuZVseK9cxk2Cuy2Pkduknr4Xv6WdyvriYpuuLn3jW79F9II/AeDKMR2E8BuMpMJ4K42kwng7jgfl5/fbXU01dHqHfZtP67a/TquyqUleVuaqKq2r9OXh6xXOuKl0mv1MZvS6vYccYNnvJO/kDXlm/R/LRUJ0INYBQ6/dIPhpKiFCZCKVEKCNCFSIU0eiNaPRGNHojGr0Tjd6JRu9Eo3ei0TvR6J1o9E40eicavRON3olGH0SjD6LRB9Hog2j0QTT6eITRZ7eOjUqEakSoToQaPKiaEhFKiFCZCKVEKCNCAY1e00M8tX0zcJVHPPsm97NVyUQoJUIZEaoQoSoRqhGhOhFqAKFyIkKtG/2kijNULbM/wecxzi2o5PrVYzheYdU7t5Y+lkmBTAZkKkCmCmRqQKYOZBo8pju3Uj+WCehxBXpcgR5XoMcV6HEFelyBHlegxxXocQN63IAeN6DHDehxA3rcgB43oMcN6HEDetwe4PHZW+UlAZkEyJSBTApkMiBTATJVIFMDMnUgE9Dj9RF+mvzFsz7geTd7z75WIFMDMnUg0+AxtQRkEiBTBjIpkMmATN/s8S9Vd0zblwHlVnXSidjSiZRyeUUlps+P0V7hMforPMb4/o9xZ2xo38eQV3iMvMNjlOUT5qSKfPUYt1eXcX5+1Jom18oo5xFvGe3yXMr9+bl0Z/onCr2Fpi+h6Wto+haZfiQyfWnnU6NKv+Rwzu2ZHW2cms6yr6nesqN9M2FH22bCjnbNhP3VTdOWz4VuY26adDGNlFvT9ND0IzB9S69u+S7nlTz+tNP9lmu/sEtg9hyYXQOzW2D2Epi9BmZvgdl7YPYRl10C56oEzlUJnKsSOFclcK5K4FyVwLkqgXNVAueqBM7VjHbk5ruSLaOfq5vvMLWMfq5O2NHP1Qn7+nO19fNbh9bt6yHgp6o7E2ezqtV9n7TLbVind55uqwI/IxW9a6mi55WR9ZYdvWuZsLNNuM3ONuE2O9yEY2G3W3b0rmWb3dDvBkzY0e8GTNjR7wZM2NG5OmFn5+o2OztXN3eLFvgVhgV+hWGBX2EYPFe32As8VzfZ4bm6yQ7P1U12eK5ussNzdZM9cK6WwLlaAudqCZyrJXCu1sC5WtH3/m6/H1mNzL793lJl3/u7zc6+93ebHT1lMGHvaPbN9wnqiMve0LMdE3YJzI6e45uww2dqNtnZubrNHnemprW4MzWtsXN1mx2eq5vs8FzdYu/wXN1kh+fqJjs8VzfZ486qNvZs/IQ9cK6y5+In7I840UjOP5jT11d7rJfTXtpIQCYBMmUgkwKZDMhUgEwVyNSATB3IxPN4TzyP98TzeE88j/fE83hPPI/39AiPJ7kwyQpTBTI1IFMHMg0ekyQgkwCZMpBJgUwGZAJ6XIAeF6DHBejx/JDPWp5sVnImQikRyohQhQhViVCNCNWJUAMIpYkIRTS6Eo2uRKMr0ehKNLoSja4PMfpkk6edCDWAUJaIUEKEykQoJUIZEaoQoSoRimh0IxrdiEYvRKPfmSZNutyJk64+ue7lzKR+Z44z1bZUtZWq4qqqrqrmquququGpujOjNquSaVXX26rsqlJX1Z21UfJSVe22qriqqququaq6q2p4qu7Mt8yqxFWVXVXqqnKtjeZaG821NpprbTTX2miutbF+r7D2ZQhD++iTGMmpLK8ec6pXn8LgfLG5fhPwo6GMCFWIUJUI1YhQnQg1gFDr9yQ/GkqIUESjD6LRB9Hog2j0QTT6IBp9EI0+gEYfCWj0kYBGH+khRt9+q2ckJUIZEaoQoSoRqhGhOhFqAKEkEaGECEU0uhCNLkSjC9Ho63fharNzmbY//QXg9lG0LJ9uoaVdPh+16ypSWUabT19fIYnWZ6SBQ8qJhyQ8pMxDUh6S8ZAKD6nykBoPiWfvzLO38uytPHsrz976AC+VK6S6glR5SI2H1HlIA4dkiYckPKTMQ1IekvGQePY2nr2NZ2/j2dt49i48exeevQvP3oVn78Kzd+HZu/DsXXj2Ljx7F569K8/elWfvyrN35dm78uxdefauPHtXnr0rz96VZ+/Gs3fj2bvx7N149m48ezeevRvP3o1n78azd+PZu/Ps3Xn27jx7d569O8/enWfvzrN359m78+zdefYePHsPnr0Hz96DZ+/Bs/fg2Xvw7D149h48ew+cvSUlnL5PTDh/n5hwAj8x4Qx+YsIp/MSEc/iJCSfxExPO4icmnMZPTECPC9DjAvS4AD0uQI8L0OMC9LgAPS5AjwvQ4wL0+CNGC3VcmGx8xfSt1z/3IPAeal8ur71cPiemvfDn4PwanN+C85fg/DU4f8PzL59TVYfkG/4enH/E5ld6Bs/4+fm7zc/P321+fv5u8/Pzd5ufn7/b/Pz83eYPnr8aPH81eP5a8Py14PlrwfPXgufvI4a3d+UPnr8WPH8teP5a8Py14PlbgudvCZ6/JXj+luD5+4jx+135g+dvCZ6/JXj+luD5W4Lnbw2evzV4/tbg+VuD5+8jDlDYlT94/tbg+VuD528Nnr81eP624PnbgudvC56/LXj+PuIIjF35g+dvC56/LXj+tuD524Lnbw+evz14/vbg+duD5+8jDjHZlT94/vbg+duD528Pnr89eP6O4Pk7gufvCJ6/I3j+PuIYml35g+fvCJ6/I3j+juD5O2Lnr6TY+Sspdv5Kip2/kmLnr6TY+Sspdv5Kip2/kmLnr6TY+SspeP5K8PyV4PkrwfNXgufvI85+2pU/eP5K8PyV4Pkr+PwdeTn/ZNgtPz5/t/nxZ2DN+PH5O+HH5++EH5+/E35Wfj0zsTLpmYmVM89MrOz4wvTq5wGNYX1BMpHJ06GcuF8uL6fwvVxd5KUBgzegfWnApK40UKI3UKM30KI30KM3MII38OrH0uzeAD0Hpg1kegM1bzeg0RvAJ/GsAXwSzxqgJ7HZpYEqKw3Qk3jaAD2Jpw3Qk3jWQKEn8bQBehJPG6An8bQBehKXVM8NlLzWAD2Jpw3Qk3jaAD2Jpw3gk3iMSwN5pQF8Es8awCfxpIGKT+JZA/gknjWAT+JZA/QknjZAT+KvGhgrDdCTeNoA/jXxrAF6Ep/+THluoKW1BuhJPG2AnsSzBho9iacN0JO4Vl0akPRVAyt/ljVr529udvmbZpaXP8o2em7v3C495Xdu147VLn0HsXO79P3Gzu3is/Fb2i3t3G3plxjK+eXmq/6mvFzTcqNrqivNvikrz5p9U06eNfumjDxrlu7jttyiV1qXSbNWziBW+hV1f2mW/lpx12bpryt3bZaes3s2O+ivV3dtlv7adtdm6TuoXZul76B2bdaO1Cx9B9XGcrdk/9MO6rkB+q6o63KPxvWneF8aoO90pg3Qdy/TBug7kkkDOdF3GdMG6DuHaQP03cC0AXrCTxugp/a0AXoSTxsInsQ5BU/inIIncU7Rk1iiJ7FET2KJnsQSPYlf/WCd3RuInsQSPYklehJL9CSW6Emcoydxjp7EOXoS5+hJnKMncY6exDl6EufoSZyjJ3GOnsQaPYnxJ0tNG4iexBo9ifFne00biJ7E+LO9pg1ET2L82V7TBqInMf5sr2kD0ZMYf7bXtIHoSYw/22vaQPQkxp/tNW0gehLjz/aaNhA9ifFne00biJ7E+LO9pg1ET2L82V7TBqInMf5sr2kD0ZMYf7bXtIHoSYw/22vaQPQkxp/tNW0gehLjz/aaNhA9ifFne00biJ7E+LO9pg1ET2L82V7TBqInMf60rmkD0ZMYf6LWtIHoSYw/9WraQPQkbtGTGH+S2KyBHj2Je/Qkxp/PNm0gehLjz1GbNhA9ifHnnU0biJ7E+HPJpg1ET2L8+WHTBqInMf6cr2kD0ZMYfx7XtIHoSRz9jK0c/YytHP2MrRz9jC2NfkSVRj+iSqMfUaUpeJAp/oCkHY/IV/xhSt92tricL65ZV5p9Ux9+MGkWf0jTrs2+qQ8cmjX7xj7WYizN2kqzb+xjLbabpWfnrs2+sY+12G72TX3M0KzZN7WDmjX7tnZQk2bf1g5q86NoFH+41q7Nvq0d1KTZA30wmOIP+Nq1WTtSswf6YDDFHzK2a7NvbAe13ewb20FtN3ukHRT+ULRdmz3SDgp/2NquzR5pB4U/xG3PZtcnEaTrQtTLFdDQl7LVjdfTKZbnsmyXn5HaS1V1VTVXVXdVDU/V+o3UTzO7S1W32ypxVa3/5G3Uc5WNFcLqqmququ6qGp6q9RvnpMry+6pWb6vEVZVdVeqqMldVcVVVV1VzVXVX1XBUWUquKnFVZVeVuqrMVVVcVdVVdWdt1CVUau+3Vd1VNTxVklxV4qrKrqr13/Lpp7T4MLfbquKqqq6q5qrqrqrhqVp//3paJa6q7KpSV5VrbWTX2siutZHvrA3TparceiN3V9XwVGlyVYmrKruq1FVlrqriqqquKtfaUNfaUNfasOTYi5qJq2r9J5/q5RVYqiVf6l4+0tnWz9eUVpZovn6Zujxcc1V1V9XwVK2fmSi95eUV6ZDbKnFVZVeVuqrMVVVcVdVV1VxV3VU1PFXVtTaqa21U19qorrWxfjJTTkvI5pRXqoqrqrqqmqOqrG8su54/673ruK1ZXxnpyofl9pHubPVmVeKqWl8ZIue25PSq6LZKXVXmqiququqqaq6q7qoanqo7W71ZlbiqXGtDXWtDXWtDXWtDXWtjfdO2/fy/s2VLy/vYkuS2av3E/WmVuqrMVVVcVdVjqDu7vFlVd1W5fF1cvi4uX9/Z5c2q1FV1Z22UctnN99uq4qqqrqrmquququGpurPLm1XN18ZalWttVNfaqOaqKq4qlzeqyxvV5Y3q8kZzeaO5vNFca6O51kZzrY3mWhvN9Vturt9yc/2W+zf/lv84/ev/3v/64f1PH3/+7VTz9B//9emvnz/88unln5///5/P/+V08b8B","brillig_names":["lookup_validity"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"7d3bjitrcp7re+ljHeQf+9+3smAYsi0bDQiSYckLWBB87yvHhqyaXSxmV81k1psVPDF6WiwyIgf5MZjkE/kff/nv//Rf/8///C9//Zf/8a//9pf/9P/8x1/++V//2z/++1//9V/W//qPv6j9/P/7t//1j//y4z//7d//8X//+1/+00ixf/jLP/3Lf//xP9X+7z/85X/89Z//6S//yXT+3394c2tJv9xaMuN661F249Zq6r9vrb7Uxq3HWLQupYzFx/X2qnXr9rZcb26SL7e+fefDr/cd9vrG//kf/qL+PDTvHZp4Hpr3Dk0+D817h6aeh+a9QzOfh+adQ2PL89C8d2jG89C8d2jkeWjeOzT6PDTvHRp7Hpr3Ds1zGn730Dyn4XcPzXMafvfQPKfhdw/Ncxp+79D4cxp+99A8p+F3D81zGn730Dyn4XcPjT0PzXuH5jkNv3tontPwu4fmOQ2/e2ie0/C7h+Y5Db93aOI5Db97aJ7T8LuH5jkNv3tontPwu4fGnofmvUPznIbfPTTPafjdQ/Ocht89NM9p+N1D85yG3zs0+ZyG3z00z2n43UPznIbfPTTPafjdQ2PPQ/PeoXlOw+8emuc0/O6h4U/D+VL+UnPr0FTK5eY1x586NPxp+MsODX8a/qpDUztMw1rXONDKl1uvMfHzIcbjH+LmdCayxOWfTGTrIYbbNaX81XFKv3lQ83LXQ/zl3yvz1o2XWMbl1ksMOy4vS58H5vaBseeBuX1g/Hlgbh+YeB6Y2wcmnwfm9oGp54G5fWDm88DcPDBzeR6Y2wdmPA/M7QPznHzfOTDPyfedA2PPA3P7wDwn33cOzHPyfefAPCffdw7Mc/J958A8J9/bB2Ysz9H3vSPznH3fOzLP4fe9I/Ocft87MvY8Mu8cmef8+96ReQ7A7x2Z5wT83pF5jsDvHRn6DPzy45YlXLaOzH7fxa9f/T+PzDtHZpcZOF6OTG0embj+PEHspficsFfTkOeReefI6PPIvHNk7Hlk3jky/jwy7xyZeB6Zd45MPo/MO0emnkfmnSMzn0fm9pGR5Xlk3jkyzxn4vSPznIHfOzLPGfi9I2PPI/POkXnOwO8dGfoM/GXnZ4Q+A3/dkdllBl6uzYZtHZmvbHY2alaXTs3uMXxGXJM7l7jfrGTk5a5rkY27lnK53rpevF3pjRurjOX3jfV1dgyNX71Ko171G/VqermxWs4/9LpVtb89Mtb2yOSrqme8PTL+jY6Mj3k5Mu6bR2Z5+XJtyeXVrW+VbVcxbF6viq6br1PR6+s0Xo6HzF+HPJ6HfPdDri9GWyvfHPJ8HvKjn+X1PORHP8vn85Af/Cy35XnID36W23f69EI55C9Totby6pD/+sBo3+lD1McO+ciX7Ujzj4f855H5Th+59j0y9jwy7xyZvh+55PrRdT3LbBsBNqZdj8gyausE2ReeULO+n+i+67/ot/rAGNd5KpZl4190LnXpcf7YyHW99XLrvkW9Lv9GojHyD7f/eSS/1efALz2Sh3+8W19Fl7ueY/7hrn8U5Ed/+NFFryfAF4u3BQ1aQUIrSGkFGa0gpxUUtIKSVlDRCpqwgoKW1EFL6qAlddCSOmhJHbSkDlpSBy2pg5bUQUvqpCV10pI6aUmdtKROWlInLamTltRJS+qkJXXSkrpoSV20pC5aUhctqYuW1EVL6qIlddGSumhJXbSknrSknrSknrSknrSknrSknrSknrSknrSknrSknrCklgWW1LLAkloWWFLLAktqWWBJLQssqWWBJbUssKSWBZbUstCSetCSetCSetCSetCSetCSetCSetCSetCSetCSetCSWmhJLbSkFlpSCy2phZbUQktqoSW10JJaaEkttKRWWlIrLamVltRKS2qlJbXSklppSa20pFZaUistqY2W1EZLaqMltdGS2mhJbbSkNlpSGy2pjZbURktqmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlEUmlFUmlFUmlFUmlFUmlFc//9oBcGSWmlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlG0WhG0WhG0WhG0WhG0RZYUhvNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKBrNKDrNKDrNKDrNKDrNKPoCS2qnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGUWnGcWgGcWgGcWgGcWgGcVYYEkdNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKMYNKOYNKOYNKOYNKOYNKOYCyypk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YUk2YU83ijKOqXgsRz465NQn7f2iTremuJGzd2G5cbu+ny+sY/Wx19WpU+rWqfVq1Pq96n1ejTavZptfq0Oru0WkubaamWNtNSLW2mpVraTEu1WJ9W20xLtbSZlmppMy3V0mZaqqXPtDT6TEujz7Q0+kxLo8+0dPxOhK9rtc+0NPpMS6PPtDT6TEujz7QkfaYl6TMtSZ9pSfpMS8fvJfm6VvtMS9JnWpI+05L0mZakz7SkfaYl7TMtaZ9pSftMS8fvBvq6VvtMS9pnWtI+05L2mZYUPi3FuPxy20Lib6s3+AC0UT18ptmoHj6mbFQPnzxe7toi31Zvp64ePh9sVA9/y9+oHv4uvlE9/I15I3NO/V7rp36v9VO/1zr9vfbuq9ZP/V57/AKyXas/9Xutn/q91k/9Xuv099r71dPfa+9WH/T32vvV099r71d/6vfaOPV77fEr5Hat/tTvtUF/r707IQf9vfZ+9af+XBun/lybp36vzVO/1+ap32vz1O+1xy8B3LX6U7/X5qk/1+apP9fmqT/X5qk/19ap32vr1O+1der32jr1e+3xaxz3nJCL/l57v/pTf66tU3+urVO/19ap32vpSy03qj/1ey199eRG9ad+r6UviNyo/tSfa+lrHDeqP/XnWvqyxY3qz/xeO+krETeqP/N77aQvLrw7IU/6LsKN6unvtferP/Pn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62ybelx61VheXaRX48at51KXHufPs3d/9kzeLpsun4fy56Gs56Hc61DO56Hc6VDusgP0eSh/HsrxPJR7HUp5Hsq9DqU+D+Veh9Keh3KvQ+nPQ7nXoaR9t12077bh+1c95vWufY55458Yft5rswH4ntS/owH2b/7/jgbYv+P/Oxpg/zb/72jAzt4A/Buo7Qbg30BtNwD/Bmq7AdqvzCbsV2a5wL4hygX2DVEusG+IcoF9Q5SL0QqCfUOUC+wzUy6wz0y5wJI6F1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSD1pSCy2phZbUQktqoSW10JJaaEkttKQWWlILLamFltRKS2qlJbXSklppSa20pFZaUistqZWW1EpLaqUltdGS2mhJbbSkNlpSGy2paXsrkra3Iml7K5K2tyJpeyuStrcinZbUTktqpyW105LaaUnttKR2WlI7LamdltRBS2ra3oqk7a1I2t6KpO2tyKAlddCSOmhJHbSkDlpS0/Y4JG2PQ9L2OCRtj0PS9jgkbY9DJi2pk5bUSUvqpCV10ZK6aEldtKQuWlIXLanre10P7O51SrK+1/XANpr9XtcD22j2e10PbKPZ73U9sPvNwr3vzs02uh5Ywh3xzs02uh5Ywn3yzs12mqAm7XP0pH2OprnkpLnkornkornkornkornkWoxWEOyMZ9FcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcctFcchUtqWnXxi3atXGraEldtKSetKSetKSetKSetKSetKSetKSmGcWiGcWiGcWiGcVJM4qTZhQnzShOmlGcCyypJ80oTppRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFSTOKk2YUJ80oTppR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zSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgqzSgazSgazSgazSgazSjaAktqoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFoxlFpxlFpxlFpxlFpxlFX2BJ7TSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSj6DSjGDSjGDSjGDSjGDSjGAssqYNmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFINmFKNoSU0zikEzikEzikEzikEzikEzikEzikEzikEzikEzikEzikkzikkzikkzikkzirnAkjppRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjFpRjEPN4qyqF7uesl6XdCtG+dcrrcuWa43H4veuP16ynT+vvl6bvBVt7+bnY2aPdxWfmmzo1Oz0qlZ7dSsdWrWOzUbnZrNTs2iJ6h1/qvrXU+btdGs/FivfLn3H9uP/nD7Xw2jp6gHNGzoSeoRDaOnqUc0jJ6oHtEweqp6RMO2Q8Prec1LVesR3PjgnZHXG9erozN/F+S0goJWUB5dUC3XcyWl8ragohU0YQXtYs/3fA7tYs93LUhoBSmtIFpSOy2pnZbUnrSCilYQLaljoRU0aAUJraCjk3q9P7/edY7XBd24Z3e5nFVZ/3fG2xk87OwN+NkbiLM3QHunCdo7TUxYQbmwn3Mxr3ftc8y3z7kcZ29Azt7AHu98EddTSrlsna16eU5LLbJx11Iu11vXy8mqunWu6sdV3H/f+MfVn16a1bhx67nUpcf589zXnz0PtssWgueh/Hko/Xko9zqU8TyUex3KfB7KvQ5lPQ/lXodynnwEqbNPsXX2KbbOPsUW/PzNdgN29gYcdkqvglYQ7TvXon3nWrQz+ZN2Jn/SzuRP2pn8qbSCjFYQLaknLaknLaknLaknLKlrgSV1LbCkrgWW1LXAkroWWFLXAkvqWmBJXQssqWuBJXUttKQetKQetKQetKQetKQetKQetKQetKQetKQetKQetKQWWlILLamFltRCS2qhJbXQklpoSS20pBZaUgstqZWW1EpLaqUltdKSWmlJrbSkVlpSKy2plZbUSktqoyW10ZLaaElttKQ2WlIbLamNltQ0b180b180b19OS2qnJbXTktppSe20pHZa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NKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKOoNKNoNKNoNKNoNKNoNKNoCyypjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUjWYUnWYUnWYUnWYUnWYUfYEltdOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMotOMYtCMYtCMYtCMYtCMYiywpA6aUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUQyaUUyaUUyaUUyaUUyaUcwFltRJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pJM4pFM4pFM4pFM4pFM4q1wJK6aEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxaEaxDjeKsqhe7nrJel3QrRuvZ2Wvt14z6nrzseiN28eU+fvmMe1Vt7+brU7NzkbNHu42v7TZ0alZ6dSsdmrWOjXrnZqNTs2iJ6h1/qvrXU+btdGsqFdd7l1j5B9u/6th9BT1iIbRk9QDGjb0NPWIhtET1SMaRk9Vj2h4j8kqx+VRRppufPDOyOuN69XRmb8LMlpBTisoji5o/Q72+oRWeVtQ0goqWkET9hzaxZ7vWtCgFSS0gmhJ7bSkdlpSe9AKSlpBtKT2CSsoFlpBg1bQ0Um93p9f7zrH64Ju3LO7XM6qrP874+0MHnr2BuzsDfjZG6C90wTtnSaKVtBkP+diXu/a55hvn3O5nL2BcfYG9njni7ieUspl62zVy3NaapGNu5b1Q9T11vVysqpunatSj8ux0VheffegcePWc6lLj/Pnua8/ex5sly0Ez0P581Da81DudSj9eSj3OpTxPJR7Hcp8Hsq9DmWdfQQ5+xRbZ59i6+xTbMHP32w3AD9/s92AwU7pldMKon3nWrTvXIt2Jr9oZ/In7Uz+pJ3Jn0IrSGkF0ZJ60pJ60pJ60pJ60pJ6wpJ6LrCkngssqecCS+q5wJJ6LrCkngssqecCS+q5wJJ6LrCkngstqQctqQctqQctqQctqQctqQctqQctqQctqQctqQctqYWW1EJLaqEltdCSWmhJLbSkFlpSCy2phZbUQktqpSW10pJaaUmttKRWWlIrLamVltRKS2qlJbXSktpoSW20pDZaUhstqY2W1EZLapq3nzRvP2nefhotqZ2W1E5LaqcltdOS2mlJ7bSkdlpSOy2pad5+0rz9pHn7SfP2M2hJHbSkDlpSBy2pg5bUQUvqoCV10JI6aUmdtKROWlInLamTltRJS+qkJXXSkjppSZ20pC5aUhctqYuW1EVLappRnDSjOGlGcdKM4qQZxUkzipNmFCfNKE6aUZw0ozhpRnHSjOKkGcVJM4qTZhQnzCjGAjOKa0GspF4LYiX1WhArqdeCWEm9FsRK6rUgVlKvBR1+VSW9LsgSG692zdy8QEmsNV/uOipemv3EJaTWZqtTs7NRs2Pp1Ozo1Kx0apZ1pem1IKMVxLrS9FoQ60rTa0FJK6hoBU1YQbLQChq0goRWEC2phZbUQktqoSW10JJaaEkttKRWWlIrLamVltRKS2qlJbXSklppSa20pFZaUistqY2W1EZLaqMltdGS2mhJbbSkNlpSGy2pjZbURktqpyW105LaaUnttKR2WlI7LamdltROS2qnJbXTkjpoSR20pA5aUgctqYOW1EFL6qAlddCSOmhJHbSkTlpSJy2pk5bUSUvqpCV10pI6aUmdtKROWlInLamLltRFS+qiJXXRkrpoSV20pC5aUhctqYuW1EVL6klL6klL6klL6klL6klL6klL6klL6klL6klL6glL6rHAknossKQeCyypxwJL6rHAknossKQeCyypxwJL6rHAknostKQetKQetKQetKSmGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGcdCM4qAZxUEzioNmFAfNKA6aURw0ozhoRnHQjOKgGcVBM4qDZhQHzSgOmlEcNKM4aEZx0IzioBnFQTOKg2YUB80oDppRHDSjOGhGUWhGUWhGUWhGUWhGURZYUgvNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKArNKCrNKCrNKCrNKCrNKOoCS2qlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWlGUWjGUWjGUWjGUWjGUVbYEltNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNoNKNo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SjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKSjOKRjOKRjOKRjOKRjOKtsCS2mhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WhG0WlG0WlG0WlG0WlG0RdYUjvNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKDrNKAbNKAbNKAbNKAbNKMYCS+qgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWgGcWkGcWkGcWkGcWkGcVcYEmdNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKOYNKNYNKNYNKNYNKNYNKNYCyypi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUi2YUJ80oTppRnDSjOGlGcS6wpJ40ozhpRnHSjOKkGcVJM4qTZhQnzShOmlGcNKM4aUZx0ozipBnFSTOKk2YUJ80oTppRnDSjOGlGcdKM4qQZxUkzivNwoyiL6uWul6zXBd268TpCXm9dslxvPha9cfuYMn/fPKa96vZ3s9mp2erU7GzU7OEm9EubHZ2alU7NaqdmrVOz3qlZ9AS1zn91vetpszaaFfWqy71rjPzD7X81jJ6iHtEwepJ6RMPoaeoBDRt6onpEw+ip6hEN7zFZ5bg8ykjTjQ/eGXm9cb06OvN3QUoryGgF+dEF1XI9V1IqbwsKWkFJK6hoz6EJK2gXe75rQYNWEC2pnZbUTktqd1pBQSuIltRetIImrKBYaAUdndTr/fn1rnO8LujGPbvL5azK+r8z3s7gIWdvQM/egJ29Ado7TdDeaSJpBRX7ORfzetc+x7zxnJsnbyCXszewxztfxPWUUi5bZ6tentNSi2zctZTL9db1crKqbp2rUo/LsdFYXn33oHHj1nOpS4/z57mvP3sebJctBM9D+fNQ6vNQ7nUo7Xko9zqU/jyUex3KeB7KvQ5lnn0EOfsUm2efYuvsU2zBz99sNwA/f7PdgMJO6e2yR2XXgmjfuRbtO9einckv2pn8op3Jn7Qz+XPQChJaQbSknrSknrSknrSknrSknrSknqykrmVhJfVaECup14JYSb0WxErqtSBWUq8FsZJ6LYiV1GtBrKReC2Il9VoQLakHLakHLakHLakHLakHLakHLakHLakHLakHLakHLamFltRCS2qhJbXQklpoSS20pBZaUgstqYWW1EJLaqUltdKSWmlJrbSkVlpSKy2plZbUSktqpSW10pLaaElttKQ2WlIbLamNltQwb78WREtqmLdfC6IltdGS2mlJ7bSkdlpSOy2pnZbUTktqpyU1zNuv/0daUsO8fS0wb78WREvqoCV10JI6aEkdtKQOWlIHLamDltRBS+qkJXXSkjppSZ20pE5aUictqZOW1ElL6qQlddKSumhJXbSkLlpSw4ziWhAtqWFGcS2IltQwo7gWREtqmFGsBWYU14JoSQ0zimtBtKSGGcW1IFpSw4ziWhAtqWFGcS0IltSDZhQHzSgOmlEcNKM4FlhSD5pRHIdf6130uiBLbLzaNXPzAiWx1ny566h4afYTl5Bam81OzVanZmejZsfSqdnRqVnWlabXglhXml4LMlpBrCtNrwUFraCkFVS0giasIFloBQ1aQbSkFlpSCy2phZbUQktqoSW10JJaaEmttKRWWlIrLamVltRKS2qlJbXSklppSa20pFZaUhstqY2W1EZLaqMltdGS2mhJbbSkNlpSGy2pjZbUTktqpyW105LaaUnttKR2WlI7LamdltROS2qnJXXQkjpoSR20pA5aUgctqYOW1EFL6qAlddCSOmhJnbSkTlpSJy2pk5bUSUvqpCV10pI6aUmdtKROWlIXLamLltRFS+qiJXXRkrpoSV20pC5aUhctqYuW1JOW1JOW1JOW1JOW1JOW1JOW1JOW1JOW1JOW1BOW1LLAkloWWFLLAktqWWBJLQssqWWBJbUssKSWBZbUssCSWhZaUg9aUg9aUtOMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotCMotKMotKMotKMotKMoi6wpFaaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUVSaUTSaUTSaUTSaUTSaUbQFltRGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pGM4pOM4pOM4pOM4pOM4q+wJLaaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUbRaUYxaEYxaEYxaEYxaEYxFlhSB80oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oBs0oxuFGURbVy10vWa8LunXjnMv11iXL9eZj0Ru3jynz981j2qtufzfrnZqNTs1mp2arU7OzUbMky/r2xrqMSx266LjeWEb8Lh/0/v+Z8kHTwmfKV/IrZe21rnc9bdbGK0V0/f7zcu+6fjz5w+1/NWzdGkbPL49oGD3DPKJh+ByzTLveWhe70cD3mk1Kr2/X5fHm7fp7zSb3mz1cb39ps6NTs9KpWfSU9PFmrzePOd58njhcy39ps9/r7M5Gs9/r7M5Gs9/r7M5Gs99sgrrf7DeboO42699sgrrf7DeboO43+80mqPvNdpqgDt9i8aXNdpqgvNME5Z0mKO80QXmnCSo6TVDRaYKKThNUdJqgDt8u86XNdpqgotMEFZ0mqOg0QUWnCSo7TVDZaYLKThNUdpqgDt/69KXNdpqgstMElZ0mqOw0QWWnCao6TVDVaYKqThNUdZqgDt/G9qXNdpqgqtMEVZ0mqOo0QVWnCWp2mqBmpwlqdpqgZqcJ6vAtiV/abKcJanaaoGanCWp2mqBmowkql0YTVC6NJqhcGk1QuTSaoHKxTs02mqByaTRB5dJogsql0QSVS6cJanSaoEanCWp0mqBGpwnq8K3CX9pspwlqdJqgRqcJanSaoEanCUo6TVDSaYKSThOUdJqgvtm2741mO01Q32zb90aznSaob7bte6PZThOUdpqgtNMEpZ0mKPbe8b2btU7Ndpqg2LvG92620wT13XaS32+20wT13XaS32+20wT13XaS32+20wTVaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTZaSd5dtpJnp12kmenneTVaSd5ddpJXp12klenneS1WKdmG01Q1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV6ddpJXp53k1WkneXXaSV7H7yTX8Mtd2xj3mx0esy537XPMPzT7q4E8ewPFbmB6vjRQdqOBee4G5vE7vvduYJy9AUE3EKVyueuo0M3I1XmJ3PL4m8idx+/i/spmrVOz3qlZ9uSwc7PsKePDzd6bCefC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o6g0o6g0o6g0o6hBS+qkJTXtOopKu46i0q6jqLTrKCrtOopKu46i0q6jqLTrKCrNKCrNKGrRkrpoSV20pC5aUhctqYuW1EVL6qIlNe06ikq7jqLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLSjKLRjKLRjKLRjKLRjKItsKQ2mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlE0mlF0mlF0mlF0mlF0mlH0BZbUTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKTjOKQTOKQTOKQTOKQTOKscCSOmhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhGMWhG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N2AXxP5REe2afQN2SewfFeEyG3ZR7B8V4TIbdlnsHxXhMht2YewfFeEyG3Zp7B8V0TJbcNfGFty1sQV3bWzBXRtbFlpmC+7a2IK7Nrbgro0tuGtjC+7a2IK7NrYMXGYPXGYPXGYPXGYPXGYPXGYPXGYPXGYPXGYLLrMFl9mCy2zBZbbgMltwmS24zBZcZgsuswWX2YrLbMVltuIyW3GZrbjMVlxmKy6zFZfZistsxWW24TLbcJltuMw2XGYbLrMNl9mGy2zDZbbhMttwme24zHZcZjsusx2X2Y7LbMdltuMy23GZ7bjMdlxmBy6zA5fZgcvswGV24DI7cJkduMwOXGYHLrMDl9mJy+zEZXbiMjtxmZ24zE5cZicusxOX2YnL7MRlduEyG+cgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgBecgFecgFecgFecgFecgdaFltuIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOIcpOEcpOEcpOEcpOEcpC20zDacgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScgzScg3Scg3Scg3Scg3Scg/SFltmOc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5COc5CBc5CBc5CBc5CBc5Cx0DI7cA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4ycA4y9nGQs14eZG5U9OMb/cutf5zhv95ctW7eecq13Tlebm23bjzGtd0R9vrGv9u1Xu16r3b3eCubUy+3XmS5367H9cae4+XGY9Ebtxb1uhwc0Rj5h9v/biHP30Kdv4V59hZyF+L6xS2M87cg529Bz9+CHTx2yaIv/Wa9Hrtuzmh1vetps/bo2Bt1vP7Xf/3ff/3nf/7r//wv//yv/+0f//2v//ov//bjr5cf/89tOJaalwJSy1/uT+PnEazP/NH8xB/dFlJbfzQ+80fymT/Sz/yRfeaP/DN/FJ/5o888I+Qzzwj5zDNCP/OM0M88I/Qzzwj9zDNCP/OM0M88I/Qzzwj9zDNCP/OM0M88I+wz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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"H4sIAAAAAAAA/+ydB5xTxdf+ly0sC7uwKKioKCAgWDNJdpPYUVFRUVFUEFF2NxtFUbFjwQoq9t4b9t4bKnZUVFAQFFAQkC4gXTr/Gb3zM8SRlucZZ/7v3s9nXsLIe3/nPOfMmfPNvbm3Vs5fx8Ftc3Lqlf/1uZYcecGfuXI0y5jTf6Z/zjfM1Tb8/xYb5uob5koNc5sZ5raUY7+Mue0N/66ZYa65Ya6FYa51MJd+1Ar+3C/4MxIqj0arY+FqEREVoXCiMl4WipZVlsdFXJTFy5LheCRSHY/GY4nKRCyUENFItUiVJSKp0F9Hh9y/zxXK6ghXMe08dNPtjGROKNs2D3JH26p0WB183jHn789t0j4fGvwb/f93mPz74XJ0lOOI3L/n9ZGboUEou0O0Bup5ZC7OrvScVedtJv8syMiDdeVGKLvjz/990LlCtdJsLA0+HyV96iTH0XIcI0dnOY6V4zg5jpejixxd5ThBjm5ynChHdzlOkuPk3ECMkrSEYIpxHC6wIYO5qHOH07XoEfylIjdn7Qqo/sOqjDn1jzKzKo8o4qautOrUX0ePXNyqrSAFF12pkD5Xpp1LxCPhcCyi/l08GRLRZFU4Hg4nK6OhqlBFVbg6ERWJVDQcjVQlqyrlOStEKpSqqEqk4n/ZpRZi/Rw7VakyF1+V1FGVSzS4Khd/3iQwGVh+J9PKEei8RlsRBSCZiz9vNThZdbFW57W9A3b1cAdMBX85JXMHTBl2wFMs7IBdgTtgClgATvFkB0T6fKqnO+CppB2wZy7R4J6EHfA0x3dA5fdpnuyApwS2os97OmkHPP0/2AFP9HAH7BX85YzMHbCXYQc8w8IOeCJwB+wFLABneLIDIn0+09Md8EzSDnhWLtHgswg7YG/Hd0Dld29PdsAzAlvR5z2btAOe/R/sgCd7uAOeE/zl3Mwd8BzDDniuhR3wZOAOeA6wAJzryQ6I9Pk8T3fA80g74Pm5RIPPJ+yAFzi+Ayq/L/BkBzw3sBV93gtJO+CFaTugrYXXmbTw+uQSDe5DWHgXOb7wlN8XERaezWQ7lpRsF+cSDb6YkGyXOJ5syu9LPKnyFcHCQLdlyIJwaa6fC/Z40oLtm0s0uC9hwV7m+IJVfl/m+e7QhZRsl+cSDb6ckGxXOJ5syu8rPNkdTgkWBnp3QBaEK3O5GoayO/7sVi4lcNRVjvutcvxKgt9Xe9oNnEAq0P1yiQb3IxTo/o4XaOV3f8+7gW6kZLsml2jwNYRku9bxZFN+X+tJN3BGsDDQ3QCyIFzn+K6odu2rCbviAMf9Vjl+HcHv6z3tBrqTCvQNuUSDbyAU6BsdL9DK7xs97wZOIiXbTblEg28iJNvNjieb8vtmT7qBc4OFge4GkAXhFsd3RbVrX0/YFW913G+V47cQ/L4N7Lc+0HbeDrMzEmXaecem25nMnFC2Zf4gXOmgf/jdOe3zsWmf78hd+wfhd8q/3yXH3XLck/vPH4Sjb9AC/hxU3AmsbfeSch2tH/AqmLgLqN99nugHvLAj7gbqdz+4qcysDfem1YD70j7fn/b5noza8ID8+4NyPCTHwxZqA/CHcuIBYGwe8SS3gd+JiweB+j3qiX7Ar3nFQ0D9BpJrwyNpNeDRtM8D0z4/nFEbHpN/f1yOJ+R40kJtAP6ESDwGjM1TnuQ28Bsy8ThQv6c90Q/4pY94AqjfM+Ta8FRaDXg67fMzaZ+fzKgNz8q/PyfH83K8YKE2AH9cIZ4FxuZFcmxeTIvBc2mfn0/7/EJGbF6Sf39ZjlfkeDV37fOlxwTxnclthO8kXgPGOiftQNv5OsxOUcm0841NtzOaOWHK0dfTcvGotM/HpH1+IyNH35R/f0uOt+V4x0L96ATMqTeB9WMQuX4MSovBW2mf3077/E5GbN6Vf39PjvflGJz798Ms1xX3o9M+v5v77w8n/ED+/UM5PpLjY0Pc0bn/CU7flMm+UHaHULX6NUIN/ZScV5+kxfjTtM8frCP2n8m/D5Hjczm+yF3/gymz1aAWME6fkXpYdNy/xNmZNMX9y7T4qnjpz4etI+5D5d+/kuNrOb7J5T+Q9BhgfR4KjLvNC9idwOtfH8NyiQYPy8WfdzgwGVh+D8/9W2DQeamgnH6ubDXtBIzPt54u1m9Ji/W7XKLB3xEW6wjHF6vyewRpsaI7geGBrejddXium/EuCDS0sWCBnWWoJM3OkUGwvg/+HBX8OTr484fgzx+DP8cEf44N/hwX/PlT8OfPwZ/jgz8n5AZi6EcAjMr9WzQ9N84wNz6Ys1kVR5Kq4i+5RIN/IVTFiY5XReX3REJVtJls35OSbVIu0eBJhGSb7HiyKb8ne7IFjwoWBnoLRhaEXz3tmUeTFuyUXKLBUwgLdqrjC1b5PdXz3eEHUrJNyyUaPI2QbNMdTzbl93RPdocfg4WB3h2QBWFGLlfDUHbHn93Kr7n42Mx03G+V4zMIfs/ytBsYQyrQv+USDf6NUKBnO16gld+zPe8GxpKSbU4u0eA5hGSb63iyKb/netINjAsWBrobQBaE3x3fFdWuPYuwK85z3G+V478T/J7vaTfwE6lAL8glGryAUKAXOl6gld8LPe8GfiYl26JcosGLCMm22PFkU34v9qQbGB8sDHQ3gCwISxzfFdWuPZ+wK/7huN8qx5cQ/F4KLnTr+mn7yLTP3+f++0/bl8m/L5djhRwrc/m3kY/CaSCWAdfiKnBOsvQDXrURy4H6rfZEP+CFCLECqN8acm1YlVYDVqd9XpP2eWVGbVDi15IjV468PH5t+BEYG2UcKjb5eX7kNvA7XFELqF+BJ/oBv5YUuUD9audxa4PKb10DCtI+1077nJe3dm0olH+vI0eRHHUt1IZxwNgUAmNTz5PcBn6jI+oA9Sv2RD/glxSiCKhfCbk21EurAcVpn0vSPtfNqA315d8byFEqR0MLtWE8MDb1gbHZjBybzdJi0CDtc2na54YZsdlc/r2RHI3l2CKP99N2xfhLCQy9ZR6wR8zBf3eg9FU2ov3eipxL6T9H3Sotfybk/vvPEpvIf7e1HNvIsW0e/2eJtYB6NiHr+W/fv4xah55NpU3bybG9HM0s6HkkkF+b52HjrH83oc7bLOev303k5ti5ILEj7lyh3DQ7WwQb3w55GQ6gN8R0B7INbIsN3xCr1nMusQNw0dlMiDY5nIRoGQS+FTsh2gAToiUwIVp5mhBN8zgJ0ToI/I7shGgKbHNbAxNiR/C2XCRHcZqOf9sZDZdXl0crqqsjoepEIl4lIlXxqurqqmRFpCIWi4diycrqimRZuLIqnIpUpkLVFdXxMlEZrYyJUJVYnXE+If0tK68IlcdT5aFIKBwJR0NVifLKaLKiLBqLlpfL00Uq4zEhqsrCoioWjYdFuEKUVVaFItHqivLV2PiGMhM+HA+XVcUSVVXlFWVVlZXV1alYsrwinhKV5RUiXBmRxlREIvFoNFRRnaqujEYS5SIar4rLCMWqQtHEP/yVoU0lhfKuMhYqDyfLK8tU4Ksj5ZWJUCxSHikLpcpTlRUhEQ7Hq6LS5XAokSgLJVJlsZCoZvsbqk5WiupwIlIVqapOiMqUdKJafqyoKAslw1VlUZGqSCRlAkq7pLuhSHWqUlSlKsJVlZFIWSz1D38jUZEsj5WlKmR0q6uqIzLgMjsiVRWRqNQhUikSleXViVh5OBQtj8m5qJQvHK2KSpWT1ZEyur9RqXNEBksutZBcc8mqeLg6XlFWVpEoCyejyVQ4FC4rT1WH5FpLJqIJOS1jUhEKpUIVlSnxT/sq4kqZ8lAyJP9PqiwZl8s4mkhG4ym5dKLJkEyPUGUiXp2MiVhForIsEq5IlUfkyiiLhGIJwfC3TnAu9blFGqLskPa5ZdrnVmmfW6d93jH4DLQP7q86XxtpZ1s5dsr7q/1Ve0BBzr8fKF8Y566IRSviyar/vT09/XC5fWfZiOwoWTYim5wcYrzbeGJnc5Kd/zvQ3w80BzaJO5O+H9g5+H7A9B3MmLTvWsamfR63ju9gdpHn21WO3eTY3cJ3MLsANQ6la1weKi9PpKIh2d+mRCgcEtFEolLuzhWiuqxKlCfiyfLqKvm/UxWJlyUq5AaflN1fhYhXVkXK5DZv8wbQELjp14fIIxos8vDnDQOTgeV3OG37Bp33T3RXCy0dhVnJtgu5CoPOHU4vPJFA82jwZ1nwZ3laDsKvOIRJFbss7++n42RW7Ehamx5N+1yW9+8VOyb/W1yOhBx7rOOKVii748/ECROu7FzaCpuQjDyIEfzu24qzEPPBdgILhogBzwXMG4GMhc3OoTmpc9gzj2jwnoTOYS/HOwfl916EziGXnGDI7xKaBefZW+qwjxz7qpjJ0U6O/eU4QI4D5Wgvx0FyHCzHIXJ0kONQOQ6T43A5OspxhBxHynGUHJ3kOFqOY+ToLMexchwnx/FydJGjqxwnyNFNjhODXTh9Q1b21MlZe24fw9y+hrn9DHPtDHP7G+YOMMwdaJhrb5g7yDB3sGHuEMNcB8PcoYa5wwxzhxvmOhrmjjDMHWmYO8ow18kwd7Rh7hjDXGfD3LGGueMMc8cb5roY5roa5k4wzHUzzJ2Y9/f3uPrI3LBD2R3Qq997A+pqdUodIbEPsEZf4XjzpHxWsdgXot9fcd0v+3OF9XXGdsBYXOlyLKJ/X1vdPzufQ+nXaQ/I5lzhta/5HgiMxVVuxiKUeZ27/Sb6XJ765zXzgzbtXHHT9feDgbG42rVYxM33HByy8T7H/u3+hQ4be67Yv98LcSgwFv3ciUV4Xfd/HLYxPsfWfS/J4Rt+rvXel9IRGIv+LsQitl47xREb5nNoA3wWR27IuUIbpJ84ChiLa/7bWJRtoJ2i0/p8jm6wz+LodZ4rmtoI/cQxwFhc+1/FIrZRdorO/+5zfCN9Fsf+y7kSqY3WTxwHjMV19mMR2gQ7xfEmn0Ob5LPo8s9ziU3UT3QFxmKAzVgkN9lOccLaPkey8Fl0SztXOJWVfuJEYCyutxSLUHaHAH4/IIB8K9L5LNtY3OBJLIAcJIB9vOgPjMWNnsQC2O8JYL8irgPG4iZPYgHc1wSwLosbgLG4mRSLPHAsgOtXAPNPsPTLvI0v2zgje4zueSifI1YvxuPsXvti/El5RIPVydHnPRmYDCy/T877W2DQef9MNvUyttwcfrKdCEu2JO82PrH2DQo9As0r9NVQ/WePvL9vidNzFYYrpeiqj6ha+upmD2DSV4CDy1jgPfLwt8T1yPNjt+sGjHUlzOfyqM3drpK021XlEQ2uIux2Scd3O+V30vPdrhss2RJVBnMpu111oHkqc7erNux2KQu7XTfgblcNTPoUKbjoqo/0+RRc9TQ+xilb+04OikYuOAeRaHAquFtAFy0V41MJXZLrfuvcQfvd05PuEJnjp5HrRCi7Q6iYnEaoE6cCNTzdg/VyOmG99AJ36LpX6ZVmK0sLdD6dBsynM0i6npH3T3JD16YTgDqcCdMhWm2TXM8Ex08fZ+URDT6LQK69HSdX5Xdvz8n1BFiyVYYN5lLI9exA83MyyfVsA7meY4FcEVVLk+vZwKQ/hxRcdNVH+nyu4x3pGUHRyANreAZQQ2ThPc/xeKh8OY/Q3QL9pjw2QOchupNF5s75jpOR0vB8gobnATW8wJNvJZD160LHa46KyYWEmtOHRH59iESttUCvIWQ+XUTS9SILRI280/1imA6xsE2ivhgcP31ckkc0+BICUV/qOFErvy/1nKi7wpItXm0wl0LUfQPNL8sk6r4Gor7MAlEjqpYm6r7ApL+MFFx01Uf6fLnj3dRFQdFAE/VFQA2RhfcKx+Oh8uUKQncL9JtC1DoP0Z0sMneudJyolYZXEjS8AqjhVZ4QNbJ+Xe14zVExuZpQc/qRyK8fkai1Fug1hMyn/iRd+1sg6i5AHa6B6VAtbBL1NeD46eNaFlErg68lEPV1jhO18vs6z4m6CyzZRMpgLoWoBwSaX59J1AMMRH29BaJGVC1N1AOASX89Kbjoqo/0+QbHu6n+QdFAE3V/oIbIwnuj4/FQ+XIjobsF+k0hap2H6E4WmTs3OU7USsObCBreCNTwZk+IGlm/bnG85qiY3EKoObeSyO9WIlFrLdBrCJlPt5F0vc0CUR8P1OF2mA4Rq0R9Ozh++rgjj2jwHQSivtNxolZ+3+k5UR8PS7Yqa0R9V6D53ZlEfZeBqO+2QNSIqqWJ+i5g0t9NCi666iN9vsfxbuq2oGigifo2oIbIwnuv4/FQ+XIvobsF+k0hap2H6E4WmTv3OU7USsP7CBreC9Twfk+IGlm/HnC85qiYPECoOQ+SyO9BIlFrLdBrCJlPD5F0fcgCUSOfNf8wTIcKq8+7fBgcP308kkc0+BECUT/qOFErvx/1nKiPgyVbubXnXQ4MNH8sk6gHGoj6MQtEjahamqgHApP+MVJw0VUf6fPjjndTDwVFA03UDwE1RBbeJxyPh8qXJwjdLdBvClHrPER3ssjcedJxolYaPknQ8Amghk95QtTI+vW04zVHxeRpQs15hkR+zxCJWmuBXkPIfHqWpOuzFoj6WKAOz8F0CCdsEvVz4Pjp4/k8osHPE4j6BceJWvn9gudEfSws2ZIxg7kUon4x0PylTKJ+0UDUL1kgakTV0kT9IjDpXyIFF131kT6/7Hg39WxQNNBE/SxQQ2ThfcXxeKh8eYXQ3QL9phC1zkN0J4vMnVcdJ2ql4asEDV8BaviaJ0SNrF+vO15zVExeJ9ScN0jk9waRqLUW6DWEzKc3Sbq+aYGoOwN1eAumQ2XcJlG/BY6fPt7OIxr8NoGo33GcqJXf73hO1J1hyRaNG8ylEPWgQPN3M4l6kIGo37VA1IiqpYl6EDDp3yUFF131kT6/53g39WZQNNBE/SZQQ2Thfd/xeKh8eZ/Q3QL9phC1zkN0J4vMncGOE7XScDBBw/eBGn7gCVEj69eHjtccFZMPCTXnIxL5fUQkaq0Feg0h8+ljkq4fWyDqY4A6fALToczqXd+fgOOnj0/ziAZ/SiDqzxwnauX3Z54T9TG4r52s3fU9JND880yiHmIg6s8tEDWiammiHgJM+s9JwUVXfaTPXzjeTX0cFA00UX8M1BBZeL90PB4qX74kdLdAvylErfMQ3ckic2eo40StNBxK0PBLoIZfeULUyPr1teM1R8Xka0LN+YZEft8QiVprgV5DyHwaRtJ1mAWiPhqow3DcFZoym0Q9HBw/fXybRzT4WwJRf+c4USu/v/OcqI/GQVelwVwKUY8INB+ZSdQjDEQ90gJRI6qWJuoRwKQfSQouuuojff7e8W5qWFA00EQ9DKghsvCOcjweKl9GEbpboN8UotZ5iO5kkbkz2nGiVhqOJmg4CqjhD54QNbJ+/eh4zVEx+ZFQc8aQyG8Mkai1Fug1hMynsSRdx1og6k5AHcbh+slym0Q9Dhw/ffyURzT4JwJR/+w4USu/f/acqDvhvnaqMJhLIerxgeYTMol6vIGoJ1ggakTV0kQ9Hpj0E0jBRVd9pM+/ON5NjQ2KBpqoxwI1RBbeiY7HQ+XLREJ3C/SbQtQ6D9GdLDJ3JjlO1ErDSQQNJwI1nOwJUSPr16+O1xwVk18JNWcKifymEIlaa4FeQ8h8mkrSdaoFoj4KqMM0mA5xq2/PmgaOnz6m5xENnk4g6hmOE7Xye4bnRH0ULNli1t6eNTPQfFYmUc80EPUsC0SNqFqaqGcCk34WKbjoqo/0+TfHu6mpQdFAE/VUoIbIwjvb8XiofJlN6G6BflOIWuchupNF5s4cx4laaTiHoOFsoIZzPSFqZP363fGao2LyO6HmzCOR3zwiUWst0GsImU/zSbrOt0DURwJ1WOApUS8Ax08fC/OIBi8kEPUix4la+b3Ic6I+0kOiXhxoviSTqBcbiHqJBaJGVC1N1IuBSb/EE6JG+vyH493U/KBooIl6PlBDZOFd6ng8VL4sJXS3QL8pRK3zEN3JInNnmeNErTRcRtBwKVDD5Z4QNbJ+rXC85qiYrCDUnJUk8ltJJGqtBXoNIfNpFUnXVRaI+gigDqthOpRZfdb3anD89LEmj2jwGgJR5+S7TdTKb2VjDva8Von6CFiyVVh71netQPPc/Jy16Vn9h0yiVv+ITdSIqqWJuhYw6XPzOcFFV32kz3n5wAKUg19wq4KigSbqVcivH4HxyHc8Hipf8vPx3S3QbwpR6zxEd7LI3CkgaxjK7vhzLRcQNMwHalgbrKE+0HsAsn4VOl5zVEwKCTWnDjDW6T1UnXweUWst0GsImU9FJF2L8vlE3RGoQ12YDmVJm0RdFxw/fdTLJxpcLx9/3mLHiVr5Xew5UXfEEXXEYC6FqEsCzetnEnWJgajrWyDqjkCiLgEmff18TnDRVR/pcwPHu6mioGigiboIqCGy8JY6Hg+VL6WE7rYUTDJo+3QeojtZZO40dJyolYYNCRqWAjXczBOiRtavzR2vOSommxNqTiMS+TUiErXWAr2GkPnUmKRrYwtEfTiQqLeA6RC2eo16C3D89LFlPtHgLQlEvZXjRK383spzoj4cRtRJa9eomwSab51J1E0MRL21BaI+HEjUTYBJv3U+J7joqo/0eRvHu6nGQdFAE3VjoIbIwrut4/FQ+bItobsF+k0hap2H6E4WmTtNHSdqpWFTgobbAjXczhOiRtav7R2vOSom2xNqTjMS+TUjErXWAr2GkPnUnKRrcwtEfRiQqFvAdIhEbBJ1C3D89LFDPtHgHQhE3dJxolZ+t/ScqA+DEXVV0mAuhahbBZq3ziTqVgaibm2BqA8DEnUrYNK3zucEF131kT7v6Hg31TwoGmiibg7UEFl42zgeD5UvbQjdLdBvClHrPER3ssjcaes4USsN2xI0bAPUcCdPiBpZv3Z2vOaomOxMqDm7kMhvFyJRay3QawiZT7uSdN3VAlEfCiTq3WA6VFu9Rr0bOH762D2faPDuBKIOOU7Uyu+Q50R9KIyohbVr1CLQPJxJ1MJA1GELRH0okKgFMOnD+Zzgoqs+0ueI493UrkHRQBP1rkANkYU36ng8VL5ECd0t0G8KUes8RHeyyNwpc5yolYZlBA2jQA3LPSFqZP2KOV5zVExihJoTJ5FfnEjUWgv0GkLmU4Kka8ICUXcAEvUeMB2iVol6D3D89LFnPtHgPQlEvZfjRK383stzou4AI+pKa0S9d6D5PplEvbeBqPexQNQdgES9NzDp98nnBBdd9ZE+7+t4N5UIigaaqBNADZGFdz/H4/FnvhC6W6DfFKLWeYjuZJG5085xolYatiNouB9Qw/09IWpk/TrA8ZqjYnIAoeYcSCK/A4lErbVAryFkPrUn6dreAlEfAiTqg2A6xBI2ifogcPz0cXA+0eCDCUR9iONErfw+xHOiPgT3irmYwVwKUXcIND80k6g7GIj6UAtEfQiQqDsAk/7QfE5w4d+jAn0+zPFuqn1QNNBE3R6oIbLwHu54PFS+HE7oboF+U4ha5yG6k0XmTkfHiVpp2JGg4eFADY/whKiR9etIx2uOismRhJpzFIn8jiIStdYCvYaQ+dSJpGsnC0R9MJCoj8ZdobFK1EeD46ePY/KJBh9DIOrOjhO18ruz50R9MIyoo9aI+thA8+MyifpYA1EfZ4GoDwYS9bHApD8unxNcdNVH+ny8491Up6BooIm6E1BDZOHt4ng8VL50IXS3QL+NmxciXzoTOllk7nR1nKiVhl0JGnYBaniCJ0SNrF/dHK85KibdCDXnRBL5nUgkaq0Feg0h86k7SdfuFoj6ICBRn4S7Rh2ySdQngeOnj5PziQafTCDqHo4TtfK7h+dEfRCMqBMhg7kUoq4INK/MJOoKA1FXWiDqg4BEXQFM+sp8TnDRVR/pc5Xj3VT3oGigibo7UENk4U06Hg+VL0lCdwv0m0LUOg/RnSwyd6odJ2qlYTVBwyRQw5QnRI2sX6c4XnNUTE4h1JxTSeR3KpGotRboNYTMp54kXXtaIOr2QKI+DddPCptEfRo4fvo4PZ9o8OkEou7lOFErv3t5TtTtYURdnjKYSyHqMwLNz8wk6jMMRH2mBaJuDyTqM4BJf2Y+J7joqo/0+SzHu6meQdFAE3VPoIbIwtvb8XiofOlN6G6BflOIWuchupNF5s7ZjhO10vBsgoa9gRqe4wlRI+vXuY7XHBWTcwk15zwS+Z1HJGqtBXoNIfPpfJKu51sg6gOBRH0B7p5Hq2/PugAcP31cmE80+EICUfdxnKiV3308J+oDcU8mSxrMpRD1RYHmF2cS9UUGor7YAlEfCCTqi4BJf3E+J7joqo/0+RLHu6nzg6KBJurzgRoiC++ljsdD5culhO4W6DeFqHUeojtZZO70dZyolYZ9CRpeCtTwMk+IGlm/Lne85qiYXE6oOVeQyO8KIlFrLdBrCJlPV5J0vdICUR8AJOqrYDpUW71GfRU4fvq4Op9o8NUEou7nOFErv/t5TtQH4N6eZe0adf9A82syibq/gaivsUDUBwCJuj8w6a/J5wQXXfWRPl/reDd1ZVA00ER9JVBDZOG9zvF4qHy5jtDdAv2mELXOQ3Qni8ydAY4TtdJwAEHD64AaXu8JUSPr1w2O1xwVkxsINedGEvndSCRqrQV6DSHz6SaSrjdZIOr9gUR9M0yHVJlNor4ZHD993JJPNPgWAlHf6jhRK79v9Zyo94cRdajSYC6FqG8LNL89k6hvMxD17RaIen8gUd8GTPrb8znBRVd9pM93ON5N3RQUDTRR3wTUEFl473Q8Hipf7iR0t0C/KUSt8xDdySJz5y7HiVppeBdBwzuBGt7tCVEj69c9jtccFZN7CDXnXhL53Uskaq0Feg0h8+k+kq73WSDqdkCivh+mQ8LqXd/3g+OnjwfyiQY/QCDqBx0nauX3g54TdTvc76iTBnMpRP1QoPnDmUT9kIGoH7ZA1O2ARP0QMOkfzucEF131kT4/4ng3dV9QNNBEfR9QQ2ThfdTxeKh8eZTQ3QL9phC1zkN0J4vMnYGOE7XScCBBw0eBGj7mCVEj69fjjtccFZPHCTXnCRL5PUEkaq0Feg0h8+lJkq5PWiDq/YBE/RTuGrXVZ30/BY6fPp7OJxr8NIGon3GcqJXfz3hO1Pvh7vq29qzvZwPNn8sk6mcNRP2cBaLeD0jUzwKT/rl8TnDRVR/p8/OOd1NPBkUDTdRPAjVEFt4XHI+HypcXCN0t0G8KUes8RHeyyNx50XGiVhq+SNDwBaCGL3lC1Mj69bLjNUfF5GVCzXmFRH6vEIlaa4FeQ8h8epWk66uBrjbpct88rC/6eC2faPBrBLp83XG6VH6/TqBLk62IBfI6YREDFx493q5qiPT7DU+aiVeBPr/peDOhfH2D0Ey85XjzreLyFrnmZKvh26TG4e3/oHHYh9Q4vJNPNPgdQuMwyPHGQfk9yJPGQSXyIMIiBi48erxd1RDp97ueNA5vA31+z/HGQfn6LqFxeN/xxkHF5X1yzclWw8GkxmGwhWv4ewOv4X8AXEM2m6UP8jnN0of5RIM/JDRLHzneLCm/P7LULIWyO8TgwFb0pcPBwBgh4/2x4xuoKnQfEzbQTxzfQJXPnxD8/pS06X1quAUErQk7Zog1/hGh6UGu988cz3ul4WcEDT8GajjEE9BC7jmfO75PqJh8TqiXX5Dq5RfEy71aC/QaQubTl6Q1hNbyS6DPuTlrH2hb2+DOFWoWnGeo9P8rOb6W4xs5hskxXI5v5fhOjhFyjJTjezlGyTFajh/k+FGOMXKMlWOcHD/J8bMc4+WYIMcvckyUY5Ick+X4VY4pckyVY5oc0+WYkf+XSOnrZmjQZ6TPfWWY+9ow941hbphhbrhh7lvD3HeGuRGGuZGGue8Nc6MMc6MNcz8Y5n40zI0xzI01zI0zzP1kmPvZMDfeMDfBMPeLYW6iYW6SYW6yYe5Xw9wUw9xUw9w0w9x0w9wMQ0+rMXa/4M9Qdsdaazbb+jIUUKv0LdJfAevew604tT4zFtn4rGLxNUS/v+L6TfbnCgf6iWHAWDziciyi/7NTDM/O51Caz+LbbM4VXks/8R0wFo+6GYtQhp1ixCb6XJ76h89i5KadK27QT3wPjMVA12IRN9opRm28z7F/8VmM3thzxf5VP/EDMBaPuROL8DrsFD9ujM+xdfosxmz4uarWo58YC4zF4y7EIrZeO8W4DfM5tAE+i5825FyhDdJP/AyMxRP/bSzKNtBOMX59Pkc32GcxYZ3niqY2Qj/xCzAWT/5XsYhtlJ1i4r/7HN9In8WkfzlXIrXR+onJwFg8ZT8WoU2wU/xq8jm0ST6LKf88l9hE/cRUYCyethmL5CbbKaat7XMkC5/F9LRzhVNZ6SdmAGPxjKVYhLI7BPD7AQHkW5HOZ1n//NqTWAA5SAD7ePE4MBbPeRILYL8ngP2KeAoYi+c9iQVwXxPAuiyeBcbiBVIs0I8CAa5fAcw/wdIPfV8AsseYCbuOG7H6ACic3WvfPDorn2jwrHz8eX8DJgPL79/y/xYYdF6rD4CaAUu2pLUHQM0ONJ8TXIT/31XR2UESps/Nyec/AApRtfTVzdnApJ8DDi5jgc/Ox98ZNTvfj91uOjDWc2E+l0dt7nZzSbvd7/lEg38n7HbzHN/tlN/zPN/tpsOSLVFlMJey280PNF+QudvNN+x2CyzsdtOBu918YNIvIAUXXfWRPi/EVU/jvc/Z2vdbUDRywTmIRINF4G4BXbRUjBcRuiTX/da5g/Z7sSfdITLHl5DrRCi7Q6iYLCHUiUVADf/wYL38QVgvS8Eduu5VlqbZytICnU9LgPm0jKTrsnz+j/ynAXVYDtMhWm2TXJeD46ePFflEg1cQyHWl4+Sq/F7pOblOgyVbZdhgLoVcVwWar84k11UGcl1tgVwRVUuT6ypg0q8mBRdd9ZE+r3G8I10WFA300zaWATWEFt4Ct+Oh8kXZiO5ugX5Tntyg8xDdySJzpxZZw1B2x59rWdmI1jA9d7L+BTZYQ32g9wBk/cpzvOaomOQRak4+MNbpPVR+AY+otRboNYTMpwKSrgUFfKJG3uleG6ZDLGyTqGuD46ePwgKiwYUF+PPWAW4sLL/rFPwtMOi8Vol6KgxA4tUGcylEXRRoXrcgZ216Lir4J1Grf8Qm6qlAoi4CJn3dAk5w0VUf6XM9x7upgqBooIm6AKghsvAWOx4PlS/FhO4W6DeFqHUeojtZZO6UOE7USsMSgobFQA3re0LUyPrVwPGao2LSgFBzSknkV0okaq0Feg0h86khSdeGFoh6CpCoN4PpUG31QfSbgeOnj80LiAZvTiDqRo4TtfK7kedEPQVG1CJlMJdC1I0DzbfIJOrGBqLewgJRTwESdWNg0m9RwAkuuuojfd7S8W6qYVA00ETdEKghsvBu5Xg8VL5sRehugX5TiFrnIbqTReZOE8eJWmnYhKDhVkANt/aEqJH1axvHa46KyTaEmrMtify2JRK11gK9hpD51JSka1MLRP0rkKi3g+kQsUrU24Hjp4/tC4gGb08g6maOE7Xyu5nnRP0rjKirrBF180DzFplE3dxA1C0sEPWvQKJuDkz6FgWc4KKrPtLnHRzvppoGRQNN1E2BGiILb0vH46HypSWhuwX6TSFqnYfoThaZO60cJ2qlYSuChi2BGrb2hKiR9WtHx2uOismOhJrThkR+bYhErbVAryFkPrUl6drWAlEjnzW/E0yHCqvPu9wJHD997FxANHhnAlHv4jhRK7938ZyoJ+Mek2fteZe7BprvlknUuxqIejcLRD0ZSNS7ApN+twJOcNFVH+nz7o53U22DooEm6rZADZGFN+R4PFS+hAjdLdBvClHrPER3ssjcEY4TtdJQEDQMATUMe0LUyPoVcbzmqJhECDUnSiK/KJGotRboNYTMpzKSrmUWiHoSkKjLYTqEEzaJuhwcP33ECogGxwhEHXecqJXfcc+JehLuJQMxg7kUok4Emu+RSdQJA1HvYYGoJwGJOgFM+j0KOMFFV32kz3s63k2VBUUDTdRlQA2RhXcvx+Oh8mUvQncL9JtC1DoP0Z0sMnf2dpyolYZ7EzTcC6jhPp4QNbJ+7et4zVEx2ZdQc/Yjkd9+RKLWWqDXEDKf2pF0bWeBqCcCiXp/mA6VcZtEvT84fvo4oIBo8AEEoj7QcaJWfh/oOVFPxD0QP24wl0LU7QPND8ok6vYGoj7IAlFPBBJ1e2DSH1TACS666iN9PtjxbqpdUDTQRN0OqCGy8B7ieDxUvhxC6G6BflOIWuchupNF5k4Hx4laadiBoOEhQA0P9YSokfXrMMdrjorJYYSacziJ/A4nErXWAr2GkPnUkaRrRwtE/QuQqI+A6VBm9a7vI8Dx08eRBUSDjyQQ9VGOE7Xy+yjPifoX3AuWrN313SnQ/OhMou5kIOqjLRD1L0Ci7gRM+qMLOMFFV32kz8c43k11DIoGmqg7AjVEFt7OjsdD5UtnQncL9JtC1DoP0Z0sMneOdZyolYbHEjTsDNTwOE+IGlm/jne85qiYHE+oOV1I5NeFSNRaC/QaQuZTV5KuXS0Q9QQgUZ+Au0JTZpOoTwDHTx/dCogGdyMQ9YmOE7Xy+0TPiXoCjqgrDeZSiLp7oPlJmUTd3UDUJ1kg6glAou4OTPqTCjjBRVd9pM8nO95NdQ2KBpqouwI1RBbeHo7HQ+VLD0J3C/SbQtQ6D9GdLDJ3KhwnaqVhBUHDHkANKz0hamT9qnK85qiYVBFqTpJEfkkiUWst0GsImU/VJF2rLRD1eCBRp3D9ZLlNok6B46ePUwqIBp9CIOpTHSdq5fepnhP1eNxd3xUGcylE3TPQ/LRMou5pIOrTLBD1eCBR9wQm/WkFnOCiqz7S59Md76aqg6KBJupqoIbIwtvL8XiofOlF6G6BflOIWuchupNF5s4ZjhO10vAMgoa9gBqe6QlRI+vXWY7XHBWTswg1pzeJ/HoTiVprgV5DyHw6m6Tr2RaI+mcgUZ8D0yFu9e1Z54Djp49zC4gGn0sg6vMcJ2rl93meE/XPMKKOWXt71vmB5hdkEvX5BqK+wAJR/wwk6vOBSX9BASe46KqP9PlCx7ups4OigSbqs4EaIgtvH8fjofKlD6G7BfpNIWqdh+hOFpk7FzlO1ErDiwga9gFqeLEnRI2sX5c4XnNUTC4h1JxLSeR3KZGotRboNYTMp74kXftaIOqfgER9madEfRk4fvq4vIBo8OUEor7CcaJWfl/hOVH/5CFRXxloflUmUV9pIOqrLBD1T0CivhKY9Fd5QtRIn692vJvqGxQNNFH3BWqILLz9HI+Hypd+hO4W6DeFqHUeojtZZO70d5yolYb9CRr2A2p4jSdEjaxf1zpec1RMriXUnOtI5Hcdkai1Fug1hMynASRdB1gg6nFAor4epkOZ1Wd9Xw+Onz5uKCAafAOBqG90nKiV3zd6TtTjYERdYe1Z3zcFmt+cSdQ3GYj6ZgtEPQ5I1DcBk/7mAk5w0VUf6fMtjndTA4KigSbqAUANkYX3VsfjofLlVkJ3C/SbQtQ6D9GdLDJ3bnOcqJWGtxE0vBWo4e2eEDWyft3heM1RMbmDUHPuJJHfnUSi1lqg1xAyn+4i6XqXBaIeCyTqu3FEnbRJ1HeD46ePewqIBt9DIOp7HSdq5fe9nhP1WBxRRwzmUoj6vkDz+zOJ+j4DUd9vgajHAon6PmDS31/ACS666iN9fsDxbuquoGigifouoIbIwvug4/FQ+fIgobsF+k0hap2H6E4WmTsPOU7USsOHCBo+CNTwYU+IGlm/HnG85qiYPEKoOY+SyO9RIlFrLdBrCJlPA0m6DrRA1GOARP0YTIew1WvUj4Hjp4/HC4gGP04g6iccJ2rl9xOeE/UYGFEnrV2jfjLQ/KlMon7SQNRPWSDqMUCifhKY9E8VcIKLrvpIn592vJsaGBQNNFEPBGqILLzPOB4PlS/PELpboN8UotZ5iO5kkbnzrONErTR8lqDhM0ANn/OEqJH163nHa46KyfOEmvMCifxeIBK11gK9hpD59CJJ1xctEPWPQKJ+CaZDJGKTqF8Cx08fLxcQDX6ZQNSvOE7Uyu9XPCfqH2FEXZU0mEsh6lcDzV/LJOpXDUT9mgWi/hFI1K8Ck/61Ak5w0VUf6fPrjndTLwZFA03ULwI1RBbeNxyPh8qXNwjdLdBvClHrPER3ssjcedNxolYavknQ8A2ghm95QtTI+vW24zVHxeRtQs15h0R+7xCJWmuBXkPIfBpE0nWQBaL+AUjU78J0qLZ6jfpdcPz08V4B0eD3CET9vuNErfx+33Oi/gFG1MLaNerBgeYfZBL1YANRf2CBqH8AEvVgYNJ/UMAJLrrqI33+0PFualBQNNBEPQioIbLwfuR4PFS+fEToboF+U4ha5yG6k0XmzseOE7XS8GOChh8BNfzEE6JG1q9PHa85KiafEmrOZyTy+4xI1FoL9BpC5tMQkq5DLBD1aCBRfw7TIWqVqD8Hx08fXxQQDf6CQNRfOk7Uyu8vPSfq0TCirrRG1EMDzb/KJOqhBqL+ygJRjwYS9VBg0n9VwAkuuuojff7a8W5qSFA00EQ9BKghsvB+43g8VL58Q+hugX5TiFrnIbqTRebOMMeJWmk4jKDhN0ANh3tC1Mj69a3jNUfF5FtCzfmORH7fEYlaa4FeQ8h8GkHSdYQFoh4FJOqRMB1iCZtEPRIcP318X0A0+HsCUY9ynKiV36M8J+pRMKKOxwzmUoh6dKD5D5lEPdpA1D9YIOpRQKIeDUz6Hwo4wYV/jwr0+UfHu6kRQdFAE/UIoIbIwjvG8XiofBlD6G6BflOIWuchupNF5s5Yx4laaTiWoOEYoIbjPCFqZP36yfGao2LyE6Hm/Ewiv5+JRK21QK8hZD6NJ+k63gJRfw8k6gm4KzRWiXoCOH76+KWAaPAvBKKe6DhRK78nek7U38OIOmqNqCcFmk/OJOpJBqKebIGovwcS9SRg0k8u4AQXXfWRPv/qeDc1PigaaKIeD9QQWXinOB4PlS9TCN0t0G8KUes8RHeyyNyZ6jhRKw2nEjScAtRwmidEjaxf0x2vOSom0wk1ZwaJ/GYQiVprgV5DyHyaSdJ1pgWiHgkk6lm4a9Qhm0Q9Cxw/ffxWQDT4NwJRz3acqJXfsz0n6pEwok6EDOZSiHpOoPncTKKeYyDquRaIeiSQqOcAk35uASe46KqP9Pl3x7upmUHRQBP1TKCGyMI7z/F4qHyZR+hugX5TiFrnIbqTRebOfMeJWmk4n6DhPKCGCzwhamT9Wuh4zVExWUioOYtI5LeISNRaC/QaQubTYpKuiy0Q9QggUS/B9ZPCJlEvAcdPH38UEA3+g0DUSx0nauX3Us+JegSMqMtTBnMpRL0s0Hx5JlEvMxD1cgtEPQJI1MuASb+8gBNcdNVH+rzC8W5qcVA00ES9GKghsvCudDweKl9WErpboN8UotZ5iO5kkbmzynGiVhquImi4Eqjhak+IGlm/1jhec1RM1hBqTk5tDvmp87KIWmuBXkPIfKpF0rVWbT5Rfwck6lyYDlGrb8/KBcdPH3m1iQbn1cafN7+220St/M6v/bfAoPNaJervcE8ms/b2rIJA89q1c9am54La/yRq9Y/YRP0dkKgLgElfuzYnuOiqj/S5sLbb3VStoGigiboWUENk4a3jeDxUvtSpje9ugX5TiFrnIbqTReZOEVnDUHbHn2u5iKBhHaCGdcEa6gO9ByDrVz3Ha46KST1CzSkmkV8xkai1Fug1hMynEpKuJRaI+lsgUdeH6VBt9Rp1fXD89NGgNtHgBgSiLnWcqJXfpZ4T9be4t2elDOZSiLphoPlmmUTd0EDUm1kg6m+BRN0QmPSb1eYEF131kT5v7ng3VRIUDTRRlwA1RBbeRo7HQ+VLI0J3C/SbQtQ6D9GdLDJ3GjtO1ErDxgQNGwE13MITokbWry0drzkqJlsSas5WJPLbikjUWgv0GkLmUxOSrk0sEPVwIFFvDdMhVWaTqLcGx08f29QmGrwNgai3dZyold/bek7Uw2FEHao0mEsh6qaB5ttlEnVTA1FvZ4GohwOJuikw6berzQkuuuojfd7e8W6qSVA00ETdBKghsvA2czweKl+aEbpboN8UotZ5iO5kkbnT3HGiVho2J2jYDKhhC0+IGlm/dnC85qiY7ECoOS1J5NeSSNRaC/QaQuZTK5KurSwQ9TAgUbeG6ZCwetd3a3D89LFjbaLBOxKIuo3jRK38buM5UQ/D/Y7a2l3fbQPNd8ok6rYGot7JAlEPAxJ1W2DS71SbE1x01Uf6vLPj3VSroGigiboVUENk4d3F8XiofNmF0N0C/aYQtc5DdCeLzJ1dHSdqpeGuBA13AWq4mydEjaxfuztec1RMdifUnBCJ/EJEotZaoNcQMp8ESVdhgai/ARJ1GHeN2uqzvsPg+OkjUptocIRA1FHHiVr5HfWcqL/B3fVt7VnfZYHm5ZlEXWYg6nILRP0NkKjLgElfXpsTXHTVR/occ7ybEkHRQBO1AGqILLxxx+Oh8iVO6G6BflOIWuchupNF5k7CcaJWGiYIGsaBGu7hCVEj69eejtccFZM9CTVnLxL57UUkaq0Feg0h82lvkq57B7rapMuv87G+6GOf2kSD9yHQ5b6O06Xye18CXZpsRSyQfQmLGLjw6PF2VUOk3/t50kzsDfS5nePNxJ++EpqJ/R1vvlVc9ifXnGw1PIDUOBzwHzQOX5EahwNrEw0+kNA4tHe8cVB+t/ekcVCJ3J6wiIELjx5vVzVE+n2QJ43DAUCfD3a8cVC+HkRoHA5xvHFQcTmEXHOy1bADqXHoYOEa/lDgNfxDgWvIZrN0aG1Os3RYbaLBhxGapcMdb5aU34dbapZC2R2iQ2Ar+tJhB2CMkPHu6PgGqgpdR8IGeoTjG6jy+QiC30eSNr0jDbeAoDVhxwyxxg8nND3I9X6U43mvNDyKoGFHoIadPAEt5J5ztOP7hIrJ0YR6eQypXh5DvNyrtUCvIWQ+dSatIbSWnYE+5+asfaBtbZqH07RZcJ5jpf/HyXG8HF3k6CrHCXJ0k+NEObrLcZIcJ8vRQ44KOSrlqJIjKUe1HCk5TpHjVDl6ynGaHKfL0UuOM+Q4U46z5Ogtx9lynCPHuXKcV/svkdLXzbFBn5E+d5xh7njDXBfDXFfD3AmGuW6GuRMNc90NcycZ5k42zPUwzFUY5ioNc1WGuaRhrtowlzLMnWKYO9Uw19Mwd5ph7nTDXC/D3BmGuTMNc2cZ5nob5s42zJ1jmDvXMHeeoafND/7cL/gzlN2x1prNtr4cC6hV+hbp44B17/1WnFqfGYtsfFaxOB6i319x7ZL9ucKBfqIrMBaDXY5F9H92ihOy8zmU5rPols25wmvpJ04ExuIDN2MRyrBTdN9En8tT//BZnLRp54ob9BMnA2PxoWuxiBvtFD023ufYv/gsKjb2XLF/1U9UAmPxkTuxCK/DTlG1MT7H1umzSG74uarWo5+oBsbiYxdiEVuvnSK1YT6HNsBnccqGnCu0QfqJU4Gx+OS/jUXZBtopeq7P5+gG+yxOW+e5oqmN0E+cDozFp/9VLGIbZafo9e8+xzfSZ3HGv5wrkdpo/cSZwFh8Zj8WoU2wU5xl8jm0ST6L3v88l9hE/cTZwFgMsRmL5CbbKc5Z2+dIFj6Lc9POFU5lpZ84DxiLzy3FIpTdIYDfDwgg34p0Pss2Fl94EgsgBwlgHy8+BsbiS09iAez3BLBfEZ8BYzHUk1gA9zUBrMviC2AsviLFAv0oEOD6FcD8Eyz90PcFIHuM82HXcSNWHwCFs3vtm0cvqE00+ILa+PNeCEwGlt8X1v5bYNB5rT4A6jxYsiWtPQCqT6D5RcFF+P9dFe0TJGH63EW1+Q+AQlQtfXWzDzDpLwIHl7HA+9TG3xnVp7Yfu925wFhfDPO5PGpzt7uYtNtdUpto8CWE3e5Sx3c75felnu9258KSLVFlMJey2/UNNL8sc7fra9jtLrOw250L3O36ApP+MlJw0VUf6fPluOppvPc5W/suDIpGLjgHkWhwBbhbQBctFeMrCF2S637r3EH7faUn3SEyx68i14lQdodQMbmKUCeuAGp4tQfr5WrCeukH7tB1r9IvzVaWFuh8ugqYT/1Juvavzf+R/zlAHa6B6RCttkmu14Djp49raxMNvpZArtc5Tq7K7+s8J9dzYMlWGTaYSyHXAYHm12eS6wADuV5vgVwRVUuT6wBg0l9PCi666iN9vsHxjrR/UDTQT9voD9QQWXhvdDweKl9uJHS3QL8pT27QeYjuZJG5c5PjZKQ0vImg4Y1ADW/25FsJZP26xfGao2JyC6Hm3Eoiv1uJRK21QK8hZD7dRtL1NgtEjbzT/XaYDrGwTaK+HRw/fdxRm2jwHQSivtNxolZ+3+k5UZ8NS7Z4tcFcClHfFWh+dyZR32Ug6rstEDWiammivguY9HeTgouu+kif73G8m7otKBpoor4NqCGy8N7reDxUvtxL6G6BflOIWuchupNF5s59jhO10vA+gob3AjW83xOiRtavBxyvOSomDxBqzoMk8nuQSNRaC/QaQubTQyRdH7JA1L2BOjwM06Ha6oPoHwbHTx+P1CYa/AiBqB91nKiV3496TtS9YckmUgZzKUQ9MND8sUyiHmgg6scsEDWiammiHghM+sdIwUVXfaTPjzveTT0UFA00UT8E1BBZeJ9wPB4qX54gdLdAvylErfMQ3ckic+dJx4laafgkQcMngBo+5QlRI+vX047XHBWTpwk15xkS+T1DJGqtBXoNIfPpWZKuz1og6rOAOjwH0yFilaifA8dPH8/XJhr8PIGoX3CcqJXfL3hO1GfBkq0qZTCXQtQvBpq/lEnULxqI+iULRI2oWpqoXwQm/Uuk4KKrPtLnlx3vpp4NigaaqJ8FaogsvK84Hg+VL68Qulug3xSi1nmI7mSRufOq40StNHyVoOErQA1f84SokfXrdcdrjorJ64Sa8waJ/N4gErXWAr2GkPn0JknXNy0QNfJZ82/BdKiw+rzLt8Dx08fbtYkGv00g6nccJ2rl9zueE/WZsGQrt/a8y0GB5u9mEvUgA1G/a4GoEVVLE/UgYNK/SwouuuojfX7P8W7qzaBooIn6TaCGyML7vuPxUPnyPqG7BfpNIWqdh+hOFpk7gx0naqXhYIKG7wM1/MATokbWrw8drzkqJh8Sas5HJPL7iEjUWgv0GkLm08ckXT+2QNRnAHX4BKZDOGGTqD8Bx08fn9YmGvwpgag/c5yold+feU7UZ8CSLRkzmEsh6iGB5p9nEvUQA1F/boGoEVVLE/UQYNJ/Tgouuuojff7C8W7q46BooIn6Y6CGyML7pePxUPnyJaG7BfpNIWqdh+hOFpk7Qx0naqXhUIKGXwI1/MoTokbWr68drzkqJl8Tas43JPL7hkjUWgv0GkLm0zCSrsMsEHUvoA7DYTpUxm0S9XBw/PTxbW2iwd8SiPo7x4la+f2d50TdC5Zs0bjBXApRjwg0H5lJ1CMMRD3SAlEjqpYm6hHApB9JCi666iN9/t7xbmpYUDTQRD0MqCGy8I5yPB4qX0YRulug3xSi1nmI7mSRuTPacaJWGo4maDgKqOEPnhA1sn796HjNUTH5kVBzxpDIbwyRqLUW6DWEzKexJF3HWiDq04E6jIPpUGb1ru9x4Pjp46faRIN/IhD1z44TtfL7Z8+J+nTc107W7voeH2g+IZOoxxuIeoIFokZULU3U44FJP4EUXHTVR/r8i+Pd1NigaKCJeixQQ2Thneh4PFS+TCR0t0C/KUSt8xDdySJzZ5LjRK00nETQcCJQw8meEDWyfv3qeM1RMfmVUHOmkMhvCpGotRboNYTMp6kkXadaIOrTgDpMw12hKbNJ1NPA8dPH9NpEg6cTiHqG40St/J7hOVGfhoOuSoO5FKKeGWg+K5OoZxqIepYFokZULU3UM4FJP4sUXHTVR/r8m+Pd1NSgaKCJeipQQ2Thne14PFS+zCZ0t0C/KUSt8xDdySJzZ47jRK00nEPQcDZQw7meEDWyfv3ueM1RMfmdUHPmkchvHpGotRboNYTMp/kkXedbIOqeQB0W4PrJcptEvQAcP30srE00eCGBqBc5TtTK70WeE3VP3NdOFQZzKUS9ONB8SSZRLzYQ9RILRI2oWpqoFwOTfgkpuOiqj/T5D8e7qflB0UAT9XyghsjCu9TxeKh8WUroboF+U4ha5yG6k0XmzjLHiVppuIyg4VKghss9IWpk/VrheM1RMVlBqDkrSeS3kkjUWgv0GkLm0yqSrqssEPWpQB1Ww3SIW3171mpw/PSxpjbR4DUEos4pdJuold/Kxhzsea0S9amwZIulDOZSiLpWoHluYc7a9Kz+QyZRq3/EJmpE1dJEXQuY9LmFnOCiqz7S57xCYAHKwS+4VUHRQBP1KuTXj8B45DseD5Uv+YX47hboN4WodR6iO1lk7hSQNQxld/y5lgsIGuYDNawN1lAf6D0AWb8KHa85KiaFhJpTBxjr9B6qTiGPqLUW6DWEzKcikq5FhXyiPgWoQ12YDnaJui44fvqoV0g0uF4h/rzFjhO18rvYc6I+xUOiLgk0r59J1CUGoq5vgahPARJ1CTDp63tC1EifGzjeTRUFRQNN1EVADZGFt9TxeKh8KSV0t6VgkkHbp/MQ3ckic6eh40StNGxI0LAUqOFmnhA1sn5t7njNUTHZnFBzGpHIrxGRqLUW6DWEzKfGJF0bWyDqFJCot4DpUGb1Wd9bgOOnjy0LiQZvSSDqrRwnauX3Vp4TdQpG1BXWnvXdJNB860yibmIg6q0tEHUKSNRNgEm/dSEnuOiqj/R5G8e7qcZB0UATdWOghsjCu63j8VD5si2huwX6TSFqnYfoThaZO00dJ2qlYVOChtsCNdzOE6JG1q/tHa85KibbE2pOMxL5NSMStdYCvYaQ+dScpGtzC0RdDSTqFjiiTtok6hbg+Oljh0KiwTsQiLql40St/G7pOVFX44g6YjCXQtStAs1bZxJ1KwNRt7ZA1NVAom4FTPrWhZzgoqs+0ucdHe+mmgdFA03UzYEaIgtvG8fjofKlDaG7BfpNIWqdh+hOFpk7bR0naqVhW4KGbYAa7uQJUSPr186O1xwVk50JNWcXEvntQiRqrQV6DSHzaVeSrrtaIOokkKh3g+kQtnqNejdw/PSxeyHR4N0JRB1ynKiV3yHPiToJI+qktWvUItA8nEnUwkDUYQtEnQQStQAmfbiQE1x01Uf6HHG8m9o1KBpoot4VqCGy8EYdj4fKlyihuwX6TSFqnYfoThaZO2WOE7XSsIygYRSoYbknRI2sXzHHa46KSYxQc+Ik8osTiVprgV5DyHxKkHRNWCDqKiBR7wHTIRKxSdR7gOOnjz0LiQbvSSDqvRwnauX3Xp4TdRWMqKuSBnMpRL13oPk+mUS9t4Go97FA1FVAot4bmPT7FHKCi676SJ/3dbybSgRFA03UCaCGyMK7n+Px+DNfCN0t0G8KUes8RHeyyNxp5zhRKw3bETTcD6jh/p4QNbJ+HeB4zVExOYBQcw4kkd+BRKLWWqDXEDKf2pN0bW+BqCuBRH0QTIdqq9eoDwLHTx8HFxINPphA1Ic4TtTK70M8J+pKGFELa9eoOwSaH5pJ1B0MRH2oBaKuBBJ1B2DSH1rICS666iN9Pszxbqp9UDTQRN0eqCGy8B7ueDxUvhxO6G6BflOIWuchupNF5k5Hx4laadiRoOHhQA2P8ISokfXrSMdrjorJkYSacxSJ/I4iErXWAr2GkPnUiaRrJwtEXQEk6qNhOkStEvXR4Pjp45hCosHHEIi6s+NErfzu7DlRV+Be2m6NqI8NND8uk6iPNRD1cRaIugJI1McCk/64Qk5w0VUf6fPxjndTnYKigSbqTkANkYW3i+PxUPnShdDdAv2mELXOQ3Qni8ydro4TtdKwK0HDLkANT/CEqJH1q5vjNUfFpBuh5pxIIr8TiUSttUCvIWQ+dSfp2t0CUfcAEvVJMB1iCZtEfRI4fvo4uZBo8MkEou7hOFErv3t4TtQ9cC9tjxnMpRB1RaB5ZSZRVxiIutICUfcAEnUFMOkrCznBhX+PCvS5yvFuqntQNNBE3R2oIbLwJh2Ph8qXJKG7BfpNIWqdh+hOFpk71Y4TtdKwmqBhEqhhyhOiRtavUxyvOSompxBqzqkk8juVSNRaC/QaQuZTT5KuPS0Q9clAoj4Nd4XGKlGfBo6fPk4vJBp8OoGoezlO1MrvXp4T9ckwoo5aI+ozAs3PzCTqMwxEfaYFoj4ZSNRnAJP+zEJOcNFVH+nzWY53Uz2DooEm6p5ADZGFt7fj8VD50pvQ3QL9phC1zkN0J4vMnbMdJ2ql4dkEDXsDNTzHE6JG1q9zHa85KibnEmrOeSTyO49I1FoL9BpC5tP5JF3Pt0DUJwGJ+gLcNeqQTaK+ABw/fVxYSDT4QgJR93GcqJXffTwn6pNgRJ0IGcylEPVFgeYXZxL1RQaivtgCUZ8EJOqLgEl/cSEnuOiqj/T5Ese7qfODooEm6vOBGiIL76WOx0Ply6WE7hboN4WodR6iO1lk7vR1nKiVhn0JGl4K1PAyT4gaWb8ud7zmqJhcTqg5V5DI7woiUWst0GsImU9XknS90gJRdwcS9VW4flLYJOqrwPHTx9WFRIOvJhB1P8eJWvndz3Oi7g4j6vKUwVwKUfcPNL8mk6j7G4j6GgtE3R1I1P2BSX9NISe46KqP9Plax7upK4OigSbqK4EaIgvvdY7HQ+XLdYTuFug3hah1HqI7WWTuDHCcqJWGAwgaXgfU8HpPiBpZv25wvOaomNxAqDk3ksjvRiJRay3QawiZTzeRdL3JAlGfCCTqm3H3PFp9e9bN4Pjp45ZCosG3EIj6VseJWvl9q+dEfSLuyWTW3p51W6D57ZlEfZuBqG+3QNQnAon6NmDS317ICS666iN9vsPxbuqmoGigifomoIbIwnun4/FQ+XInobsF+k0hap2H6E4WmTt3OU7USsO7CBreCdTwbk+IGlm/7nG85qiY3EOoOfeSyO9eIlFrLdBrCJlP95F0vc8CUXcDEvX9MB2qrV6jvh8cP308UEg0+AECUT/oOFErvx/0nKi74d6eZe0a9UOB5g9nEvVDBqJ+2AJRdwMS9UPApH+4kBNcdNVH+vyI493UfUHRQBP1fUANkYX3UcfjofLlUUJ3C/SbQtQ6D9GdLDJ3BjpO1ErDgQQNHwVq+JgnRI2sX487XnNUTB4n1JwnSOT3BJGotRboNYTMpydJuj5pgahPABL1UzAdUmU2ifopcPz08XQh0eCnCUT9jONErfx+xnOiPgFG1KFKg7kUon420Py5TKJ+1kDUz1kg6hOARP0sMOmfK+QEF131kT4/73g39WRQNNBE/SRQQ2ThfcHxeKh8eYHQ3QL9phC1zkN0J4vMnRcdJ2ql4YsEDV8AaviSJ0SNrF8vO15zVExeJtScV0jk9wqRqLUW6DWEzKdXSbq+aoGouwKJ+jWYDgmrd32/Bo6fPl4vJBr8OoGo33CcqJXfb3hO1F1xv6O2dtf3m4Hmb2US9ZsGon7LAlF3BRL1m8Ckf6uQE1x01Uf6/Lbj3dSrQdFAE/WrQA2Rhfcdx+Oh8uUdQncL9JtC1DoP0Z0sMncGOU7USsNBBA3fAWr4ridEjaxf7zlec1RM3iPUnPdJ5Pc+kai1Fug1hMynwSRdB1sg6i5Aov4Ad43a6rO+PwDHTx8fFhIN/pBA1B85TtTK7488J+ouuLu+rT3r++NA808yifpjA1F/YoGouwCJ+mNg0n9SyAkuuuojff7U8W5qcFA00EQ9GKghsvB+5ng8VL58RuhugX5TiFrnIbqTRebOEMeJWmk4hKDhZ0ANP/eEqJH16wvHa46KyReEmvMlify+JBK11gK9hpD5NJSk69BAV5t0eXxtrC/6+KqQaPBXBLr82nG6VH5/TaBLk62IBfI1YREDFx493q5qiPT7G0+aiaFAn4c53kwoX78hNBPDHW++VVyGk2tOthp+S2ocvv0PGofjSI3Dd4VEg78jNA4jHG8clN8jPGkcVCKPICxi4MKjx9tVDZF+j/SkcfgW6PP3jjcOyteRhMZhlOONg4rLKHLNyVbD0aTGYbSFa/jHAq/h/wBcQzabpR8KOc3Sj4VEg38kNEtjHG+WlN9jLDVLoewOMTqwFX3pcDQwRsh4j3V8A1WFbixhAx3n+AaqfB5H8Psn0qb3k+EWELQm7Jgh1vgYQtODXO8/O573SsOfCRqOBWo43hPQQu45ExzfJ1RMJhDq5S+kevkL8XKv1gK9hpD5NJG0htBaTgT6rOCowGCrOiYVBv8xN8cOPU0CBiA3zc7JQaP/a2GGA+gbQicBIzN5w89VtZ5ziV/BFaMoTTukfqvXfb5wVUpEyqpjZaHyimhZsjwSToZjoWS0LCWkEOFEVMqQqorGk/FwJBWOhatWY+370/fctORXMVodfP41+DxF/jlVjmmFfy0eW3d0TyNVL3CMw+laTA8W5IzCnLXv3lb/YVWGAejFOg2wWP+6ezuVmg5c+DMstXKh7A6B9Hlm2rlEPBIOxyLq38WTIRFNyvIWDicro6GqUEVVuDoRFYlUNByNVCWrKuU5K0QqlKqoSqTif9ll8/u+maTv+2YVEg2eRfi+7zfHv+9Tfv/mycXRGYGt6PPOJnHD7MK/W8T0zuDPCw+5f++QP6R9/jH3rz/Xt5vOkX/OleN3y7vp7x7upvOC/J6fuZvOs7Cb/g7cTecBi8l8T3ZTpM8LPN1NF5B204WFRIMXEnbTRY7vpsrvRZ7spvMDW9HnXUzaTRcX/nOHQ8cPWRTZts4B2tosOM8Sec4/5FgqxzI5lsuxQo6VaqNUnYcca1R+y8tHteTIlSNPjnw5CuSoLUehHHXkKJKjrhz15CiWo0SO+nI0kKNUjoZybCbH5nI0kqNxnb9ESo/5kuBKVfrcH4a5pYa5ZYa55Ya5FYa5lYa5VYa51Ya5NYY5NZE5V8swl2uYyzPM5RvmCgxztQ1zhYa5Ooa5IsNcXcNcPcNcsWGuxDBX3zDXwDBXaphraJjbzDC3uWGukWGucZ1/XhXND/7cL/gzlN2x1prNts4ugTWWIfEH0K5xrTiNZWYssvFZxWIpRL+/4ros+3OF9XfSy4Gx+MnlWET//h5+RXY+h9K/01+ZzbnCa18fWIW8mu9mLEKZ10RWb6LP5al/Xl9Zs2nnipuu1ajijIrFeNdiETdfn6q18T7H/u1aV+7Gniv279fN8oCxmOBOLMLrulaYvzE+x9Z93bFgw8+13muYtYGx+MWFWMTWa6co3DCfQxvgs6izIecKbZB+oggYi4n/bSzKNtBOUXd9Pkc32GdRb53niqY2Qj9RDIzFpP8qFrGNslOU/LvP8Y30WdT/l3MlUhutn2gAjMVk+7EIbYKdotTkc2iTfBYN/3kusYn6ic2AsfjVZiySm2yn2HxtnyNZ+CwapZ0rnMpKP9EYGIsplmIRyu4QwO8HBJBvRTqfZRuLqZ7EAshBAtjHi1+AsZjmSSyA/Z4A9itiMjAW0z2JBXBfE8C6LKYCYzGDFAv47YhA/YD5J5D6qfzdVo5mwfkaB9fENg+ukTUMrpk1CK6hlQTX1OoF19j+vFYTXHurHVyLyw+uzeUG1+rU92drgmt4q4JreiuCa3zLgmt+6jrAksybwXPwv3ZB9j1b1EHFIWL1seY4u9e+qWPLOkSD1cnR590KmAwsv7dKuzIIOq/Vx5o3hiVb0tpjzZsEmm+deaW2SZCE6XNb1+E/1hxRtfQV1ybApN8aHFzGAm9SB3+nUZM6nA4Gvds1AsZ6G5jP5VGbu902pN1u2zpEg7cl7HZNHd/tlN9NPd/tGsGSLVFlMJey220XaL595m63nWG3297CbtcIuNttB0z67UnBRVd9pM/NcNXT+Iv+bO3bKigaueAcRKJBc3C3gC5aKsbNCV2S637r3EH73cKT7hCZ4zuQ60Qou0OomOxAqBPNgRq29GC9tCSsl1bgDl33Kq3SbGVpgc6nHYD51Jqka+s6/yQ3dG3aHKjDjjAdotU2yXVHcPz00aYO0eA2BHJt6zi5Kr/bek6um8OSrTJsMJdCrjsFmu+cSa47Gch1Zwvkiqhamlx3Aib9zqTgoqs+0uddHO9IWwdFA/0M2dZADZGFd1fH46HyZVdCdwv0m/JrbJ2H6E4WmTu7OU5GSsPdCBruCtRwd0++lUDWr5DjNUfFJESoOYJEfoJI1FoL9BpC5lOYpGvYAlEj776PwHSIhW0SdQQcP31E6xANjhKIusxxolZ+l3lO1JvBki1ebTCXQtTlgeaxTKIuNxB1zAJRI6qWJupyYNLHSMFFV32kz3HHu6lwUDTQRB0GaogsvAnH46HyJUHoboF+U4ha5yG6k0Xmzh6OE7XScA+Chgmghnt6QtTI+rWX4zVHxWQvQs3Zm0R+exOJWmuBXkPIfNqHpOs+Foi6IVCHfWE6VFt9QOy+4PjpY786TIMJRN3OcaJWfrfznKgbwpJNpAzmUoh6/0DzAzKJen8DUR9ggagRVUsT9f7ApD+AFFx01Uf6fKDj3dQ+QdFAE/U+QA2Rhbe94/FQ+dKe0N0C/aYQtc5DdCeLzJ2DHCdqpeFBBA3bAzU82BOiRtavQxyvOSomhxBqTgcS+XUgErXWAr2GkPl0KEnXQy0QdSlQh8NgOkSsEvVh4Pjp4/A6RIMPJxB1R8eJWvnd0XOiLoUlW5U1oj4i0PzITKI+wkDUR1ogakTV0kR9BDDpjyQFF131kT4f5Xg3dWhQNNBEfShQQ2Th7eR4PFS+dCJ0t0C/KUSt8xDdySJz52jHiVppeDRBw05ADY/xhKiR9auz4zVHxaQzoeYcSyK/Y4lErbVAryFkPh1H0vU4C0SNfP798TAdKqw+7/J4cPz00aUO0eAuBKLu6jhRK7+7ek7UDWDJVm7teZcnBJp3yyTqEwxE3c0CUSOqlibqE4BJ340UXHTVR/p8ouPd1HFB0UAT9XFADZGFt7vj8VD50p3Q3QL9phC1zkN0J4vMnZMcJ2ql4UkEDbsDNTzZE6JG1q8ejtccFZMehJpTQSK/CiJRay3QawiZT5UkXSstEHV9oA5VMB3CCZtEXQWOnz6SdYgGJwlEXe04USu/qz0n6vqwZEvGDOZSiDoVaH5KJlGnDER9igWiRlQtTdQpYNKfQgouuuojfT7V8W6qMigaaKKuBGqILLw9HY+HypeehO4W6DeFqHUeojtZZO6c5jhRKw1PI2jYE6jh6Z4QNbJ+9XK85qiY9CLUnDNI5HcGkai1Fug1hMynM0m6nmmBqEuAOpwF06EybpOozwLHTx+96xAN7k0g6rMdJ2rl99meE3UJLNmicYO5FKI+J9D83EyiPsdA1OdaIGpE1dJEfQ4w6c8lBRdd9ZE+n+d4N3VmUDTQRH0mUENk4T3f8XiofDmf0N0C/aYQtc5DdCeLzJ0LHCdqpeEFBA3PB2p4oSdEjaxffRyvOSomfQg15yIS+V1EJGqtBXoNIfPpYpKuF1sg6mKgDpfAdCizetf3JeD46ePSOkSDLyUQdV/HiVr53ddzoi7Gfe1k7a7vywLNL88k6ssMRH25BaJGVC1N1JcBk/5yUnDRVR/p8xWOd1MXB0UDTdQXAzVEFt4rHY+HypcrCd0t0G8KUes8RHeyyNy5ynGiVhpeRdDwSqCGV3tC1Mj61c/xmqNi0o9Qc/qTyK8/kai1Fug1hMyna0i6XmOBqOsBdbgWd4WmzCZRXwuOnz6uq0M0+DoCUQ9wnKiV3wM8J+p6OOiqNJhLIerrA81vyCTq6w1EfYMFokZULU3U1wOT/gZScNFVH+nzjY53U9cERQNN1NcANUQW3pscj4fKl5sI3S3QbwpR6zxEd7LI3LnZcaJWGt5M0PAmoIa3eELUyPp1q+M1R8XkVkLNuY1EfrcRiVprgV5DyHy6naTr7RaIui5Qhztw/WS5TaK+Axw/fdxZh2jwnQSivstxolZ+3+U5UdfFfe1UYTCXQtR3B5rfk0nUdxuI+h4LRI2oWpqo7wYm/T2k4KKrPtLnex3vpm4PigaaqG8HaogsvPc5Hg+VL/cRulug3xSi1nmI7mSRuXO/40StNLyfoOF9QA0f8ISokfXrQcdrjorJg4Sa8xCJ/B4iErXWAr2GkPn0MEnXhy0QdRFQh0dgOsStvj3rEXD89PFoHaLBjxKIeqDjRK38Hug5URfBki1m7e1ZjwWaP55J1I8ZiPpxC0SNqFqaqB8DJv3jpOCiqz7S5ycc76YeDooGmqgfBmqILLxPOh4PlS9PErpboN8UotZ5iO5kkbnzlONErTR8iqDhk0ANn/aEqJH16xnHa46KyTOEmvMsifyeJRK11gK9hpD59BxJ1+csEHUdoA7Pe0rUz4Pjp48X6hANfoFA1C86TtTK7xc9J+o6HhL1S4HmL2cS9UsGon7ZAlEjqpYm6peASf+yJ0SN9PkVx7up54KigSbq54AaIgvvq47HQ+XLq4TuFug3hah1HqI7WWTuvOY4USsNXyNo+CpQw9c9IWpk/XrD8ZqjYvIGoea8SSK/N4lErbVAryFkPr1F0vUtC0RdCNThbZgOZVaf9f02OH76eKcO0eB3CEQ9yHGiVn4P8pyoC2HJVmHtWd/vBpq/l0nU7xqI+j0LRI2oWpqo3wUm/Xuk4KKrPtLn9x3vpt4KigaaqN8CaogsvIMdj4fKl8GE7hboN4WodR6iO1lk7nzgOFErDT8gaDgYqOGHnhA1sn595HjNUTH5iFBzPiaR38dEotZaoNcQMp8+Ien6iQWirg3U4VMcUSdtEvWn4Pjp47M6RIM/IxD1EMeJWvk9xHOiro2DrojBXApRfx5o/kUmUX9uIOovLBA1omppov4cmPRfkIKLrvpIn790vJv6JCgaaKL+BKghsvAOdTweKl+GErpboN8UotZ5iO5kkbnzleNErTT8iqDhUKCGX3tC1Mj69Y3jNUfF5BtCzRlGIr9hRKLWWqDXEDKfhpN0HW6BqAuAOnwL0yFs9Rr1t+D46eO7OkSDvyMQ9QjHiVr5PcJzoi6AJVvS2jXqkYHm32cS9UgDUX9vgagRVUsT9Uhg0n9PCi666iN9HuV4NzU8KBpooh4O1BBZeEc7Hg+VL6MJ3S3QbwpR6zxEd7LI3PnBcaJWGv5A0HA0UMMfPSFqZP0a43jNUTEZQ6g5Y0nkN5ZI1FoL9BpC5tM4kq7jLBB1PlCHn2A6RCI2ifoncPz08XMdosE/E4h6vONErfwe7zlR58OSrSppMJdC1BMCzX/JJOoJBqL+xQJRI6qWJuoJwKT/hRRcdNVH+jzR8W5qXFA00EQ9DqghsvBOcjweKl8mEbpboN8UotZ5iO5kkbkz2XGiVhpOJmg4Cajhr54QNbJ+TXG85qiYTCHUnKkk8ptKJGqtBXoNIfNpGknXaRaIOg+ow3SYDtVWr1FPB8dPHzPqEA2eQSDqmY4TtfJ7pudEnQdLNmHtGvWsQPPfMol6loGof7NA1IiqpYl6FjDpfyMFF131kT7PdrybmhYUDTRRTwNqiCy8cxyPh8qXOYTuFug3hah1HqI7WWTuzHWcqJWGcwkazgFq+LsnRI2sX/McrzkqJvMINWc+ifzmE4laa4FeQ8h8WkDSdYEFos4F6rAQpkPUKlEvBMdPH4vqEA1eRCDqxY4TtfJ7sedEnQtLtkprRL0k0PyPTKJeYiDqPywQNaJqaaJeAkz6P0jBRVd9pM9LHe+mFgRFA03UC4AaIgvvMsfjofJlGaG7BfpNIWqdh+hOFpk7yx0naqXhcoKGy4AarvCEqJH1a6XjNUfFZCWh5qwikd8qIlFrLdBrCJlPq0m6rrZA1LWAOqyB6RBL2CTqNeD4/e8oIhqsTo4+b60it4la+V2r6G99Qee1StS1YMkWjxnMpRB1bqB5XlHO2vScW/RPolb/iE3UiKqliToXmPR5RZzgwr9HBfqcX+R2N7U6KBpool4N3DmRhbfA8XiofCkowne3QL8pRK3zEN3JInOnNlnDUHbHn2u5NkHDAqCGhWAN9YHeA5D1q47jNUfFpA6h5hQBY53eQxUV8Yhaa4FeQ8h8qkvStW4Rn6hzgDrUg+lQaZWo64Hjp4/iIqLBxQSiLnGcqJXfJZ4TdQ7uRg5rRF0/0LxBJlHXNxB1AwtEnQMk6vrApG9QxAkuuuojfS51vJuqGxQNNFHXBWqILLwNHY+HypeGhO62IZhk0PbpPER3ssjc2cxxolYabkbQsCFQw809IWpk/WrkeM1RMWlEqDmNSeTXmEjUWgv0GkLm0xYkXbewQNRrCnHn2hKmQyxkk6i3BMdPH1sVEQ3eikDUTRwnauV3E8+JOn3BhbI6EiGDuRSi3jrQfJtMot7aQNTbWCBqRNXSRL01MOm3KeIEF131kT5v63g3tUVQNNBEvQVQQ2Thbep4PFS+NCV0t0C/KUSt8xDdySJzZzvHiVppuB1Bw6ZADbf3hKiR9auZ4zVHxaQZoeY0J5FfcyJRay3QawiZTy1IurawQNSrgUS9A66fFDaJegdw/PTRsohocEsCUbdynKiV3608J+rVMKIuTxnMpRB160DzHTOJurWBqHe0QNSrgUTdGpj0OxZxgouu+kif2zjeTbUIigaaqFsANUQW3raOx0PlS1tCdwv0m0LUOg/RnSwyd3ZynKiVhjsRNGwL1HBnT4gaWb92cbzmqJjsQqg5u5LIb1ciUWst0GsImU+7kXTdzQJRrwIS9e64ex6tvj1rd3D89BEqIhocIhC1cJyold/Cc6JeBSPqSmtvzwoHmkcyiTpsIOqIBaJeBSTqMDDpI0Wc4KKrPtLnqOPd1G5B0UAT9W5ADZGFt8zxeKh8KSN0t0C/KUSt8xDdySJzp9xxolYalhM0LANqGPOEqJH1K+54zVExiRNqToJEfgkiUWst0GsImU97kHTdwwJRrwQS9Z4wHaqtXqPeExw/fexVRDR4LwJR7+04USu/9/acqFfCiFpYu0a9T6D5vplEvY+BqPe1QNQrgUS9DzDp9y3iBBdd9ZE+7+d4N7VHUDTQRL0HUENk4W3neDxUvrQjdLdAvylErfMQ3ckic2d/x4laabg/QcN2QA0P8ISokfXrQMdrjorJgYSa055Efu2JRK21QK8hZD4dRNL1IAtEvQJI1AfDdEiV2STqg8Hx08chRUSDDyEQdQfHiVr53cFzol4BI+pQpcFcClEfGmh+WCZRH2og6sMsEPUKIFEfCkz6w4o4wUVXfaTPhzveTR0UFA00UR8E1BBZeDs6Hg+VLx0J3S3QbwpR6zxEd7LI3DnCcaJWGh5B0LAjUMMjPSFqZP06yvGao2JyFKHmdCKRXyciUWst0GsImU9Hk3Q92gJRLwcS9TEwHRJW7/o+Bhw/fXQuIhrcmUDUxzpO1MrvYz0n6uW431Fbu+v7uEDz4zOJ+jgDUR9vgaiXA4n6OGDSH1/ECS666iN97uJ4N3V0UDTQRH00UENk4e3qeDxUvnQldLdAvylErfMQ3ckic+cEx4laaXgCQcOuQA27eULUyPp1ouM1R8XkRELN6U4iv+5EotZaoNcQMp9OIul6kgWiXgYk6pNx16itPuv7ZHD89NGjiGhwDwJRVzhO1MrvCs+Jehnurm9rz/quDDSvyiTqSgNRV1kg6mVAoq4EJn1VESe46KqP9DnpeDd1UlA00ER9ElBDZOGtdjweKl+qCd0t0G8KUes8RHeyyNxJOU7USsMUQcNqoIaneELUyPp1quM1R8XkVELN6Ukiv55EotZaoNcQMp9OI+l6WqCrTbpcWoj1RR+nFxENPp1Al70cp0vldy8CXZpsRSyQXoRFDFx49Hi7qiHS7zM8aSZOA/p8puPNhPL1DEIzcZbjzbeKy1nkmpOthr1JjUPv/6Bx+IPUOJxdRDT4bELjcI7jjYPy+xxPGgeVyOcQFjFw4dHj7aqGSL/P9aRx6A30+TzHGwfl67mExuF8xxsHFZfzyTUnWw0vIDUOF1i4hr8EeA3/QuAastksXVjEaZb6FBEN7kNoli5yvFlSfl9kqVkKZXeICwJb0ZcOLwDGCBnvix3fQFWhu5iwgV7i+AaqfL6E4PelpE3vUsMtIGhN2DFDrPGLCE0Pcr33dTzvlYZ9CRpeDNTwMk9AC7nnXO74PqFicjmhXl5BqpdXEC/3ai3QawiZT1eS1hBayyvBvbU+0Gt9LhAIr0rzWcQj4XAsov5dPBkS0WRVOB4OJyujoapQRVW4OhEViVQ0HI1UJasq5TkrRCqUqqhKpOJ/ncsmEF5FAsKri4gGX00Awn6OA6Hyux8BCFWy1c6xc1P33EJOAcvUJNsFmJ7I/dO/mULvlP2AHUL6Ttl/HTvlemyuWo84fy6U/puwU65P9P7ABXgNqQNR571iE3NBSO2qRCgVSoRDFaFYVXmsMpEMV8YrUpFUWSQZ2VRd15fsSF2vJel67abr+v9Fvl5H0vW6/+P5OoCk64BAV7V55ubY6dSQm2f6Zn990FTcoPYMxgbXn9Ct9Xf8a61NXRyhjfA7WxtvdPxrLZWYNxK+nriJVBRuWkexDWV3iBtIWtxM0uJmohaqEDK0WNrK7ZrCWg/L/lu/q9ZjHy33l4P91gf6V7zAvBTAWAukfqqRksva+C1Ezkbqub58Sj8nY89CaZLeVN6yrm8hQtkd4kbSJnDLpn9fL9b3v6NsvoVQFFaTikL+RsZsY5q3bH2+tcjNAoOMRXpe3prWnGxqfNanOTI+t6VfW4hE5NpIxkQqmYqUxRLhSlEeKS9PRVOx8ng0mSqLViRj1SJaEQknqmOhlIhXV8fKIlWx8lQiWVWeSi/aIhmJRJOJyipRFi6vqAzFk5GKUCoai0jgT0ZiyWQkXl5eEYkky+OpeEJCukT/eKgsFkuEysORRJgVn9vS6Bq1Kazv25z0c/qyKdzu46ZwO3lTuJ2wKeS0dmNT+Nckjv35kJYUsujc4eimgIxFel7eAdgU1vfVJjI+dzq6KbDic+f/R1+53hV85Xq36SvXUHbHv17vQF6rzPZcwK9vKXdGaQ3RdzSzNMz2XPc4Hg+1YO4hbOz3kpqce4lff95N0uI+khb3kb8KZmiRC2740Pax1kPef+v3er8KZuV+PqnBR38VDMxLAYy1QOr3/8tXwXeRqP9+JvXfQ9oE7idSv7L5fkJRqOMI9W9M85atzw8UuVlg6pCo8gELXwUj4/MgkPrTi3a21M+Kz4OG+GzsPTXr++oXGZ+HSPXzIYAO6/t2CqnDwyQdHvYsHx4h6fCIZ/nwKEmHRzfgUpHLjZ3BXFgepzeNA31sGgeSm8aBhKaxrqWmMcu74qFF7jHguZBNY11SU/LYBjSN2d5dj4zP40W4Rg/ZNLLi8zhgc1zPIRrXwcXnCVj9jFNuxO4XfOuGvqKEzPEnHb+CoWL8JGG/eYq096rzru/ZJNna/jTQdmX3tjn/PFDn/zcNQtkd4uki9218Bm2jL4ur2PHLQMrnZwh+lzjyzed6jrUSM1ufnwVuIMC8EchYkIvk/y6n/F8sks/+Xy2Szzn+M0Ll83MEv58ndV7Pp3VejJ+lmjr5UHaHQHbyLzieT4r8XiDk04serKMXCX6/RFpHL61jHYWyO2g1pbT1/80caGjp/pts7XwZ2CQCYy0akr5JezlYQzV0zbPxFXbjiKDMVwiLvpEnlPmKB4s+21g09qQAvwqMBTD/ROMaSvei2L5axMlzeHF8DXkjXo6fu/drHiTU674k1Bs4Q8O+JtQbHiTUm74k1Fs4QyO+JtRbHiTU274k1Ds4Q6O+JtQ7HiTUIF8S6l2coWW+JtS7HiTUe74k1Ps4Q8t9Taj3PUiowb4k1Ac4Q2O+JtQHHiTUh74k1Ec4Q+O+JtRHHiTUx74k1Cc4QxO+JtQnHiTUp74k1Gc4Qyt8TajPPEioIb4k1Oc4Qyt9TajPPUioL3xJqC9xhlb5mlBfepBQQ5E2ehuoXPdt/MqXlf81ztBqXxPqaw9W/jc1K19SiQcrf5gvK384zFDh7U8Rh3uw8r/1JaG+wyWUt/fvfOdBQo3wJaFG4hLK2/t3RnqQUN/7klCjcAnl7f07ozxIqNG+JNQPuITy9v6dHzxIqB99SagxuITy9v6dMR4k1FhfEmocLqG8vX9nnAcJ9ZMvCfUzLqG8vX/nZw8SarwvCTUBl1De3r8zwYOE+sWXhJqISyhv79+Z6EFCTfIloSbjEsrb+3cme5BQv9ZcIwuJ1z24RjbFl5U/Fbfyvb0vZqoHK3+aLwk1HZdQSV8TaroHCTXDl4SaiUsob+/fmelBQs3yJaF+wyVUyteE+s2DhJqNtFG9S0Y/9Ewb2zwjaLlgB4APURUvehCw1z2w8U0PbHzbAxsHeWDjex7YONgDGz/0wMaPPbDxUw9sHOKBjV94YONQD2z8ygMbv/HAxmEe2PitBzaO8MDG7z2wcbQHNv7ogY1jPbDxJw9sHO+Bjb94YOMkD2z81QMbp3hg4zQPbJzhgY2zPLBxNsHGHKiNkViO4cCcOyx45w6FctNips85R+o9V47f5Zgnx3w5FsixUI5FciyWY4kcf8ixVI5lciyXY4UcK+VYJcdqOdbIkVNXnluOXDny5MiXo0CO2nIUylFHjiI56spRT45iOUrkqC9HAzlK5Wgox2ZybC5HIzkay7GFHFvKsZUcTeTYWo5t5NhWjqZybCfH9nI0k6O5HC3k2EGOlnK0kqO1HDvK0UaOtnLsJMfOcuxS9y8Ndq0biKLfCqJEqZMxN9cw97thbp5hbr5hboFhbqFhbpFhbrFhbolh7g/D3FLD3DLD3HLD3ArD3ErD3CrD3GrD3BrDnEqizLlahrlcw1yeYS7fMFdgmKttmCs0zNUxzBUZ5uoa5uoZ5ooNc/UNcw0Mc6WGuYaGuc0Mc5sb5hoZ5hob5rYwzG1pmNvKMNfEMLe1YW4bw9y2hrmmhrntDHPbG+aaGeaaG+ZaGOZ2MMy1NMy1Msy1NsztaJhrY5hra5jbyTC3s2FuF8OcKn7NctY+0C81Sb/459Bb5MQcUrORC9YPeDFRzPXEZ+DFSfG7Jz4DL3aKeZ74DLx4KuZ74jPwYqxY4InPwIu7YqEnPgMvFotFnvgMvPgsFnviM/Bitljiic/Ai+PiD098Bl5sF0s98Rl48V4s88Rn4M0AYrknPgNvLhArPPEZeLOCWOmJz8CbH8QqT3wG3kwhVnviM/DmDLHGE5+BN3sI9T20Dz4Dbx4RtTzxGXgzisj1xGfgzS0izxOfgTfLiHxPfAbefCMKPPEZeDOPqO2Jz8Cbg0ShJz4DbzYSdTzxGXjzkijyxGfgzVCiric+A2+uEvU88Rl4s5YoJvlcK8PnUHaHKKmbvX7VKXVUVagf4halxaVWmp0s+xnXvNE21vx4FmNjzY9nMTbW/HgWY2PNj2cxNtb8eBZjY82PZzE21vx4FmNjzY9nMTbW/HgWY2PNj2cxNtb8eBZjY82PZzE21vx4FmNjzY9nMTbW/HgWY6OPP57FnDdO07RBXffjXuqBjQ09sHEzD2zc3AMbG3lgY2MPbNzCAxu39MDGrTywsYkHNm7tgY3beGDjth7Y2NQDG7fzwMbtPbCxmQc2NvfAxhYe2LiDBza29MDGVh7Y2NoDG3f0wMY2HtjY1gMbd/LAxp09sHEX0r2SOVA7w2HTfY27Sdt3lyMkh5AjLEdEjqgcZXKUyxGTIy5HQo495NhTjr3k2FuOfeTYV/kvRzs59pfjADkOlKO9HAfJcbAch8jRQY5D5ThMjsPl6CjHEXIcKcdRcnSS42g5jpGjsxzHynGcHMfL0UWOrnKcIEc3OU6Uo7scJ8lxshw95KiQo1KOKjmSclTLkZLjFDlOlaOnHKfJcbocveQ4o+5fGpxZN2fthzDtZngw0+6GuZBhThjmwoa5iGEuapgrM8yVG+Zihrm4YS5hmNvDMLenYW4vw9zehrl9DHP7Gub2M8y1M8ztb5g7wDB3oGGuvWHuIMPcwYa5QwxzHQxzhxrmDjPMHW6Y62iYO8ow18kwd7Rh7hjDXGfD3LGGueMMc8cb5roY5roa5k4wzHUzzJ1omOtumDvJMHeyYa6HYa7CMFdpmKsyzCUNc9WGuZRh7hTD3KmGuZ6GudMMc6cb5noZ5s4wzKlC1yxn7UNvCvsFf2b7IwTgDe1iN9LGivYZ+UC43T3xGflAuJAnPiMfCCc88Rn5QLiwJz4jHwgX8cRn5APhop74jHwgXJknPiMfCFfuic/IB8LFPPEZ+UC4uCc+Ix8Il/DEZ+QD4fbwxGfkA+H29MRn5APh9vLEZ+QD4fb2xGfkA+H28cRn5APh9vXEZ+QD4fbzxGfkA+HaeeIz8oFw+3viM/KBcAd44jPygXAHeuIz8oFw7T3xGflAuIM88Rn5QLiDPfEZ+UC4QzzxGflAuA6e+Ix8INyhnviMfCDcYZ74jHwg3OGe+Ix8IFxHks+1MnwOZXeII+pmr59+IBzTziNhdsYFM4eAP7gUR3myboA/4BSdPPEZ+INQcbQnPgN/YCqO8cRn4A9WRWdPfAb+AFYc64nPwB/UiuM88Rn4A11xvCc+A3/wK7p44jPwB8Siqyc+A3+QLE7wxGfgD5xFN098Bv5gWpzoic/AH2CL7p74DPxBtzjJE5+BPxAXJ3viM/AH56KHJz4Df8AuKjzxGfiDeFHpic/AH9iLKk98Bv5gXyQ98Rn4AABR7YnPwAcKiJQnPgMfUCBO8cRn4AMPxKme+Ax8gILo6YnPwAcyiNM88Rn4gAdxuic+Ax8YIXp54jPwARTiDKDP6oVa8nR//v5YHbXSfM5Jm0vXIpTdUfNCLZCNNS/UwthY80ItjI01L9TC2FjzQi2MjTUv1MLYWPNCLYyNNS/UwthY80ItjI01L9TC2FjzQi2MjTUv1MLYWPNCLYyNNS/UwthY80ItjI01L9RCnLfmhVoMG2teqIWxseaFWhgba16ohbGx5oVaGBtrXqiFsbHmhVoYG2teqIWxseaFWhgba16ohbGx5oVaGBtrXqiFsbHmhVoYG2teqIWxseaFWhgbfXmhFvHcolaatvqcZ0ldestxthznyHGuHOfJcb4cF8hxoRx95LhIjovluESOS+XoK8dlclwuxxVyXCnHVXJcLUc/OfrLcY0c18pxnRwD5LhejhvkuFGOm+S4WY5b5LhVjtvkuF2OO+S4U4675LhbjnvkuFeO++S4X44H5HhQjofkeFiOR+R4VI6Bcjwmx+NyPCHHk3I8JcfTcjwjx7NyPCfH83K8IMeLcrxUN2ftl9koMTJfcNPbMHe2Ye4cw9y5hrnzDHPnG+YuMMxdaJjrY5i7yDB3sWHuEsPcpYa5voa5ywxzlxvmrjDMXWmYu8owd7Vhrp9hrr9h7hrD3LWGuesMcwMMc9cb5m4wzN1omLvJMHezYe5pw9wzhrlnDXPPGeaeN8y9YJh70TD3UjCXfuQGf+4X/OnSi53OIhV4tM/IFzv19sRn5IudzvbEZ+SLnc7xxGfki53O9cRn5IudzvPEZ+SLnc73xGfki50u8MRn5IudLvTEZ+SLnfp44jPyxU4XeeIz8sVOF3viM/LFTpd44jPyxU6XeuIz8sVOfT3xGflip8s88Rn5YqfLPfEZ+WKnKzzxGflipys98Rn5YqerPPEZ+WKnqz3xGflip36e+Ix8sVN/T3xGvtjpGk98Rr7Y6VpPfEa+2Ok6T3xGvthpgCc+I1/sdL0nPiNf7HSDJz4jX+x0oyc+I1/sdJMnPiNf7HQzyWf0TUG31M1ePxsvdroVZufaL3ZC23mbJ3G/3RM77/DEzjs9sfMuT+y82xM77/HEzns9sfM+T+y83xM7H/DEzgc9sfMhT+x82BM7H/HEzkc9sXOgJ3Y+5omdj3ti5xOe2PmkJ3Y+RbIzP1s7xdp/fTo7O9c62zPZ+px2tmcBvP6/FxO2djQWobW9fg6RM8HZnsfk359newEYiyZuxyKkvX4Rt37FS8BzAXNZpMciq+/EqlMJ9VKBkpy/v1OlxIac26FsDndzhvFjy//VrPR4v1z3rz9fyfxRoPoPEzLm1D9qllOTKFm/pdOHgpqR0JvoczjwWbwM1O8V4KJlxSIXHAukfq8azlUZqkqWicryZExUV5TFq6oSESHCFeUV5ZXheKq6skzEy+LynFUV4bj8nwtXVInqUEV5tdpE6uf83YynH+gG/VVggU2397W6RIPVydHnfR2YDCy/X6/7t8Cg8xptRRQTZStqwf7vF6/AGL0BTny9oavzNpd/2uwEnwZu8M8AN/hngZvKc3U5mwpoPRk7wTeD9fpWZif4pqETfIvZCQZGPgfsPt4ELsa30s4VTpZVhxLxyni4siISq4xGKhOJCnneciHiqWQ4lIyGU2WivLwqUZ1IiUiqsqy6orysIlGe/HP3TG7lSfeB1O9tT7uPt0ndxzt1iQa/Q+g+BjnefSi/B3nSfbwV2IruPpAxepfUfbz7H3QfoHtZ/zwb7B5Rgb33kvlwf0AsjN3He8F6fT+z+3jP0H28b+F7KB8SJduFvZ0n30PNLsJ1gu8BC+P7QGTYzpNOEKnfYE87wcGkTvCDukSDPyB0gh863gkqvz/0pBN8P7AV3QkiY/QRqRP86D/oBH8BbvCTgBs88ld1UzzsBD8O1usnmZ3gx4ZO8BMLnaAPiZLtwm7mSSc4BdgJfgwsjJ8AO8FmnnSCSP0+9bQT/JTUCX5Wl2jwZ4ROcIjjnaDye4gnneAnga3oThAZo89JneDn/0En+CNwgx8L3OCRz0sZ72En+EWwXr/M7AS/MHSCX1roBH1IlGwXdgtPOsHxwE7wC2Bh/BLYCbbwpBNE6jfU005wKKkT/Kou0eCvCJ3g1453gsrvrz3pBL8MbEV3gsgYfUPqBL/5DzrBb4Eb/AjgBo98EuZoDzvBYcF6HZ7ZCQ4zdILDLXSCPiRKtgu7pSed4GhgJzgMWBiHAzvBlp50gkj9vvW0E/yW1Al+V5do8HeETnCE452g8nuEJ53g8MBWdCeIjNFIUic48j/oBIcCN/ivgBs88h0HwzzsBL8P1uuozE7we0MnOMpCJ+hDomS7sFt70gkOA3aC3wML4yhgJ9jak04Qqd9oTzvB0aRO8Ie6RIN/IHSCPzreCSq/f/SkExwV2IruBJExGkPqBMf8B53gx8AN/lPgBo98e90XHnaCY4P1Oi6zExxr6ATHWegEfUiUbBd2G086wS+AneBYYGEcB+wE23jSCSL1+8nTTvAnUif4c12iwT8TOsHxjneCyu/xnnSC4wJb0Z0gMkYTSJ3ghP+gExwE3ODfA27wyPeSf+hhJ/hLsF4nZnaCvxg6wYkWOkEfEiXbhb2TJ53gh8BO8BdgYZwI7AR38qQTROo3ydNOcBKpE5xcl2jwZEIn+KvjnaDy+1dPOsGJga3oThAZoymkTnCKzU4w2JRfB27KbwK7t7eLcE3MHA87wanBep2W2QlONXSC05idoEeJku3C3sX1TtCQ0Nl2glOBhXEasBPcxZNOEKnfdE87wemkTnBGXaLBMwid4EzHO0Hl90xPOsFpga3oThAZo1mkTnBW0AmmH2h9fwPYHonF//yTaedsgJ3lFaFEdXl5jGnnHICdlZXlsYrqeBnTzrmIuFeVV6cisTDTzt8BdlaURVOpskgF0855ADvLRKi6LBxLMe2cD7AzURkqK4/Hq5h2LgDYKVLxSDJRUcm0cyEi7pXVsr0TCWVbo5y1YS79K/70Gz/SbwdO/5FY+qMD0h8opT6/n/b5t7TPTxdt+ue30s7zStrn2Wmf56R9npv2+fe0z/PSPs9P+7wg7fPC4PMi+ediOZbI8YccS+VYJsdyOVbU/ec3Juj+aQVwv9dQuFKec5Ucq+VYE9B+ei+g/nudnLXnVhnmVhvm1gRz6Qf6ssQKYD+1EnCuP98JlgqJVUC7diPBaF5GLLLxWcViNUS/v+K6BgjzSP3Ya3w5YY3n1JN2ypErR169nH+scfXfM9duLcNcrmEurx5/jS9Hcm093BqvVQ9nV8iTNZ5bD7fG8+rhciTk0RpfRljj+VLLAjlqy1FoWOP5hrVbYJirbZgrtLDGlwHXeD5wjRcA13jYkzVeG7jGC4FrPOzRGl9KWON1pJZFctSVo55hjdcxrN0iw1xdw1w9C2t8KXCN1wGu8SLgGo96ssbrAtd4PeAaj3q0xv8grPFiqWWJHPXlaGBY48WGtVtimKtvmGtgYY3/AVzjxcA1XgJc4+WerPH6wDXeALjGyz1a40sIa7xUatlQjs3k2NywxksNa7ehYW4zw9zmFtb4EuAaLwWu8YbANR73ZI1vBlzjmwPXeNyjNb6YsMYbSS0by7GFHFsa1ngjw9ptbJjbwjC3pYU1vhi4xhsB13hj4Brfw5M1vgVwjW8JXON7eLTGFxHW+FZSyyZybC3HNoY1vpVh7TYxzG1tmNvGwhpfBFzjWwHXeBPgGt/LkzW+NXCNbwNc43t5tMZr4c4VahacZ1upZVM5tpNjezmaydFcjhZy7CBHSzlaydFajh3laCNHWzl2kmNnOXaRY1c5dpNjdzlCcgg5wnJE5IjKUSZHuRwxOeJyJOTYQ449DTVlW0OtaGqY284wt71hrplhrrlhroVhbgfDXEvDXCvDXGvD3I6GuTaGubaGuZ0Mczsb5nYxzO1qmNvNMLe7YS5kmBOGubBhLmKYixrmygxz5Ya5mGEubphLGOb2MMztaWEPSl+z2db6bYF7UFPgHrSPpR92ZLsHbQfcg7bP/lz/+5FIM2As9nU5FtH/2SmaZ+dzKM1n0SKbc4XX0k/sAIzFfm7GIpRhp2i5iT6Xp/7hs2i1aeeKG/QTrYGxaOdaLOJGO8WOG+9z7F98Fm029lyxf9VPtAXGYn93YhFeh51ip43xObZOn8XOG36uqvXoJ3YBxuIAF2IRW6+dYtcN8zm0AT6L3TbkXKEN0k/sDozFgf9tLMo20E4RWp/P0Q32WYh1niua2gj9RBgYi/b/VSxiG2WniPy7z/GN9FlE/+VcidRG6yfKgLE4yH4sQptgpyg3+RzaJJ9F7J/nEpuon4gDY3GwzVgkN9lOkVjb50gWPos90s4VTmWln9gTGItDPHm0FvD7AQHkW5HOZ9nGooMnsQBykAD28eIAYCwO9SQWwH5PAPsVcRAwFod5EgvgviaAdVl0AMbicEvXCkPZHQK4fgUw/wRLv9wM/bKNM7LH2At2rTUSsvnQHJzdaz80Z+96RIPVydHn3QeYDCy/96n3t8Cg84bW9Zg/tA97wpItyXgEXmDl2jco7Btovl9wEf5/V0X3DZIwfW4/w5VSdNVHVC19dXNf5FUccHAZC3xfQ+HI+kpiPT92uz2QV4lgPpdHbe527Ui73f71iAbvT9jtDnB8t1N+H+D5brcHLNkSVQZzKbvdgYHm7TN3uwMNu117C7vdHsDd7kDkdQ9ScNFVH+nzQbjqKXJy8DvxPkHRyAXnIBINDgZ3C+iipWJ8MKFLct1vnTtovw/xpDtE5ngHcp0IZXcIFZMOhDpxMFDDQz1YL4cS1sth4A5d9yqHpdnK0gKdTx2A+XQ4SdfD6/2T3NC1KQHUoSNMh6jVh5t3BMdPH0fUIxp8BIFcj3ScXJXfR3pOrglYslWGDeZSyPWoQPNOmeR6lIFcO1kgV0TV0uR6FDDpO5GCi676SJ+PdrwjPTwoGqhfk5p2/WzPhSy8xzgeD5UvxxC6W6DflLdd6DxEd7LI3OnsOBkpDTsTNDwGqOGxnnwrgaxfxzlec1RMjiPUnONJ5Hc8kai1Fug1hMynLiRdu1ggauSd7l1hOsTCNom6Kzh++jihHtHgEwhE3c1xolZ+d/OcqOOwZItXG8ylEPWJgebdM4n6RANRd7dA1IiqpYn6RGDSdycFF131kT6f5Hg31SUoGmii7gLUEFl4T3Y8HipfTiZ0t0C/KUSt8xDdySJzp4fjRK007EHQ8GSghhWeEDWyflU6XnNUTCoJNaeKRH5VRKLWWqDXEDKfkiRdkxaIOgbUoRqmQ7WwSdTV4PjpI1WPaHCKQNSnOE7Uyu9TPCfqGCzZRMpgLoWoTw0075lJ1KcaiLqnBaJGVC1N1KcCk74nKbjoqo/0+TTHu6lkUDTQRJ0EaogsvKc7Hg+VL6cTulug3xSi1nmI7mSRudPLcaJWGvYiaHg6UMMzPCFqZP060/Gao2JyJqHmnEUiv7OIRK21QK8hZD71Juna2wJRlwN1OBumQ8QqUZ8Njp8+zqlHNPgcAlGf6zhRK7/P9Zyoy2HJVmWNqM8LND8/k6jPMxD1+RaIGlG1NFGfB0z680nBRVd9pM8XON5N9Q6KBpqoewM1RBbeCx2Ph8qXCwndLdBvClHrPER3ssjc6eM4USsN+xA0vBCo4UWeEDWyfl3seM1RMbmYUHMuIZHfJUSi1lqg1xAyny4l6XqpBaJGPmu+L0yHCqvPu+wLjp8+LqtHNPgyAlFf7jhRK78v95yoy2DJVm7teZdXBJpfmUnUVxiI+koLRI2oWpqorwAm/ZWk4KKrPtLnqxzvpi4NigaaqC8FaogsvFc7Hg+VL1cTulug3xSi1nmI7mSRudPPcaJWGvYjaHg1UMP+nhA1sn5d43jNUTG5hlBzriWR37VEotZaoNcQMp+uI+l6nQWijgJ1GADTIZywSdQDwPHTx/X1iAZfTyDqGxwnauX3DZ4TdRSWbMmYwVwKUd8YaH5TJlHfaCDqmywQNaJqaaK+EZj0N5GCi676SJ9vdrybui4oGmiivg6oIbLw3uJ4PFS+3ELoboF+U4ha5yG6k0Xmzq2OE7XS8FaChrcANbzNE6JG1q/bHa85Kia3E2rOHSTyu4NI1FoL9BpC5tOdJF3vtEDUEaAOd8F0qIzbJOq7wPHTx931iAbfTSDqexwnauX3PZ4TdQSWbNG4wVwKUd8baH5fJlHfayDq+ywQNaJqaaK+F5j095GCi676SJ/vd7ybujMoGmiivhOoIbLwPuB4PFS+PEDoboF+U4ha5yG6k0XmzoOOE7XS8EGChg8ANXzIE6JG1q+HHa85KiYPE2rOIyTye4RI1FoL9BpC5tOjJF0ftUDUYaAOA2E6lFm963sgOH76eKwe0eDHCET9uONErfx+3HOiDuO+drJ21/cTgeZPZhL1EwaiftICUSOqlibqJ4BJ/yQpuOiqj/T5Kce7qUeDooEm6keBGiIL79OOx0Ply9OE7hboN4WodR6iO1lk7jzjOFErDZ8haPg0UMNnPSFqZP16zvGao2LyHKHmPE8iv+eJRK21QK8hZD69QNL1BQtELYA6vIi7QlNmk6hfBMdPHy/VIxr8EoGoX3acqJXfL3tO1AIHXZUGcylE/Uqg+auZRP2KgahftUDUiKqlifoVYNK/SgouuuojfX7N8W7qhaBooIn6BaCGyML7uuPxUPnyOqG7BfpNIWqdh+hOFpk7bzhO1ErDNwgavg7U8E1PiBpZv95yvOaomLxFqDlvk8jvbSJRay3QawiZT++QdH3HAlGHgDoMwvWT5TaJehA4fvp4tx7R4HcJRP2e40St/H7Pc6IO4b52qjCYSyHq9wPNB2cS9fsGoh5sgagRVUsT9fvApB9MCi666iN9/sDxbuqdoGigifodoIbIwvuh4/FQ+fIhobsF+k0hap2H6E4WmTsfOU7USsOPCBp+CNTwY0+IGlm/PnG85qiYfEKoOZ+SyO9TIlFrLdBrCJlPn5F0/cwCUe8O1GEITIe41bdnDQHHTx+f1yMa/DmBqL9wnKiV3194TtS7w5ItZu3tWV8Gmg/NJOovDUQ91AJRI6qWJuovgUk/lBRcdNVH+vyV493UZ0HRQBP1Z0ANkYX3a8fjofLla0J3C/SbQtQ6D9GdLDJ3vnGcqJWG3xA0/Bqo4TBPiBpZv4Y7XnNUTIYTas63JPL7lkjUWgv0GkLm03ckXb+zQNS7AXUY4SlRjwDHTx8j6xENHkkg6u8dJ2rl9/eeE/VuHhL1qEDz0ZlEPcpA1KMtEDWiammiHgVM+tGeEDXS5x8c76a+C4oGmqi/A2qILLw/Oh4PlS8/ErpboN8UotZ5iO5kkbkzxnGiVhqOIWj4I1DDsZ4QNbJ+jXO85qiYjCPUnJ9I5PcTkai1Fug1hMynn0m6/myBqHcF6jAepkOZ1Wd9jwfHTx8T6hENnkAg6l8cJ2rl9y+eE/WusGSrsPas74mB5pMyiXqigagnWSBqRNXSRD0RmPSTSMFFV32kz5Md76Z+DooGmqh/BmqILLy/Oh4PlS+/ErpboN8UotZ5iO5kkbkzxXGiVhpOIWj4K1DDqZ4QNbJ+TXO85qiYTCPUnOkk8ptOJGqtBXoNIfNpBknXGRaIehegDjNxRJ20SdQzwfHTx6x6RINnEYj6N8eJWvn9m+dEvQsOuiIGcylEPTvQfE4mUc82EPUcC0SNqFqaqGcDk34OKbjoqo/0ea7j3dSMoGigiXoGUENk4f3d8XiofPmd0N0C/aYQtc5DdCeLzJ15jhO10nAeQcPfgRrO94SokfVrgeM1R8VkAaHmLCSR30IiUWst0GsImU+LSLouskDUOwN1WAzTIWz1GvVicPz0saQe0eAlBKL+w3GiVn7/4TlR7wxLtqS1a9RLA82XZRL1UgNRL7NA1IiqpYl6KTDpl5GCi676SJ+XO95NLQqKBpqoFwE1RBbeFY7HQ+XLCkJ3C/SbQtQ6D9GdLDJ3VjpO1ErDlQQNVwA1XOUJUSPr12rHa46KyWpCzVlDIr81RKLWWqDXEDKfcoo5uqrzsol6J6AOtWA6RCI2iboWOH7/i1Ux0eDcYvx584rdJmrld17x3wKDzmuVqHeCFeGqpMFcClHnB5oXFOesTc/5xf8kavWP2ES9E5Co84FJX1DMCS666iN9rl3sdjeVExQNNFHnADVEFt5Cx+Oh8qWwGN/dAv2mELXOQ3Qni8ydOmQNQ9kdf67lOgQNC4EaFoE11Ad6D0DWr7qO1xwVk7qEmlOPRH71inlErbVAryFkPhWTdC22QNRtgURdAtOh2uo16hJw/PRRv5hocH0CUTdwnKiV3w08J+q2MKIW1q5RlwaaN8wk6lIDUTe0QNRtgURdCkz6hsWc4KKrPtLnzRzvpoqDooEm6mKghsjCu7nj8VD5sjmhuwX6TSFqnYfoThaZO40cJ2qlYSOChpsDNWzsCVEj69cWjtccFZMtCDVnSxL5bUkkaq0Feg0h82krkq5bWSDqNkCibgLTIWqVqJuA46ePrYuJBm9NIOptHCdq5fc2nhN1GxhRV1oj6m0DzZtmEvW2BqJuaoGo2wCJeltg0jct5gQXXfWRPm/neDe1VVA00ES9FVBDZOHd3vF4qHzZntDdAv2mELXOQ3Qni8ydZo4TtdKwGUHD7YEaNveEqJH1q4XjNUfFpAWh5uxAIr8diESttUCvIWQ+tSTp2tICUe8IJOpWMB1iCZtE3QocP320LiYa3JpA1Ds6TtTK7x09J+odYUQdjxnMpRB1m0DztplE3cZA1G0tEPWOQKJuA0z6tsWc4MK/RwX6vJPj3VTLoGigibolUENk4d3Z8XiofNmZ0N0C/aYQtc5DdCeLzJ1dHCdqpeEuBA13Bmq4qydEjaxfuzlec1RMdiPUnN1J5Lc7kai1Fug1hMynEEnXkAWibg0kaoG7QmOVqAU4fvoIFxMNDhOIOuI4USu/I54TdWsYUUetEXU00Lwsk6ijBqIus0DUrYFEHQUmfVkxJ7joqo/0udzxbioUFA00UYeAGiILb8zxeKh8iRG6W6DfFKLWeYjuZJG5E3ecqJWGcYKGMaCGCU+IGlm/9nC85qiY7EGoOXuSyG9PIlFrLdBrCJlPe5F03csCUbcCEvXeuGvUIZtEvTc4fvrYp5ho8D4Eot7XcaJWfu/rOVG3ghF1ImQwl0LU+wWat8sk6v0MRN3OAlG3AhL1fsCkb1fMCS666iN93t/xbmqvoGigiXovoIbIwnuA4/FQ+XIAobsF+k0hap2H6E4WmTsHOk7USsMDCRoeANSwvSdEjaxfBzlec1RMDiLUnINJ5Hcwkai1Fug1hMynQ0i6HmKBqFsCiboDrp8UNom6Azh++ji0mGjwoQSiPsxxolZ+H+Y5UbeEEXV5ymAuhagPDzTvmEnUhxuIuqMFom4JJOrDgUnfsZgTXHTVR/p8hOPd1CFB0UAT9SFADZGF90jH46Hy5UhCdwv0m0LUOg/RnSwyd45ynKiVhkcRNDwSqGEnT4gaWb+OdrzmqJgcTag5x5DI7xgiUWst0GsImU+dSbp2tkDUOwCJ+ljcPY9W3551LDh++jiumGjwcQSiPt5xolZ+H+85Ue+AezKZtbdndQk075pJ1F0MRN3VAlHvACTqLsCk71rMCS666iN9PsHxbqpzUDTQRN0ZqCGy8HZzPB4qX7oRulug3xSi1nmI7mSRuXOi40StNDyRoGE3oIbdPSFqZP06yfGao2JyEqHmnEwiv5OJRK21QK8hZD71IOnawwJRtwASdQVMh2qr16grwPHTR2Ux0eBKAlFXOU7Uyu8qz4m6Be7tWdauUScDzasziTppIOpqC0TdAkjUSWDSVxdzgouu+kifU453Uz2CooEm6h5ADZGF9xTH46Hy5RRCdwv0m0LUOg/RnSwyd051nKiVhqcSNDwFqGFPT4gaWb9Oc7zmqJicRqg5p5PI73QiUWst0GsImU+9SLr2skDUzYFEfQZMh1SZTaI+Axw/fZxZTDT4TAJRn+U4USu/z/KcqJvDiDpUaTCXQtS9A83PziTq3gaiPtsCUTcHEnVvYNKfXcwJLrrqI30+x/FuqldQNNBE3QuoIbLwnut4PFS+nEvoboF+U4ha5yG6k0XmznmOE7XS8DyChucCNTzfE6JG1q8LHK85KiYXEGrOhSTyu5BI1FoL9BpC5lMfkq59LBB1MyBRXwTTIWH1ru+LwPHTx8XFRIMvJhD1JY4TtfL7Es+Juhnud9TW7vq+NNC8byZRX2og6r4WiLoZkKgvBSZ932JOcNFVH+nzZY53U32CooEm6j5ADZGF93LH46Hy5XJCdwv0m0LUOg/RnSwyd65wnKiVhlcQNLwcqOGVnhA1sn5d5XjNUTG5ilBzriaR39VEotZaoNcQMp/6kXTtZ4GotwcSdX/cNWqrz/ruD46fPq4pJhp8DYGor3WcqJXf13pO1Nvj7vq29qzv6wLNB2QS9XUGoh5ggai3BxL1dcCkH1DMCS666iN9vt7xbqpfUDTQRN0PqCGy8N7geDxUvtxA6G6BflOIWuchupNF5s6NjhO10vBGgoY3ADW8yROiRtavmx2vOSomNxNqzi0k8ruFSNRaC/QaQubTrSRdbw10tUmX29XD+qKP24qJBt9GoMvbHadL5fftBLo02YpYILcTFjFw4dHj7aqGSL/v8KSZuBXo852ONxPK1zsIzcRdjjffKi53kWtOthreTWoc7v4PGoempMbhnmKiwfcQGod7HW8clN/3etI4qES+l7CIgQuPHm9XNUT6fZ8njcPdQJ/vd7xxUL7eR2gcHnC8cVBxeYBcc7LV8EFS4/CghWv42wKv4T8EXEM2m6WHijnN0sPFRIMfJjRLjzjeLCm/H7HULIWyO8SDga3oS4cPAmOEjPejjm+gqtA9SthABzq+gSqfBxL8foy06T1muAUErQk7Zog1/gih6UGu98cdz3ul4eMEDR8FaviEJ6CF3HOedHyfUDF5klAvnyLVy6eIl3u1Fug1hMynp0lrCK3l00CftW3N0mzds95f+6b6vEfa50Ta53ja51ja5/K0z2Vpn6NpnyNpn8Npn0Xa51Da593TPu+W9nnXtM+7pH3eOe3zTmmf26Z9bpP2ece0z63TPrdK+9wy7fMOaZ9bpH1unva5Wdrn7dM+b5f2uWna523TPtdL+1w37XNR2uc6aZ8L0z7XTvtckPY5P+1zXtrn3LTPtdI+56R9XlP378+r0z6vSvu8Mu3zNmn/v1unfW6S9nmrtM9bpn3eIu1z47TPjdI+b572ebO0zw3TPpemfW6Q9rl+2ueStM/FwWe9cJ+Ra+xZOZ6T43k5XpDjRTlekuNlOV6R41U5XpPjdTnekONNOd6S42053pFjkBzvyvGeHO/LMViOD+T4UI6P5PhYjk/k+FSOz+QYIsfncnwhx5dyDJXjKzm+luMbOYbJMVyOb+X4To4RcoyU43s5RskxWo4f5PgxqONFOX8zo/r7GFl8Vwefx6Z9Hpcb5ELav51c+Pd//zX4PEaed6wc44r/ugJl6171caS6nIO1M5yuxU/Bdws/FweC6E1W/YdVGQag70sfB9gg/rovPZX6CbjZ/GypSQ1ldwikz+PTziXikXA4FlH/Lp4MiWiyKhwPh5OV0VBVqKIqXJ2IikQqGo5GqpJVlfKcFSIVSlVUJVLxv+yy+U3meNI3mROKiQZPIHyT+Yvj32Qqv38p/ltg0Hkp30b8HNiKPu9EEhFNLP7nDoeOH7Iosm0dA7S1WXCeSfKck+X4VY4pckyVY5oc0+WYIcdMOWbJ8Zscs+WYI8dcOX6XY54c8+VYIMdCORbJsViOJXL8IcdSOZbJsVyOFXKsVJuvHKvlWKPWTMlfIqXHfFJxWqcc/DnZMPerYW6KYW6qYW6aYW66YW6GYW6mYW6WYe43w9xsw9wcw9xcw9zvhrl5hrn5hrkFhrmFhrlFhrnFhrklhrk/DHNLDXPLDHPLDXMrDHMrDXOrDHOrDXNrDHMq/zK/oc4P/twv+DOU3bHWms22zk6CNZYhMRlo14mtOY1lZiyy8VnF4leIfn/FdUr25woH+ompwFh0dzkW0f/ZKaZl53MozWcxPZtzhdfST8wAxuIkN2MRyrBTzNxEn8tT//BZzNq0c8UN+onfgLE42bVYxI12itkb73PsX3wWczb2XLF/1U/MBcaihzuxCK/DTvH7xvgcW6fPYt6Gn6tqPfqJ+cBYVLgQi9h67RQLNszn0Ab4LBZuyLlCG6SfWASMReV/G4uyDbRTLF6fz9EN9lksWee5oqmN0E/8AYxF1X8Vi9hG2SmW/rvP8Y30WSz7l3MlUhutn1gOjEXSfixCm2CnWGHyObRJPouV/zyX2ET9xCpgLKptxiK5yXaK1Wv7HMnCZ7Em7VzhVFb6CfWdAyoWKUuxCGV3COD3AwLItyKdz7KNxSmexALIQQLYx4sKYCxO9SQWwH5PAPsVkQTGoqcnsQDuawJYl8UpwFicRooF+gYK4PoVwPwTSP1U/u4iRzMtYslf1yhWB9fIVgbXzJYH19CWBtfUlgTX2BYF19wWBNfg5gXX5OYG1+hmB9fsZgXX8GYE1/SmBdf4pgTX/NR1AHVdIfNA33mM7HtqlaDiELH6iFmc3Wvf1JFbQjRYnRx93jxgMrD8ziv5W2DQea0+YjYHlmxJa4+YzQ80LwhuDPjfldr8IAnT5wpK+I+YRVQtfcU1H5j0BeDgMhZ4fgn+TqP8Ek4Hg97t1gC/cakN87k8anO3q03a7QpLiAYXEna7Oo7vdsrvOp7vdmtgt8YlqgzmUna7okDzupm7XZFht6trYbdDVC292xUBk75uCSe46KqP9LleCbCLycHvxHlB0cgF5yASDYrB3QK6aKkYFxO6JNf91rmD9rvEk+4QmeP1yXUilN0hVEzqE+pEMVDDBh6slwaE9VIK7tB1r1KaZitLC3Q+1QfmU0OSrg1L/klu6Nq0Gkium8F0iFbbJNfNwPHTx+YlRIM3J5BrI8fJVfndyHNyXQ0j18qwwVwKuTYONN8ik1wbG8h1CwvkuhpIro2BSb9FCSe46KqP9HlLxzvShkHRQD/PryFQQ2Th3crxeKh82YrQ3QL9pvwaW+chupNF5k4Tx8lIadiEoOFWQA239uRbCWT92sbxmqNisg2h5mxLIr9tiUSttUCvIWQ+NSXp2tQCUSPvvt8OpkMsbPX1ZySi3r6EaPD2BKJu5jhRK7+beU7Uq2BEHa82mEsh6uaB5i0yibq5gahbWCDqVUCibg5M+hYlnOCiqz7S5x0c76aaBkUDTdRNgRoiC29Lx+Oh8qUlobsF+k0hap2H6E4WmTutHCdqpWErgoYtgRq29oSokfVrR8drjorJjoSa04ZEfm2IRK21QK8hZD61Jena1gJRrwQS9U4wHaqtPiB2J3D89LFzCdHgnQlEvYvjRK383sVzol4JI2qRMphLIepdA813yyTqXQ1EvZsFol4JJOpdgUm/WwknuOiqj/R5d8e7qbZB0UATdVughsjCG3I8HipfQoTuFug3hah1HqI7WWTuCMeJWmkoCBqGgBqGPSFqZP2KOF5zVEwihJoTJZFflEjUWgv0GkLmUxlJ1zILRL0CSNTlMB0iVom6HBw/fcRKiAbHCEQdd5yold9xz4l6BYyoq6wRdSLQfI9Mok4YiHoPC0S9AkjUCWDS71HCCS666iN93tPxbqosKBpooi4DaogsvHs5Hg+VL3sRulug3xSi1nmI7mSRubO340StNNyboOFeQA338YSokfVrX8drjorJvoSasx+J/PYjErXWAr2GkPnUjqRrOwtEjXz+/f4wHSqsPu9yf3D89HFACdHgAwhEfaDjRK38PtBzol4OI+pya8+7bB9oflAmUbc3EPVBFoh6OZCo2wOT/qASTnDRVR/p88GOd1PtgqKBJup2QA2RhfcQx+Oh8uUQQncL9JtC1DoP0Z0sMnc6OE7USsMOBA0PAWp4qCdEjaxfhzlec1RMDiPUnMNJ5Hc4kai1Fug1hMynjiRdO1og6mVAoj4CpkM4YZOojwDHTx9HlhANPpJA1Ec5TtTK76M8J+plMKJOxgzmUoi6U6D50ZlE3clA1EdbIOplQKLuBEz6o0s4wUVXfaTPxzjeTXUMigaaqDsCNUQW3s6Ox0PlS2dCdwv0m0LUOg/RnSwyd451nKiVhscSNOwM1PA4T4gaWb+Od7zmqJgcT6g5XUjk14VI1FoL9BpC5lNXkq5dLRD1UiBRnwDToTJuk6hPAMdPH91KiAZ3IxD1iY4TtfL7RM+JeimMqKNxg7kUou4eaH5SJlF3NxD1SRaIeimQqLsDk/6kEk5w0VUf6fPJjndTXYOigSbqrkANkYW3h+PxUPnSg9DdAv2mELXOQ3Qni8ydCseJWmlYQdCwB1DDSk+IGlm/qhyvOSomVYSakySRX5JI1FoL9BpC5lM1SddqC0T9B5CoUzAdyqze9Z0Cx08fp5QQDT6FQNSnOk7Uyu9TPSfqP3Bvz7J213fPQPPTMom6p4GoT7NA1H8AibonMOlPK+EEF131kT6f7ng3VR0UDTRRVwM1RBbeXo7HQ+VLL0J3C/SbQtQ6D9GdLDJ3znCcqJWGZxA07AXU8ExPiBpZv85yvOaomJxFqDm9SeTXm0jUWgv0GkLm09kkXc+2QNRLgER9Du4KTZlNoj4HHD99nFtCNPhcAlGf5zhRK7/P85yol+CIutJgLoWozw80vyCTqM83EPUFFoh6CZCozwcm/QUlnOCiqz7S5wsd76bODooGmqjPBmqILLx9HI+Hypc+hO4W6DeFqHUeojtZZO5c5DhRKw0vImjYB6jhxZ4QNbJ+XeJ4zVExuYRQcy4lkd+lRKLWWqDXEDKf+pJ07WuBqBcDifoyXD9ZbpOoLwPHTx+XlxANvpxA1Fc4TtTK7ys8J+rFuLu+KwzmUoj6ykDzqzKJ+koDUV9lgagXA4n6SmDSX1XCCS666iN9vtrxbqpvUDTQRN0XqCGy8PZzPB4qX/oRulug3xSi1nmI7mSRudPfcaJWGvYnaNgPqOE1nhA1sn5d63jNUTG5llBzriOR33VEotZaoNcQMp8GkHQdYIGoFwGJ+nqYDnGrb8+6Hhw/fdxQQjT4BgJR3+g4USu/b/ScqBfBiDpm7e1ZNwWa35xJ1DcZiPpmC0S9CEjUNwGT/uYSTnDRVR/p8y2Od1MDgqKBJuoBQA2RhfdWx+Oh8uVWQncL9JtC1DoP0Z0sMnduc5yolYa3ETS8Fajh7Z4QNbJ+3eF4zVExuYNQc+4kkd+dRKLWWqDXEDKf7iLpepcFol4IJOq7PSXqu8Hx08c9JUSD7yEQ9b2OE7Xy+17PiXqhh0R9X6D5/ZlEfZ+BqO+3QNQLgUR9HzDp7/eEqJE+P+B4N3VXUDTQRH0XUENk4X3Q8XiofHmQ0N0C/aYQtc5DdCeLzJ2HHCdqpeFDBA0fBGr4sCdEjaxfjzhec1RMHiHUnEdJ5Pcokai1Fug1hMyngSRdB1og6gVAon4MpkOZ1Wd9PwaOnz4eLyEa/DiBqJ9wnKiV3094TtQLYERdYe1Z308Gmj+VSdRPGoj6KQtEvQBI1E8Ck/6pEk5w0VUf6fPTjndTA4OigSbqgUANkYX3GcfjofLlGUJ3C/SbQtQ6D9GdLDJ3nnWcqJWGzxI0fAao4XOeEDWyfj3veM1RMXmeUHNeIJHfC0Si1lqg1xAyn14k6fqiBaKeDyTql3BEnbRJ1C+B46ePl0uIBr9MIOpXHCdq5fcrnhP1fBxRRwzmUoj61UDz1zKJ+lUDUb9mgajnA4n6VWDSv1bCCS666iN9ft3xburFoGigifpFoIbIwvuG4/FQ+fIGobsF+k0hap2H6E4WmTtvOk7USsM3CRq+AdTwLU+IGlm/3na85qiYvE2oOe+QyO8dIlFrLdBrCJlPg0i6DrJA1POARP0uTIew1WvU74Ljp4/3SogGv0cg6vcdJ2rl9/ueE/U8GFEnrV2jHhxo/kEmUQ82EPUHFoh6HpCoBwOT/oMSTnDRVR/p84eOd1ODgqKBJupBQA2Rhfcjx+Oh8uUjQncL9JtC1DoP0Z0sMnc+dpyolYYfEzT8CKjhJ54QNbJ+fep4zVEx+ZRQcz4jkd9nRKLWWqDXEDKfhpB0HWKBqH8HEvXnMB0iEZtE/Tk4fvr4ooRo8BcEov7ScaJWfn/pOVH/DiPqqqTBXApRDw00/yqTqIcaiPorC0T9O5CohwKT/qsSTnDRVR/p89eOd1NDgqKBJuohQA2Rhfcbx+Oh8uUbQncL9JtC1DoP0Z0sMneGOU7USsNhBA2/AWo43BOiRtavbx2vOSom3xJqznck8vuOSNRaC/QaQubTCJKuIywQ9VwgUY+E6VBt9Rr1SHD89PF9CdHg7wlEPcpxolZ+j/KcqOfCiFpYu0Y9OtD8h0yiHm0g6h8sEPVcIFGPBib9DyWc4KKrPtLnHx3vpkYERQNN1COAGiIL7xjH46HyZQyhuwX6TSFqnYfoThaZO2MdJ2ql4ViChmOAGo7zhKiR9esnx2uOislPhJrzM4n8fiYStdYCvYaQ+TSepOt4C0Q9B0jUE2A6RK0S9QRw/PTxSwnR4F8IRD3RcaJWfk/0nKjnwIi60hpRTwo0n5xJ1JMMRD3ZAlHPARL1JGDSTy7hBBdd9ZE+/+p4NzU+KBpooh4P1BBZeKc4Hg+VL1MI3S3QbwpR6zxEd7LI3JnqOFErDacSNJwC1HCaJ0SNrF/THa85KibTCTVnBon8ZhCJWmuBXkPIfJpJ0nWmBaKeDSTqWTAdYgmbRD0LHD99/FZCNPg3AlHPdpyold+zPSfq2TCijscM5lKIek6g+dxMop5jIOq5Foh6NpCo5wCTfm4JJ7jw71GBPv/ueDc1MygaaKKeCdQQWXjnOR4PlS/zCN0t0G8KUes8RHeyyNyZ7zhRKw3nEzScB9RwgSdEjaxfCx2vOSomCwk1ZxGJ/BYRiVprgV5DyHxaTNJ1sQWi/g1I1EtwV2isEvUScPz08UcJ0eA/CES91HGiVn4v9Zyof4MRddQaUS8LNF+eSdTLDES93AJR/wYk6mXApF9ewgkuuuojfV7heDe1OCgaaKJeDNQQWXhXOh4PlS8rCd0t0G8KUes8RHeyyNxZ5ThRKw1XETRcCdRwtSdEjaxfaxyvOSomawg1RyEKKtbpPZQ6L4uotRboNYTMp1okXWvV5xP1LCBR58J0iIVsEnUuOH76yKtPNDivPv68+fXdJmrld379vwUGndcqUc+CEXUiZDCXQtQFgea19YrUFaqg/j+JWv0jNlHPAhJ1ATDpa9fnBBdd9ZE+F9Z3u5uqFRQNNFHXAmqILLx1HI+Hypc69fHdLdBvClHrPER3ssjcKSJrGMru+HMtFxE0rAPUsC5YQ32g9wBk/arneM1RMalHqDnFJPIrJhK11gK9hpD5VELStcQCUc8EEnV9XD8pbBJ1fXD89NGgPtHgBgSiLnWcqJXfpZ4T9UwYUZenDOZSiLphoPlmmUTd0EDUm1kg6plAom4ITPrN6nOCi676SJ83d7ybKgmKBpqoS4AaIgtvI8fjofKlEaG7BfpNIWqdh+hOFpk7jR0naqVhY4KGjYAabuEJUSPr15aO1xwVky0JNWcrEvltRSRqrQV6DSHzqQlJ1yYWiHoGkKi3hukQtfr2rK3B8dPHNvWJBm9DIOptHSdq5fe2nhP1DNyTyay9PatpoPl2mUTd1EDU21kg6hlAom4KTPrt6nOCi676SJ+3d7ybahIUDTRRNwFqiCy8zRyPh8qXZoTuFug3hah1HqI7WWTuNHecqJWGzQkaNgNq2MITokbWrx0crzkqJjsQak5LEvm1JBK11gK9hpD51IqkaysLRD0dSNStYTpUW71G3RocP33sWJ9o8I4Eom7jOFErv9t4TtTTcW/PsnaNum2g+U6ZRN3WQNQ7WSDq6UCibgtM+p3qc4KLrvpIn3d2vJtqFRQNNFG3AmqILLy7OB4PlS+7ELpboN8UotZ5iO5kkbmzq+NErTTclaDhLkANd/OEqJH1a3fHa46Kye6EmhMikV+ISNRaC/QaQuaTIOkqLBD1NCBRh2E6pMpsEnUYHD99ROoTDY4QiDrqOFErv6OeE/U0GFGHKg3mUoi6LNC8PJOoywxEXW6BqKcBiboMmPTl9TnBRVd9pM8xx7spERQNNFELoIbIwht3PB4qX+KE7hboN4WodR6iO1lk7iQcJ2qlYYKgYRyo4R6eEDWyfu3peM1RMdmTUHP2IpHfXkSi1lqg1xAyn/Ym6bq3BaKeCiTqfWA6JKze9b0POH762Lc+0eB9CUS9n+NE/WegPCfqqbjfUVu767tdoPn+mUTdzkDU+1sg6qlAom4HTPr963OCi676SJ8PcLyb2jsoGmii3huoIbLwHuh4PFS+HEjoboF+U4ha5yG6k0XmTnvHiVpp2J6g4YFADQ/yhKiR9etgx2uOisnBhJpzCIn8DiEStdYCvYaQ+dSBpGsHC0Q9BUjUh+KuUVt91veh4Pjp47D6RIMPIxD14Y4TtfL7cM+Jegrurm9rz/ruGGh+RCZRdzQQ9REWiHoKkKg7ApP+iPqc4KKrPtLnIx3vpjoERQNN1B2AGiIL71GOx0Ply1GE7hboN4WodR6iO1lk7nRynKiVhp0IGh4F1PBoT4gaWb+OcbzmqJgcQ6g5nUnk15lI1FoL9BpC5tOxJF2PDXS1SZe/FmN90cdx9YkGH0egy+Mdp0vl9/EEujTZilggxxMWMXDh0ePtqoZIv7t40kwcC/S5q+PNhPK1C6GZOMHx5lvF5QRyzclWw26kxqHbf9A4TCY1DifWJxp8IqFx6O5446D87u5J46ASuTthEQMXHj3ermqI9PskTxqHbkCfT3a8cVC+nkRoHHo43jiouPQg15xsNawgNQ4VFq7hTwJew68EriGbzVJlfU6zVFWfaHAVoVlKOt4sKb+TlpqlUHaHqAhsRV86rADGCBnvasc3UFXoqgkbaMrxDVT5nCL4fQpp0zvFcAsIWhN2zBBrPEloepDr/VTH815peCpBw2qghj09AS3knnOa4/uEislphHp5Oqlenk683Ku1QK8hZD71Iq0htJa9wL21PtBrfSwQCM9I81nEI+FwLKL+XTwZEtFkVTgeDicro6GqUEVVuDoRFYlUNByNVCWrKuU5K0QqlKqoSqTif53LJhCeQQLCM+sTDT6TAIRnOQ6Eyu+zCECokq12jp2buscWcwpYpibZLsD0RO6d/s0Ueqc8C9ghpO+UvdexU67H5qr1iPPnQum9CTvl+kTvDVyAZ5M6EHXeKzYxF4TUrkqEUqFEOFQRilWVxyoTyXBlvCIVSZVFkpFN1XV9yY7U9RySrudsuq7/X+TruSRdz/0/nq/nkXQ9L9BVbZ65OXY6NeTmmb7Znx80FReoPYOxwfUmdGu9Hf9aa1MXR2gj/M7Wxgsd/1pLJeaFhK8n+pCKQp91FNtQdoe4gKTFRSQtLiJqoQohQ4uLW7tdU1jr4ZL/1u+q9dhHy/1LwX7rA/0rXmBeCmCsBVI/1UgV5pi/hcjZSD3Xl0/p52TsWShN0pvKi9f1LUQou0NcSNoELt707+vF+v53lM0XE4rCFaSikL+RMduY5i3rDaC+mwUGGYv0vLwkrTnZ1PisT3NkfC5Nv7YQici1kYyJVDIVKYslwpWiPFJenoqmYuXxaDJVFq1IxqpFtCISTlTHQikRr66OlUWqYuWpRLKqPJVetEUyEokmE5VVoixcXlEZiicjFaFUNBaRwJ+MxJLJSLy8vCISSZbHU/GEhHSJ/vFQWSyWCJWHI4kwKz6XptE1alNY37c56ef0ZVPo6+Om0Je8KfQlbApXObIp/GsSx/58SEsKWXQuc3RTuIpUdC4DbArr+2oTGZ/LHd0UWPG5/P+jr1yvCL5yvdL0lWsou+Nfr3cgr1Vmey7g17eUO6O0hug7mlkaZr3BOR4PtWCuImzsV5OanKuJX39eSdKiH0mLfuSvgilaOP5VMGs99Hf8q2BW7l/jyVfBwLwUwFiLa2q+Cs48/tyzUJqkN7v9mdR/FWkT6E+kfmVzf0JRuN6Tr4KvAjaC19R3s8BcT6LKayx8FYyMz7VA6r8GSP2s+FxriM/G3lOzvq9+kfG5jlQ/rwPosL5vp5A6DCDpMMCzfLiepMP1nuXDDSQdbtiAS0UuN3YGc2F5nN403uhj03gjuWm8kdA03mipaczyrnhokbsJeC5k03gjqSm5aQOaxmzvrkfG5+b6uEYP2TSy4nMzYHNczyHUi1BQ8bkFVj/jlBuxzwq+dUNfUULm+K2OX8FQMb6VsN/cRtp71XnrBH/fJeefB+p/U58PrffTRe7beDu6kfQlaW92/PKK8vl2gt+3OPKN4nqOtRIzW5/vABZmYN4IZCzIRfJ/lyn+LxbJO/6vFsk7Hf95nvL5ToLfd5E6mrvq//20NcbPPU0dcii7QyA75LsdzydFVHcT8ukeD9bRPQS/7yWto3vXsY5C2R20mnJ76/+bOXCHpftasrXzPmCTCIy1uIP0DdV9NXRNt/F+duOIoMz7CYv+bk8o834PFn3WzYcnBfgBYCyA+SfuqaF0L4rtA8hi6+uu+JoHgXqwJlAh8YYHgXqoJlAh8ZYHgXq4JlAh8Y4HgXqkJlAh8a4HgXq0JlAh8b4HgRpYE6iQ+MCDQD1WE6iQ+MiDQD1eE6iQ+MSDQD1RE6iQ+MyDQD1ZE6iQ+NyDQD1VE6iQ+NKDQD1dEygZqFz3bXymJlAh8bUHK+rZmkDJrs+DFfVcTaBCYrgHK+r5mkCFxHceBOqFmkCFxEgPAvViTaBCYpQHgXqpJlAh8YMHgXq5JlAhMcaDQL1SE6iQGOdBoF6tCVRI/OxBoF6rCVRITPAgUK/XBCokJnoQqDdqAhUSkz0I1Js1gZJlxYPv+t6qCVRITPVgRb1dE6iQmO5BoN6pCVRIzPQgUINqAhUSv3kQqHeRgVLP0NQ/StXGNs8IWi7YAeBDLgT6h/6MgD3ogY0PeWDjwx7Y+IgHNj7qgY0DPbDxMQ9sfNwDG5/wwMYnPbDxKQ9sfNoDG5/xwMZnPbDxOQ9sfN4DG1/wwMYXPbDxJQ9sfNkDG1/xwMZXPbDxNQ9sfN0DG9/wwMY3PbDxLQ9sfNsDG9/xwMZBHtj4LsHGHKiNkViO4cCcOyx45/77zeS10s75ntT7fTkGy/GBHB/K8ZEcH8vxiRyfyvGZHEPk+FyOL+T4Uo6hcnwlx9dyfCPHMDmGy/GtHN/JMUKOkXJ8L8coOUbL8YMcP8oxRo6xcoyT4yc5fpZjvBwT5PhFjolyTJJjshy/yjFFjqlyTJNjuhwz5Jgpxyw5fpNjthxz5Jgrx+9yzJNjvhwL5FgoxyI5FsuxRI4/5FgqxzI5ltf/S4MV9QNR9FMblSh1MubeN8wNNsx9YJj70DD3kWHuY8PcJ4a5Tw1znxnmhhjmPjfMfWGY+9IwN9Qw95Vh7mvD3DeGuWGGueGGuW8Nc98Z5kYY5kYa5r43zI0yzI02zP1gmPvRMDfGMDfWMDfOMPezYW68YW6CYe4Xw9xEw9wkw9xkw9yvhrkphrmphrlphrnphrkZhrmZhrlZhrnfDHOzDXNzDHNzDXO/G+bmGebmG+YWGOYWGuYWGeYWG+aWGOb+MMwtNcwtM8wtN8yp4tcsZ+0D/dDJ9It/Dj3lW7xXn9Ns5IL1A15MFO974jPw4qQY7InPwIud4gNPfAZePBUfeuIz8GKs+MgTn4EXd8XHnvgMvFgsPvHEZ+DFZ/GpJz4DL2aLzzzxGXhxXAzxxGfgxXbxuSc+Ay/eiy888Rl4M4D40hOfgTcXiKGe+Ay8WUF85YnPwJsfxNee+Ay8mUJ844nPwJszxDBPfAbe7CGGe+Iz8OYR8a0nPgNvRhHfeeIz8OYWMcITn4E3y4iRnvgMvPlGfO+Jz8CbecQoT3wG3hwkRnviM/BmI/GDJz4Db14SP3riM/BmKDHGE5+BN1eJsZ74DLxZS4wj+Vwrw+dQdof4CXAtuzqljqoK9UPcorS41Eqzk2U/45o32saaH89ibKz58SzGxpofz2JsrPnxLMbGmh/PYmys+fEsxsaaH89ibKz58SzGxpofz2JsrPnxLMbGmh/PYmys+fEsxsaaH89ibKz58SzGxpofz2Js9PHHs5jzxmmajvcg7hM8sPEXD2yc6IGNkzywcbIHNv7qgY1TPLBxqgc2TvPAxuke2DjDAxtnemDjLA9s/M0DG2d7YOMcD2yc64GNv3tg4zwPbJzvgY0LPLBxoQc2LvLAxsUe2LjEAxv/8MDGpR7YuMwDG5cTv+fD2RkOm+5rXCltXyXHajnWyJHTQP53OXLlyJMjX44COWrLUShHHTmK5KgrRz05iuUokaO+HA3kKJWjoRybybG5HI3kaCzHFnJsKcdWcjSRY2s5tpFjWzmayrGdHNvL0UyO5nK0kGMHOVrK0UqO1nLsKEcbOdrKsZMcO8uxixy7yrGbHLvLEZJDyBGWIyJHVI4yOcrliMkRlyMhxx5y7NngLw32apCz9kOYlCiZD2ZaZZhbbZhbY5hTombO1TLM5Rrm8gxz+Ya5AsNcbcNcoWGujmGuyDBX1zBXzzBXbJgrMczVN8w1MMyVGuYaGuY2M8xtbphrZJhrbJjbwjC3pWFuK8NcE8Pc1oa5bQxz2xnmtjfMNTPMNTfMtTDM7WCYa2mYa2WYa22Y29Ew18Yw19Ywt5NhbmfD3C6GuV0Nc7sZ5nY3zIUMc8IwFzbMRQxzUcNcmWGu3DAXM8zFDXMJw9wehrk9DXOq0DXLWfvQm8J+wZ/Z/ggBeEO7WOnJDy+QD4Rb5YnPyAfCrfbEZ+QD4dZ44jPygXCqD/LBZ+QD4Wp54jPygXC5nviMfCBcnic+Ix8Il++Jz8gHwhV44jPygXC1PfEZ+UC4Qk98Rj4Qro4nPiMfCFfkic/IB8LV9cRn5APh6nniM/KBcMWe+Ix8IFyJJz4jHwhX3xOfkQ+Ea+CJz8gHwpV64jPygXANPfEZ+UC4zTzxGflAuM098Rn5QLhGnviMfCBcY098Rj4QbgtPfEY+EG5LT3xGPhBuK098Rj4QroknPiMfCLe1Jz4jHwi3DcnnWhk+h7I7xLYNstdPPxCOaWdTmJ1xwcwh4A8uxXaerBvgDzjF9p74DPxBqGjmic/AH5iK5p74DPzBqmjhic/AH8CKHTzxGfiDWtHSE5+BP9AVrTzxGfiDX9HaE5+BPyAWO3riM/AHyaKNJz4Df+As2nriM/AH02InT3wG/gBb7OyJz8AfdItdPPEZ+ANxsasnPgN/cC5288Rn4A/Yxe6e+Az8QbwIeeIz8Af2QnjiM/AH+yLsic/ABwCIiCc+Ax8oIKKe+Ax8QIEo88Rn4AMPRLknPgMfoCBinvgMfCCDiHviM/ABDyLhic/AB0aIPTzxGfgACrEn0Gf1Qq26OX/9/lgdtdJ8zkmbS9cilN1R80ItkI01L9TC2FjzQi2MjTUv1MLYWPNCLYyNNS/UwthY80ItjI01L9TC2FjzQi2MjTUv1MLYWPNCLYyNNS/UwthY80ItjI01L9TC2FjzQi2MjTUv1EKct+aFWgwba16ohbGx5oVaGBtrXqiFsbHmhVoYG2teqIWxseaFWhgba16ohbGx5oVaGBtrXqiFsbHmhVoYG2teqIWxseaFWhgba16ohbGx5oVaGBt9eaEW8dyiVpq2+px7N8jJ2UeOfdU9mnK0k2N/OQ6Q40A52stxkBwHy3GIHB3kOFSOw+Q4XI6Ochwhx5FyHCVHJzmOluMYOTrLcawcx8lxvBxd5OgqxwlydJPjRDm6y3GSHCfL0UOOCjkq5aiSIylHtRwpOU6R41Q5espxmhyny9FLjjPkOFOOs+ToLcfZcpwjx7lynCfH+XJcIMeFcvSR4yI5LpbjEjkubZCz9sts9ja84GYfw9y+hrn9DHPtDHP7G+YOMMwdaJhrb5g7yDB3sGHuEMNcB8PcoYa5wwxzhxvmOhrmjjDMHWmYO8ow18kwd7Rh7hjDXGfD3LGGueMMc8cb5roY5roa5k4wzHUzzJ1omDvfMHeBYe5Cw1wfw9xFhrmLDXOXGOYuDebSj9zgz/2CP116sdPentxYj3yx0z6e+Ix8sdO+nviMfLHTfp74jHyxUztPfEa+2Gl/T3xGvtjpAE98Rr7Y6UBPfEa+2Km9Jz4jX+x0kCc+I1/sdLAnPiNf7HSIJz4jX+zUwROfkS92OtQTn5EvdjrME5+RL3Y63BOfkS926uiJz8gXOx3hic/IFzsd6YnPyBc7HeWJz8gXO3XyxGfki52O9sRn5IudjvHEZ+SLnTp74jPyxU7HeuIz8sVOx3niM/LFTsd74jPyxU5dPPEZ+WKnrp74jHyx0wme+Ix8sVM3T3xGvtjpRJLP6JuCujfIXj8bL3Y6CWbn2i92Qtt5sidx7+GJnRWe2FnpiZ1VntiZ9MTOak/sTHli5yme2HmqJ3b29MTO0zyx83RP7OzliZ1neGLnmZ7YeZYndvb2xM6zPbHzHE/sPNcTO88j2ZmfrZ1i7b+en52da53tgmx9TjvbhQBe19/L3N/a0ViE1va6DyJngrNdhMm/P892MTAWD7gdi5D2+hLc+hWXAs8FzGWRHousvhOrTiXUSwVKcv7+TpUSG3Juh7I53M0Zxo8t/1ez0uPdt8Fff16W+aNA9R8mZMypf9QspyZRsv6RjA8FNSOhN9HncOCz6AvU7zLgomXFIhccC6R+lxvOVRmqSpaJyvJkTFRXlMWrqhIRIcIV5RXlleF4qrqyTMTL4vKcVRXhuPyfC1dUiepQRXm12kTkNbT/NePpB7pBvxxYYNPtvaIB0WB1cvR5rwQmA8vvKxv8LTDovEZbEcVE2YpasPq8yBhdBU58vaGr8zaXf9rsBM8HbvAXADf4C4GbSp8GnE0FtJ6MneDVwXrtl9kJXm3oBPsxO8HAyD7A7uNq4GLsl3aucLKsOpSIV8bDlRWRWGU0UplIVMjzlgsRTyXDoWQ0nCoT5eVViepESkRSlWXVFeVlFYny5J+7Z/J+T7oPpH79Pe0++pO6j2saEA2+htB9XOt496H8vtaT7qNfYCu6+0DG6DpS93Hdf9B9gO5l/fNssHtEBfbeS+bD/QGxMHYfA4L1en1m9zHA0H1cb+F7KB8SJeuHeHjyPdS79XGd4ABgYbweiAyPetIJIvW7wdNO8AZSJ3hjA6LBNxI6wZsc7wSV3zd50gleH9iK7gSRMbqZ1Ane/B90gq8DN/g3gBs88ld1b3nYCd4SrNdbMzvBWwyd4K0WOkEfEiXrx3x50gm+BewEbwEWxluBneBjnnSCSP1u87QTvI3UCd7egGjw7YRO8A7HO0Hl9x2edIK3BraiO0FkjO4kdYJ3/ged4MvADf4V4AaPfF7Kax52gncF6/XuzE7wLkMneLeFTtCHRMn6QaCedIKvATvBu4CF8W5gJ/iEJ50gUr97PO0E7yF1gvc2IBp8L6ETvM/xTlD5fZ8nneDdga3oThAZo/tJneD9/0En+Dxwg38BuMEjn4T5koed4APBen0wsxN8wNAJPmihE/QhUbJ+VLgnneBLwE7wAWBhfBDYCT7lSSeI1O8hTzvBh0id4MMNiAY/TOgEH3G8E1R+P+JJJ/hgYCu6E0TG6FFSJ/jof9AJPg3c4J8BbvDIdxw852EnODBYr49ldoIDDZ3gYxY6QR8SJeuXiXjSCT4H7AQHAgvjY8BO8BlPOkGkfo972gk+TuoEn2hANPgJQif4pOOdoPL7SU86wccCW9GdIDJGT5E6waf+g07wceAG/wRwg0e+ve4pDzvBp4P1+kxmJ/i0oRN8xkIn6EOiZP26MU86waeAneDTwML4DLATfM6TThCp37OedoLPkjrB5xoQDX6O0Ak+73gnqPx+3pNO8JnAVnQniIzRC6RO8IX/oBN8BLjBPwrc4JHvJX/Mw07wxWC9vpTZCb5o6ARfstAJ+pAoWS9sTzrBx4Cd4IvAwvgSsBN8wZNOEKnfy552gi+TOsFXGhANfoXQCb7qeCeo/H7Vk07wpcBWdCeIjNFrpE7wNZudYLApPwjclB8Cdm8P18c1Me952Am+HqzXNzI7wdcNneAbzE7Qo0TJuvi43gkaEjrbTvB1YGF8A9gJvuRJJ4jU701PO8E3SZ3gWw2IBr9F6ATfdrwTVH6/7Ukn+EZgK7oTRMboHVIn+E7QCarPjXLW3uTTv/pJvyCYfptY+o8H0n9Smv6gEfX5+rTPv9X9+/PTRZv+uV/aOS9L+zw77fxz0j7PTfv8e9rneWmf56d9XpD2eWHweZD833lXjvfkeF+OwXJ8IMeHcnzU4J+dNHpdfQTMA90sfCzP+Ykcn8rxWdAFpueI+u91ctae+8Qw96lh7rNgLv1Af131EXCdfQw411/vTw6JT4B2vUJqUvIyYpGNzyoWn0L0+yuunwGbPKR+7DX+IWGND5Hn/FyOL+T40rDGhxjW7ueGuS8Mc19aWOMfAtfSEOAa/xz5bY8na/wL4Br/ErjGX/NojX9AWOND5Tm/kuNrOb4xrPGhhrX7lWHua8PcNxbW+AfAtTQUuMa/Qn5x4cka/xq4xr8BrvE3PFrjgwlrfJg853A5vpXjO8MaH2ZYu8MNc98a5r6zsMYHA9fSMOAaHw606y1P1vi3wDX+HXCNv+XRGn+fsMZHyHOOlON7OUYZ1vgIw9odaZj73jA3ysIafx+4lkYA1/hI5Pdxnqzx74FrfBRwjb/j0Rp/j7DGR8tz/iDHj3KMMazx0Ya1+4Nh7kfD3BgLa/w94FoaDVzjPwDteteTNf4jcI2PAa7xdz1a4+8S1vhYec5xcvwkx8+GNT7WsHbHGeZ+Msz9bGGNvwtcS2OBa3wc0K73PVnjPwHX+M/ANf6+R2t8EGGNj5fnnCDHL3JMNKzx8Ya1O8Ew94thbqKFNT4IuJbGA9f4BKBdH3iyxn8BrvGJwDX+gUdrvBbuXKFmwXkmSS0ny/GrHFPkmCrHNDmmyzFDjplyzJLjNzlmyzFHjrly/C7HPDnmy7FAjoVyLJJjsRxL5PhDjqVyLJNjuRwr5Fgpxyo5VsuxRtWT0px/1JRJhlox2TD3q2FuimFuqmFummFuumFuhmFupmFulmHuN8PcbMPcHMPcXMPc74a5eYa5+Ya5BYa5hYa5RYa5xYa5JYa5PwxzSw1zywxzyw1zKwxzKw1zqwxzqw1zawxzKv/Ye1D6ms221k8C7kGTgXvQR5Zu+M12D/oVuAdNyf5c/7t5eCowFh+7HIvo/+wU07LzOZTms5iezbnCa+knZgBj8YmbsQhl2ClmbqLP5al/+Cxmbdq54gb9xG/AWHzqWiziRjvF7I33OfYvPos5G3uu2L/qJ+YCY/GZO7EIr8NO8fvG+Bxbp89i3oafq2o9+on5wFgMcSEWsfXaKRZsmM+hDfBZLNyQc4U2SD+xCBiLz//bWJRtoJ1i8fp8jm6wz2LJOs8VTW2EfuIPYCy++K9iEdsoO8XSf/c5vpE+i2X/cq5EaqP1E8uBsfjSfixCm2CnWGHyObRJPouV/zyX2ET9xCpgLIbajEVyk+0Uq9f2OZKFz2JN2rnCqaz0E+o7B1QsvvLkkSvA7wcEkG9FOp9lG4uvPYkFkIMEsI8XQ4Cx+MaTWAD7PQHsV8SXwFgM8yQWwH1NAOuy+BoYi+GWrhWGsjsEcP0KYP4Jln65Gfpl/Zt3YI9RqxTlcyRk82EKOLvXfphCbinRYHVy9HnzgMnA8juv9G+BQecNrevxT2gfcmDJlmQ8Gimwcu0bFPIDzQuCi/D/uyqaHyRh+lyB4Uopuuojqpa+upkPTPoCcHAZCzzfUDiy9Tu/1I/dbg3w243aMJ/LozZ3u9qk3a6wlGhwIWG3q+P4bqf8ruP5brcGdvtdospgLmW3Kwo0r5u52xUZdru6Fna7NQ1wu10RMOnrlnKCi676SJ/rlQK7mBz8TpwXFI1ccA4i0aAY3C2gi5aKcTGhS3Ldb507aL9LPOkOkTlen1wnQtkdQsWkPqFOFAM1bODBemlAWC+l4A5d9yqlabaytEDnU31gPjUk6dqw9J/khq5Nq4HkuhlMh6jVh95uBo6fPjYvJRq8OYFcGzlOrsrvRp6T62oYuVaGDeZSyLVxoPkWmeTa2ECuW1gg19VAcm0MTPotSjnBRVd9pM9bOt6RNgyKBurXpKZdP9tzIQvvVo7HQ+XLVoTuFui3cfNC5EsjQieLzJ0mjpOR0rAJQcOtgBpu7cm3Esj6tY3jNUfFZBtCzdmWRH7bEolaa4FeQ8h8akrStakFokbe6b4dTIdY2CZRbweOnz62LyUavD2BqJs5TtTK72aeE/UqGFHHqw3mUoi6eaB5i0yibm4g6hYWiHoVkKibA5O+RSknuOiqj/R5B8e7qaZB0UATdVOghsjC29LxeKh8aUnoboF+U4ha5yG6k0XmTivHiVpp2IqgYUughq09IWpk/drR8ZqjYrIjoea0IZFfGyJRay3QawiZT21Jura1QNQrgUS9E0yHamGTqHcCx08fO5cSDd6ZQNS7OE7Uyu9dPCfqlTCiFimDuRSi3jXQfLdMot7VQNS7WSDqlUCi3hWY9LuVcoKLrvpIn3d3vJtqGxQNNFG3BWqILLwhx+Oh8iVE6G6BflOIWuchupNF5o5wnKiVhoKgYQioYdgTokbWr4jjNUfFJEKoOVES+UWJRK21QK8hZD6VkXQts0DUK4BEXQ7TIWKVqMvB8dNHrJRocIxA1HHHiVr5HfecqFfAiLrKGlEnAs33yCTqhIGo97BA1CuARJ0AJv0epZzgoqs+0uc9He+myoKigSbqMqCGyMK7l+PxUPmyF6G7BfpNIWqdh+hOFpk7eztO1ErDvQka7gXUcB9PiBpZv/Z1vOaomOxLqDn7kchvPyJRay3QawiZT+1IurazQNTIZ83vD9OhwurzLvcHx08fB5QSDT6AQNQHOk7Uyu8DPSfq5TCiLg8ZzKUQdftA84Myibq9gagPskDUy4FE3R6Y9AeVcoKLrvpInw92vJtqFxQNNFG3A2qILLyHOB4PlS+HELpboN8UotZ5iO5kkbnTwXGiVhp2IGh4CFDDQz0hamT9OszxmqNichih5hxOIr/DiUSttUCvIWQ+dSTp2tECUS8DEvURMB3CCZtEfQQ4fvo4spRo8JEEoj7KcaJWfh/lOVEvgxF1MmYwl0LUnQLNj84k6k4Goj7aAlEvAxJ1J2DSH13KCS666iN9PsbxbqpjUDTQRN0RqCGy8HZ2PB4qXzoTulug3xSi1nmI7mSRuXOs40StNDyWoGFnoIbHeULUyPp1vOM1R8XkeELN6UIivy5EotZaoNcQMp+6knTtaoGolwKJ+gSYDpVxm0R9Ajh++uhWSjS4G4GoT3ScqJXfJ3pO1EthRB2NG8ylEHX3QPOTMom6u4GoT7JA1EuBRN0dmPQnlXKCi676SJ9Pdryb6hoUDTRRdwVqiCy8PRyPh8qXHoTuFug3hah1HqI7WWTuVDhO1ErDCoKGPYAaVnpC1Mj6VeV4zVExqSLUnCSJ/JJEotZaoNcQMp+qSbpWWyDqP4BEnYLpUGb1ru8UOH76OKWUaPApBKI+1XGiVn6f6jlR/4F7e1bIYC6FqHsGmp+WSdQ9DUR9mgWi/gNI1D2BSX9aKSe46KqP9Pl0x7up6qBooIm6GqghsvD2cjweKl96EbpboN8UotZ5iO5kkblzhuNErTQ8g6BhL6CGZ3pC1Mj6dZbjNUfF5CxCzelNIr/eRKLWWqDXEDKfzibperYFol4CJOpzcFdoymwS9Tng+Onj3FKiwecSiPo8x4la+X2e50S9BEfUlQZzKUR9fqD5BZlEfb6BqC+wQNRLgER9PjDpLyjlBBdd9ZE+X+h4N3V2UDTQRH02UENk4e3jeDxUvvQhdLdAvylErfMQ3ckic+cix4laaXgRQcM+QA0v9oSokfXrEsdrjorJJYSacymJ/C4lErXWAr2GkPnUl6RrXwtEvRhI1Jfh+slym0R9GTh++ri8lGjw5QSivsJxolZ+X+E5US/G3fVdYTCXQtRXBppflUnUVxqI+ioLRL0YSNRXApP+qlJOcNFVH+nz1Y53U32DooEm6r5ADZGFt5/j8VD50o/Q3QL9phC1zkN0J4vMnf6OE7XSsD9Bw35ADa/xhKiR9etax2uOism1hJpzHYn8riMStdYCvYaQ+TSApOsAC0S9CEjU18N0iFt9e9b14Pjp44ZSosE3EIj6RseJWvl9o+dEvQhG1DFrb8+6KdD85kyivslA1DdbIOpFQKK+CZj0N5dygouu+kifb3G8mxoQFA00UQ8AaogsvLc6Hg+VL7cSulug3xSi1nmI7mSRuXOb40StNLyNoOGtQA1v94SokfXrDsdrjorJHYSacyeJ/O4kErXWAr2GkPl0F0nXuywQ9UIgUd/tKVHfDY6fPu4pJRp8D4Go73WcqJXf93pO1As9JOr7As3vzyTq+wxEfb8Fol4IJOr7gEl/vydEjfT5Ace7qbuCooEm6ruAGiIL74OOx0Ply4OE7hboN4WodR6iO1lk7jzkOFErDR8iaPggUMOHPSFqZP16xPGao2LyCKHmPEoiv0eJRK21QK8hZD4NJOk60AJRLwAS9WMwHcqsPuv7MXD89PF4KdHgxwlE/YTjRK38fsJzol4AI+oKa8/6fjLQ/KlMon7SQNRPWSDqBUCifhKY9E+VcoKLrvpIn592vJsaGBQNNFEPBGqILLzPOB4PlS/PELpboN8UotZ5iO5kkbnzrONErTR8lqDhM0ANn/OEqJH163nHa46KyfOEmvMCifxeIBK11gK9hpD59CJJ1xctEPV8IFG/hCPqpE2ifgkcP328XEo0+GUCUb/iOFErv1/xnKjn44g6YjCXQtSvBpq/lknUrxqI+jULRD0fSNSvApP+tVJOcNFVH+nz6453Uy8GRQNN1C8CNUQW3jccj4fKlzcI3S3QbwpR6zxEd7LI3HnTcaJWGr5J0PANoIZveULUyPr1tuM1R8XkbULNeYdEfu8QiVprgV5DyHwaRNJ1kAWingck6ndhOoStXqN+Fxw/fbxXSjT4PQJRv+84USu/3/ecqOfBiDpp7Rr14EDzDzKJerCBqD+wQNTzgEQ9GJj0H5Rygouu+kifP3S8mxoUFA00UQ8CaogsvB85Hg+VLx8Rulug3xSi1nmI7mSRufOx40StNPyYoOFHQA0/8YSokfXrU8drjorJp4Sa8xmJ/D4jErXWAr2GkPk0hKTrEAtE/TuQqD+H6RCJ2CTqz8Hx08cXpUSDvyAQ9ZeOE7Xy+0vPifp3GFFXJQ3mUoh6aKD5V5lEPdRA1F9ZIOrfgUQ9FJj0X5Vygouu+kifv3a8mxoSFA00UQ8BaogsvN84Hg+VL98Qulug3xSi1nmI7mSRuTPMcaJWGg4jaPgNUMPhnhA1sn5963jNUTH5llBzviOR33dEotZaoNcQMp9GkHQdYYGo5wKJeiRMh2qr16hHguOnj+9LiQZ/TyDqUY4TtfJ7lOdEPRdG1MLaNerRgeY/ZBL1aANR/2CBqOcCiXo0MOl/KOUEF131kT7/6Hg3NSIoGmiiHgHUEFl4xzgeD5UvYwjdLdBvClHrPER3ssjcGes4USsNxxI0HAPUcJwnRI2sXz85XnNUTH4i1JyfSeT3M5GotRboNYTMp/EkXcdbIOo5QKKeANMhapWoJ4Djp49fSokG/0Ig6omOE7Xye6LnRD0HRtSV1oh6UqD55EyinmQg6skWiHoOkKgnAZN+ciknuOiqj/T5V8e7qfFB0UAT9XighsjCO8XxeKh8mULoboF+U4ha5yG6k0XmzlTHiVppOJWg4RSghtM8IWpk/ZrueM1RMZlOqDkzSOQ3g0jUWgv0GkLm00ySrjMtEPVsIFHPgukQS9gk6lng+Onjt1Kiwb8RiHq240St/J7tOVHPhhF1PGYwl0LUcwLN52YS9RwDUc+1QNSzgUQ9B5j0c0s5wYV/jwr0+XfHu6mZQdFAE/VMoIbIwjvP8XiofJlH6G6BflOIWuchupNF5s58x4laaTifoOE8oIYLPCFqZP1a6HjNUTFZSKg5i0jkt4hI1FoL9BpC5tNikq6LLRD1b0CiXoK7QmOVqJf8P/bOBN6m6u3jMs/ciztwDalo7uw7nXub53meVIrudBShEkIhMpQozfOkUhRFIYpCFEVRFEWReZ5n3rVqr2ynVYbz+63Wev9nfz7Pp/1fb+/ueX7Ps579fM8+dx9w/tSxpSrR4S0Eot5qOVHLuLc6TtQrYESdaYyot/mab48m6m0aot5ugKhXAIl6G7Dot1flJBfd9ZEx77B8mtrkNw00UW8CaohsvDstz4esl52E6RYYN4WoVR2iJ1lk7eyynKilhrsIGu4EarjbEaJG9q89lvccmZM9hJ5TLIFDfvK6LKJWWqD3ELKeDiPpelgCn6iXA4m6OEyHcMgkURcH508dJRKIDpdIwF+3ZILdRC3jLpmwV2DQdY0S9XIYUeeGNO5SiLqUr3nphGL70nOphL8TtfyX2ES9HEjUpYBFXzqBk1x010fGXCbB7mnqML9poIn6MKCGyMZb1vJ8yHopm4CfboFxU4ha1SF6kkXWTjmyhqHYjj/2cjmChmWBGpYHa6gO9D0A2b8qWN5zZE4qEHpORRL5VSQStdICvYeQ9VSJpGslA0S9DEjUlXHzpGeSqCuD86eOKglEh6sQiLqq5UQt467qOFEvgxF1dkTjLoWoE3zNE6OJOkFD1IkGiHoZkKgTgEWfmMBJLrrrI2OuZvk0VclvGmiirgTUENl4q1ueD1kv1QnTLTBuClGrOkRPssjaqWE5UUsNaxA0rA7UMMkRokb2r2TLe47MSTKh56SQyC+FSNRKC/QeQtZTKknXVANEvRRI1DVhOmQa/fWsmuD8qaNWAtHhWgSiTrOcqGXcaY4T9VLcm8mM/XpWbV/zOtFEXVtD1HUMEPVSIFHXBhZ9nQROctFdHxlzXcunqVS/aaCJOhWoIbLx1rM8H7Je6hGmW2DcFKJWdYieZJG1c7jlRC01PJygYT2ghvUdIWpk/zrC8p4jc3IEoeccSSK/I4lErbRA7yFkPR1F0vUoA0S9BEjUDWA6FBl9Rt0AnD91NEwgOtyQQNRHW07UMu6jHSfqJbhfzzL2jPoYX/Njo4n6GA1RH2uAqJcAifoYYNEfm8BJLrrrI2M+zvJp6ii/aaCJ+iighsjGe7zl+ZD1cjxhugXGTSFqVYfoSRZZOydYTtRSwxMIGh4P1PBER4ga2b9OsrznyJycROg5IRL5hYhErbRA7yFkPXkkXT0DRL0YSNTpMB0iWSaJOh2cP3VkJBAdziAQdablRC3jznScqBfDiDqUr3GXQtRZvubZ0USdpSHqbANEvRhI1FnAos9O4CQX3fWRMYctn6Y8v2mgidoDaohsvDmW50PWSw5hugXGTSFqVYfoSRZZO7mWE7XUMJegYQ5Qw5MdIWpk/zrF8p4jc3IKoeecSiK/U4lErbRA7yFkPZ1G0vU0A0S9CEjUp8N0yDX6re/TwflTxxkJRIfPIBD1mZYT9R+JcpyoF+H+jtrYt77P8jU/O5qoz9IQ9dkGiHoRkKjPAhb92Qmc5KK7PjLmcyyfpk7zmwaaqE8DaohsvOdang9ZL+cSpltg3BSiVnWInmSRtXOe5UQtNTyPoOG5QA3Pd4Sokf3rAst7jszJBYSecyGJ/C4kErXSAr2HkPV0EUnXiwwQ9e9Aor4Y94za6Lu+LwbnTx2XJBAdvoRA1JdaTtQy7ksdJ+rfcd/6Nvau78t8zS+PJurLNER9uQGi/h1I1JcBi/7yBE5y0V0fGfMVlk9TF/lNA03UFwE1RDbeKy3Ph6yXKwnTLTBuClGrOkRPssjaucpyopYaXkXQ8Eqghlc7QtTI/nWN5T1H5uQaQs+5lkR+1xKJWmmB3kPIerqOpOt1vq4m6XJhFWws6rg+gejw9QS6bGQ5Xcq4GxHoUucrYoM0Imxi4Maj59tWDZFx3+DIMHEdMOYbLR8mZKw3EIaJmywfvmVebiL3nFg1bEwaHBr/B4PDAtLgcHMC0eGbCYPDLZYPDjLuWxwZHGQh30LYxMCNR8+3rRoi427iyODQGBhzU8sHBxlrE8LgcKvlg4PMy63knhOrhnmkwSHPwDP834DP8POBe8jksJSfwBmWChKIDhcQhqVCy4clGXehoWEpFNvh5fm+oh8d5gFzhMx3keU3UNnoigg30IjlN1AZc4QQdzPSTa+Z5isgaE3YOUPs8ULC0IPc77dZXvdSw9sIGhYBNbzdEdBC3nOaW36fkDlpTuiXLUj9sgXxca/SAr2HkPV0B2kPobW8Axiz8q1e0Neqf9435fmeKnvPdwfOdwXOdwbOdwTOtwfOtwXOtwbOtwTONwfONwXONwbONwTO1wfO1wXO1wbO1wTOVwfOVwXOVwbOVwTOlwfOlwXOlwbOlwTOFwfOFwXOfw+cLwycLwic/xY4/zZwPj1wPi1w/k3g/OvA+dTA+ZTA+VeB8y8D55MD55MC518EzicGzicEzscHzj8PnP8aOJ8fOJ8XOP8lcP5z4Hxu4HxO4PynwPmPgfPZgfNZgfMfAuffB85nBs5nBM6/88/Vxm0p9lgrYa2F3SnsLmF3C2sj7B5hbYW1E9Ze2L3COgjrKKyTsPuE3S+ss7AuwroKe0BYN2HdhT0orIewnsJ6Cest7CFhDwvrI+wRYX2F9RP2qLDHhPUX9riwJ4Q9KewpYU8Le0bYs8KeE/a8sBeEvej38XLF9jLjH5qI5rtbaRU4n138z38WD/y7C8rs/b8v9M9fEtd9WdgrCX8+gTL1XfVXSH25GNbP9KAWr/qfLbyW4AuibrLy/7ArygH099JfAdwg/vxeeiTyKvBm85qhITUU2+EhY349cC0vJyM9PZwh/72cwpCXWViQnpOeXpifGSoI5RWkF+VmermRzPTMjILCgnxxzTwvEorkFeRGcv70y+Qnma+TPskckEB0eADhk8w3LP8kU8b9RsJegUHXpXwa8ZrvK/q6b5KI6M2Ev9/h0PlDNkW2ry8Bfa3nX+ctcc2Bwt4W9o6wQcIGC3tX2HvChggbKux9YR8IGyZsuLAPhX0kbISwkcJGCftY2GhhY4R9IuxTYWOFjRP2mbDPhY0XNkHYRGFf+HfnYM7fStg7Faq1gZq1tzVr72jWBmnWBmvW3tWsvadZG6JZG6pZe1+z9oFmbZhmbbhm7UPN2keatRGatZGatVGatY81a6M1a2M0a59o1j7VrI3VrI3TrH2mWftcszZeszZBszZRs/ZFwt8/oS7p//NM/5+h2I599mysffYt2GAZ8gYC/ZrXgDNYRucilphlLt6G6PdnXt+J/Vrpvn7eIGAu5tuci8y//PQGxxZzKBCz924s10rfRz/vPWAufrUzF6EoP70hhxhzduRvMXtDD+1aORr9vPeBufjNtlzkaP30Pjj4mMP/ELM37GCvFf5H/bzhwFwssCcX6f/ip/fhwcQc/teYvY8O/FoF+9HPGwHMxUIbchHer5/eyAOLOXQAMXujDuRaoQPSz/sYmIvf/9tcZB2gn97o/cWcecAxe2P+9VqZkYPQz/sEmItF/1Uuwgflp/fpP8ecc5Axe2P/4Vq5kYPWzxsHzMVi87kIHYKf3me6mEOHFLP3+d+v5R2ift54YC6WmMxF4SH76U3YN+aMGGL2JgaulR6JST/vC2AulhrKRSi2wwN+PuAB+dYL8lmsuVjmSC6AHOQB53hvITAXyx3JBXDe84DzircYmIsVjuQCeF/zgH3ZWwbMxUpSLtBfoADuXw9Yfx5SP1m/pwqr51/vC/+Z2AT/Gdnn/jOzcf4ztE/9Z2pj/GdsH/vP3Eb6z+A+8p/JDfef0X3gP7Mb6j/De89/pjfYf8b3jv/MTz4HkM8Vog/0N4+Rc8+kBFQeMoy+Yhbn975f6picQHRYXhx93S+BxcCK+8vApgBd1+grZr+AFVuhsVfMfuVrPsX/YsBfT2q/8oswuDYlgf+KWUTXUk9cvwIW/RRwchkb/KsE/DeNvkrgTDDou91EYK6nwmLOzjR5t5tKutt9nUB0+GvC3e4by+92Mu5vHL/bTYQVW26Bxl3K3W6ar/n06LvdNM3dbrqBu91E4N1uGrDop5OSi+76yJi/xXVPr1gx/J34S79pFAfXIBINvgNPC+imJXP8HWFKsj1uVTvouGc4Mh0ia3wmuU+EYjs8mZOZhD7xHVDD7x3YL98T9ssP4AldzSo/BHxlaYGup5nAeppF0nVWwt/JDd2bJgB1mA3TIbPIJLnOBudPHT8mEB3+kUCuP1lOrjLunxwn1wmwYstP17hLIdc5vuZzo8l1joZc5xogV0TXUuQ6B1j0c0nJRXd9ZMw/Wz6RzvKbBvp9frOAGiIb7y+W50PWyy+E6RYYN+WvsVUdoidZZO3Ms5yMpIbzCBr+AtRwviOfSiD716+W9xyZk18JPec3Evn9RiRqpQV6DyHraQFJ1wUGiBr57fuFMB3C6UZ//oxE1L8nEB3+nUDUiywnahn3IseJejys2HKKNO5SiHqxr/mSaKJerCHqJQaIGtG1FFEvBhb9ElJy0V0fGfNSy6epBX7TQBP1AqCGyMa7zPJ8yHpZRphugXFTiFrVIXqSRdbOcsuJWmq4nKDhMqCGKxwhamT/Wml5z5E5WUnoOatI5LeKSNRKC/QeQtbTapKuqw0Q9edAHdbAdCgy+oLYNeD8qWNtAtHhtQSiXmc5Ucu41zlO1J/Dis2LaNylEPV6X/MN0US9XkPUGwwQNaJrKaJeDyz6DaTkors+MuaNlk9Tq/2mgSbq1UANkY13k+X5kPWyiTDdAuOmELWqQ/Qki6ydzZYTtdRwM0HDTUANtzhC1Mj+tdXyniNzspXQc7aRyG8bkaiVFug9hKyn7SRdtxsg6s+AOuyA6ZBhlKh3gPOnjp0JRId3Eoh6l+VELePe5ThRfwYrtgJjRL3b13xPNFHv1hD1HgNEjehaiqh3A4t+Dym56K6PjLlYot3T1Ha/aaCJejtQQ2TjPczyfMh6kT6ip1tg3BSiVnWInmSRtVOcrGEotuOPvSx9RGsYrJ1YNSwB1lAd6HsAsn+VtLznyJyUJPScUsBcB2eoUok8olZaoPcQsp5Kk3QtncgnauT778vAdMgz+r7LMuD8qaNsItHhson465YD3lhYcZdL3Csw6LpGiXocDLqyjb3vsryveYXEYvvSc/nEvxO1/JfYRD0OSNTlgUVfIZGTXHTXR8Zc0fJpqrTfNNBEXRqoIbLxVrI8H7JeKhGmW2DcFKJWdYieZJG1U9lyopYaViZoWAmoYRVHiBrZv6pa3nNkTqoSek4CifwSiESttEDvIWQ9JZJ0TTRA1GOBRF0NpkN6rkmirgbOnzqqJxIdrk4g6hqWE7WMu4bjRD0WRtSFYY27FKJO8jVPjibqJA1RJxsg6rFAok4CFn1yIie56K6PjDnF8mkq0W8aaKJOBGqIbLypludD1ksqYboFxk0halWH6EkWWTs1LSdqqWFNgoapQA1rOULUyP6VZnnPkTlJI/Sc2iTyq00kaqUFeg8h66kOSdc6Boj6UyBR14XpkJ9jkqjrgvOnjnqJRIfrEYj6cMuJWsZ9uONE/SmMqDNzNO5SiLq+r/kR0URdX0PURxgg6k+BRF0fWPRHJHKSi+76yJiPtHyaquM3DTRR1wFqiGy8R1meD1kvRxGmW2DcFKJWdYieZJG108ByopYaNiBoeBRQw4aOEDWyfx1tec+ROTma0HOOIZHfMUSiVlqg9xCyno4l6XqsAaL+BEjUx8F0yDL6re/jwPlTx/GJRIePJxD1CZYTtYz7BMeJ+hMYUecb+9b3ib7mJ0UT9Ykaoj7JAFF/AiTqE4FFf1IiJ7noro+MOWT5NHWs3zTQRH0sUENk4/Usz4esF48w3QLjphC1qkP0JIusnXTLiVpqmE7Q0ANqmOEIUSP7V6blPUfmJJPQc7JI5JdFJGqlBXoPIespm6RrtgGiHgMk6jDuCU2WSaIOg/OnjpxEosM5BKLOtZyoZdy5jhP1GBxR52vcpRD1yb7mp0QT9ckaoj7FAFGPARL1ycCiPyWRk1x010fGfKrl01S23zTQRJ0N1BDZeE+zPB+yXk4jTLfAuClEreoQPckia+d0y4laang6QcPTgBqe4QhRI/vXmZb3nD9yQug5Z5HI7ywiUSst0HsIWU9nk3Q92wBRjwYS9Tm4eTLbJFGfA86fOs5NJDp8LoGoz7OcqGXc5zlO1KNx3/rO07hLIerzfc0viCbq8zVEfYEBoh4NJOrzgUV/QSInueiuj4z5QsunqbP9poEm6rOBGiIb70WW50PWy0WE6RYYN4WoVR2iJ1lk7VxsOVFLDS8maHgRUMNLHCFqZP+61PKeI3NyKaHnXEYiv8uIRK20QO8hZD1dTtL1cgNE/TGQqK+A6ZBj9NezrgDnTx1XJhIdvpJA1FdZTtQy7qscJ+qPYUQdNvbrWVf7ml8TTdRXa4j6GgNE/TGQqK8GFv01iZzkors+MuZrLZ+mLvebBpqoLwdqiGy811meD1kv1xGmW2DcFKJWdYieZJG1c73lRC01vJ6g4XVADRs5QtTI/nWD5T1H5uQGQs+5kUR+NxKJWmmB3kPIerqJpOtNBoh6FJCoGztK1I3B+VPHzYlEh28mEPUtlhO1jPsWx4l6lINE3cTXvGk0UTfREHVTA0Q9CkjUTYBF39QRokbGfKvl09RNftNAE/VNQA2RjTfP8nzIeskjTLfAuClEreoQPckiayffcqKWGuYTNMwDaljgCFEj+1eh5T1H5qSQ0HOKSORXRCRqpQV6DyHrKULSNWKAqEcCiboZTIcso+/6bgbOnzpuSyQ6fBuBqG+3nKhl3Lc7TtQjYUSdZ+xd3819zVtEE3VzDVG3MEDUI4FE3RxY9C0SOclFd31kzHdYPk1F/KaBJuoIUENk421peT5kvbQkTLfAuClEreoQPckia6eV5UQtNWxF0LAlUMPWjhA1sn/daXnPkTm5k9Bz7iKR311EolZaoPcQsp7uJul6twGiHgEk6jY4oi40SdRtwPlTxz2JRIfvIRB1W8uJWsbd1nGiHoEj6gyNuxSibudr3j6aqNtpiLq9AaIeASTqdsCib5/ISS666yNjvtfyaepuv2mgifpuoIbIxtvB8nzIeulAmG6BcVOIWtUhepJF1k5Hy4laatiRoGEHoIadHCFqZP+6z/KeI3NyH6Hn3E8iv/uJRK20QO8hZD11Juna2QBRfwQk6i4wHdKNPqPuAs6fOromEh3uSiDqBywnahn3A44T9Ucwoi409oy6m69592ii7qYh6u4GiPojIFF3AxZ990ROctFdHxnzg5ZPU539poEm6s5ADZGNt4fl+ZD10oMw3QLjphC1qkP0JIusnZ6WE7XUsCdBwx5ADXs5QtTI/tXb8p4jc9Kb0HMeIpHfQ0SiVlqg9xCynh4m6fqwAaL+EEjUfWA6ZGSYJOo+4Pyp45FEosOPEIi6r+VELePu6zhRfwgj6oJCjbsUou7na/5oNFH30xD1owaI+kMgUfcDFv2jiZzkors+MubHLJ+mHvabBpqoHwZqiGy8/S3Ph6yX/oTpFhg3hahVHaInWWTtPG45UUsNHydo2B+o4ROOEDWyfz1pec+ROXmS0HOeIpHfU0SiVlqg9xCynp4m6fq0AaIeDiTqZ2A6FBl9Rv0MOH/qeDaR6PCzBKJ+znKilnE/5zhRD4cRtWfsGfXzvuYvRBP18xqifsEAUQ8HEvXzwKJ/IZGTXHTXR8b8ouXT1NN+00AT9dNADZGN9yXL8yHr5SXCdAuMm0LUqg7Rkyyydl62nKilhi8TNHwJqOErjhA1sn+9annPkTl5ldBzXiOR32tEolZaoPcQsp5eJ+n6ugGiHgYk6gEwHTKNEvUAcP7U8UYi0eE3CET9puVELeN+03GiHgYj6nxjRP2Wr/nAaKJ+S0PUAw0Q9TAgUb8FLPqBiZzkors+Mua3LZ+mXvebBpqoXwdqiGy871ieD1kv7xCmW2DcFKJWdYieZJG1M8hyopYaDiJo+A5Qw8GOEDWyf71rec+ROXmX0HPeI5Hfe0SiVlqg9xCynoaQdB1igKg/ABL1UJgO4VyTRD0UnD91vJ9IdPh9AlF/YDlRy7g/cJyoP4ARdU5Y4y6FqIf5mg+PJuphGqIeboCoPwAS9TBg0Q9P5CQX/jkqMOYPLZ+mhvhNA03UQ4AaIhvvR5bnQ9bLR4TpFhg3hahVHaInWWTtjLCcqKWGIwgafgTUcKQjRI3sX6Ms7zkyJ6MIPedjEvl9TCRqpQV6DyHraTRJ19EGiPp9IFGPwT2hMUrUY8D5U8cniUSHPyEQ9aeWE7WM+1PHifp9GFFnGiPqsb7m46KJeqyGqMcZIOr3gUQ9Flj04xI5yUV3fWTMn1k+TY32mwaaqEcDNUQ23s8tz4esl88J0y0wbgpRqzpET7LI2hlvOVFLDccTNPwcqOEER4ga2b8mWt5zZE4mEnrOFyTy+4JI1EoL9B5C1tMkkq6TDBD1UCBRT8Y9ow6ZJOrJ4Pyp48tEosNfEoj6K8uJWsb9leNEPRRG1LkhjbsUop7iaz41mqinaIh6qgGiHgok6inAop+ayEkuuusjY/7a8mlqkt800EQ9CaghsvF+Y3k+ZL18Q5hugXFTiFrVIXqSRdbONMuJWmo4jaDhN0ANpztC1Mj+9a3lPUfm5FtCz/mORH7fEYlaaYHeQ8h6mkHSdYYBoh4CJOqZuHnSM0nUM8H5U8f3iUSHvycQ9Q+WE7WM+wfHiXoIjKizIxp3KUQ9y9d8djRRz9IQ9WwDRD0ESNSzgEU/O5GTXHTXR8b8o+XT1Ay/aaCJegZQQ2Tj/cnyfMh6+Ykw3QLjphC1qkP0JIusnTmWE7XUcA5Bw5+AGs51hKiR/etny3uOzMnPhJ7zC4n8fiEStdICvYeQ9TSPpOs8A0T9HpCo5+O+82j017Pmg/Onjl8TiQ7/SiDq3ywnahn3b44T9Xu4N5MZ+/WsBb7mC6OJeoGGqBcaIOr3gES9AFj0CxM5yUV3fWTMv1s+Tc3zmwaaqOcBNUQ23kWW50PWyyLCdAuMm0LUqg7RkyyydhZbTtRSw8UEDRcBNVziCFEj+9dSy3uOzMlSQs9ZRiK/ZUSiVlqg9xCynpaTdF1ugKjfBRL1CpgORUafUa8A508dKxOJDq8kEPUqy4laxr3KcaJ+F/frWcaeUa/2NV8TTdSrNUS9xgBRvwsk6tXAol+TyEkuuusjY15r+TS13G8aaKJeDtQQ2XjXWZ4PWS/rCNMtMG4KUas6RE+yyNpZbzlRSw3XEzRcB9RwgyNEjexfGy3vOTInGwk9ZxOJ/DYRiVppgd5DyHraTNJ1swGiHgwk6i0wHSJZJol6Czh/6tiaSHR4K4Got1lO1DLubY4T9WAYUYfyNe5SiHq7r/mOaKLeriHqHQaIejCQqLcDi35HIie56K6PjHmn5dPUZr9poIl6M1BDZOPdZXk+ZL3sIky3wLgpRK3qED3JImtnt+VELTXcTdBwF1DDPY4QNbJ/Fatmd8+ROZE+ovf0Ybi49yG/w6rxiFppgd5DyHoqTtK1eDU+UQ8CEnUJmA65Rr/1XQKcP3WUrEZ0uGQ1/HVLVbObqGXcpartFRh0XaNEPQj3d9TGvvVd2te8TLVi+9Jz6Wp/J2r5L7GJehCQqEsDi75MNU5y0V0fGXNZy6ep4n7TQBN1caCGyMZbzvJ8yHopR5hugXFTiFrVIXqSRdZOebKGodiOP/ZyeYKG5YAaVgBrqA70PQDZvypa3nNkTioSek4lEvlVIhK10gK9h5D1VJmka2UDRP0OkKirwHSIGH3XdxVw/tRRtRrR4aoEok6wnKhl3AmOE/U7uG99G3vXd6KvebVook7UEHU1A0T9DpCoE4FFX60aJ7noro+Mubrl01Rlv2mgiboyUENk461heT5kvdQgTLfAuClEreoQPckiayfJcqKWGiYRNKwB1DDZEaJG9q8Uy3uOzEkKoeekksgvlUjUSgv0HkLWU02SrjV9XU3S5dsJ2FjUUasa0eFaBLpMs5wuZdxpBLrU+YrYIGmETQzcePR826ohMu7ajgwTNYEx17F8mJCx1iYME3UtH75lXuqSe06sGtYjDQ71/oPBYSBpcDi8GtHhwwmDQ33LBwcZd31HBgdZyPUJmxi48ej5tlVDZNxHODI41APGfKTlg4OM9QjC4HCU5YODzMtR5J4Tq4YNSINDAwPP8N8CPsNvCNxDJoelhtU4w9LR1YgOH00Ylo6xfFiScR9jaFgKxXZ4DXxf0Y8OGwBzhMz3sZbfQGWjO5ZwAz3O8huojPk4QtzHk256x2u+AoLWhJ0zxB4/hjD0IPf7CZbXvdTwBIKGxwI1PNER0ELec06y/D4hc3ISoV+GSP0yRHzcq7RA7yFkPXmkPYTW0gPP1upA7/WXgUCYHojZy8lITw9nyH8vpzDkZRYWpOekpxfmZ4YKQnkF6UW5mV5uJDM9M6OgsCBfXDPPi4QieQW5kZw/r2USCNNJQJhRjehwBgEIMy0HQhl3JgEIZbGVLmbmS90vJ3AaWLQmsW7AYCFnBT+ZQt8pM4ETQvBOmfUvd8r9+FywH3H+2ChZh3Cn3J/oWcANmE2aQOR1ux5iLXhCuwIvFAnlpofyQuGC7HB+bmF6fk5eJCOSlVGYcai67q/YkbqGSbqGD13X/xf1mkPSNed/vF5zSbrm+rrKm2fxYmYmNeTNM3izP9kfKk6R9wzGDS6LMK1lWf6x1qFujtBBxB2rj6da/rGWLMxTCR9PnEZqCqf9S7MNxXZ4p5C0OJ2kxelELWQjZGixs4HdPYW1H3b9t3EX7Mc/Wu3vBsetDvRf8QLr0gPm2kPqJwepMsX0n0IUO0g991dPwWsy7lkoTYJD5Rn/9ilEKLbDO5V0Ezjj0D+v9/b335E+n0FoCsUbcppCyYPM2cEMb7HGfGY1OxsMMhfBujwzMJwcan72pzkyP2cFny1kZIi9URj2IoWRjKxwbnq+l52RnR3JjISzczILI1mZeYXhIi8zLyM9tygcing5RUXhrIyCcHYkt7AgOxJs2l5hRkZmYW5+gZeVnp2XH8opzMgLRTLDGQL4CzPChYUZOdnZeRkZhdk5kZxcAekC/XNCWeFwbig7PSM3nZWfswJ0jbop7O/TnOA1XbkpnO3iTeFs8k3hbMJNoaQlN4V/LOLwHy9piSCbzjmW3hRKkprOOYCbwv4+2kTm51xLbwqs/Jz7/+gj1/P8j1zP133kGort+MfnHchnlbFeC/jxLeWbUUpD9DeaWRrGeq0LLM+H3DAXEG7sF5KGnAuJH3+eT9LiIpIWF5E/CmZoURo88KH9Y+2HMv9t3Pv9KJhV+2VJAz76o2BgXXrAXHtI/f6/fBR8Hon6L2ZS/wWkm8DFROqXPl9MaAoVHfko+ALgIHhJNTsbTEUSVV5i4KNgZH4uBVJ/sGnHSv2s/Fyqyc/Bfqdmfx/9IvNzGal/XgbQYX+fTiF1uJykw+WO1cMVJB2ucKweriTpcOUBPCqyebDTuAur4+DQeJWLQ+NV5KHxKsLQWNnQ0Bjjt+KhTe5q4LWQQ2Nl0lBy9QEMjbF+ux6Zn2uq4QY95NDIys81gJvjfg7vC+Dfjl4L6585lC9iZ/qfuqGfKCFr/DrLn2DIHF9HuN9cT7r3yuuW9f/3qcX+fqD+m+p6aL0HlrPfx0boQdKVoq1q+eMVGXMjQtwJlnyiuJ9jn8KMNeYbgI0ZWDceMhfkJvnXY4r/xSZ5w/9qk7zR8j/PkzHfSIj7JtJEc1O1vW9bY/y5p25CDsV2eMgJubHl9SSJqjGhnm52YB/dTIj7FtI+uuVf9lEotoPWU6o3/N+sgRqGvtcSq59NgEMiMNdeDdInVE3idE33sSl7cERQZlPCpk9xhDKbOrDpY/7lQ0ca8K3AXADrz0uNU7oTzfZWZLN19a44zIFE5cUTFfI+dCBR+fFEhbwRDiSqIJ6okDfKgUQVxhMV8kY7kKiieKJC3icOJCoST1TIG+tAoprFExXyPnMgUbfFExXyxjuQqNvjiQp5Ex1IVPN4okLeJAcS1SKeqJD3pQOJuiOeKJGo4vb72DKeqJA31YEd1SqeKDH1ObCjWscTFfKmObCj7ownKuR960Ci7oonKuTNcCBRd8cTFfK+dyBRbeKJCnmzHEjUPfFEhbwfHUhU23iiQt4cBxLVLp6okPezA4lqH09UyJvnQKLujScq5P3qQKI6xBMV8hY4kKiO8USFvOEOfNbXKZ6okLfIgR11XzxRIW+JA4m6P56okLfMgUR1jicq5K1wIFFdkImS79BUf5SqnD08KmnFwQEAX3Lhof/Qn5GwPAd8zHfAxwIHfCx0wMciB3yMOOBjMwd8vM0BH293wMfmDvjYwgEf73DAx5YO+NjKAR9bO+DjnQ74eJcDPt7tgI9tHPDxHgd8bOuAj+0c8LG9Az7e64CPHRzwsaMDPnZywMf7HPDxfgd87OyAj10IPhaD+pgRLqY5MNdO93jX3vvL5IcFrtlV6P2AsG7Cugt7UFgPYT2F9RLWW9hDwh4W1kfYI8L6Cusn7FFhjwnrL+xxYU8Ie1LYU8KeFvaMsGeFPSfseWEvCHtR2EvCXhb2irBXhb0m7HVhA4S9IexNYW8JGyjsbWHvCBskbLCwd4W9J2yIsKHC3hf2gbBhwoYL+1DYR8JGCBspbJSwj4WNFjZG2CfCPhU2Vti4an9q8Fk1XxT11kYpStmotQc0a900a901aw9q1npo1npq1npp1npr1h7SrD2sWeujWXtEs9ZXs9ZPs/aoZu0xzVp/zdrjmrUnNGtPatae0qw9rVl7RrP2rGbtOc3a85q1FzRrL2rWXtKsvaxZe0Wz9ppm7XXN2gDN2huatTc1a29p1gZq1t7WrL2jWRukWRusWXtXs/aeZm2IZm2oZu19zdoHmrVhmrXhmrUPNWsfadZGaNZGatZGadY+1qyN1qyN0ax9oln7VLM2VrM2TrMmm1+9Yvse6JdOBh/+WfSWb69rNc6wURysH/BhoveAIzEDH0563RyJGfiw0+vuSMzAh6feg47EDHwY6/VwJGbgw12vpyMxAx8We70ciRn48Nnr7UjMwIfZ3kOOxAx8OO497EjMwIftXh9HYgY+vPcecSRm4JcBvL6OxAz8coHXz5GYgV9W8B51JGbglx+8xxyJGfhlCq+/IzEDv5zhPe5IzMAve3hPOBIz8Msj3pOOxAz8Mor3lCMxA7/c4j3tSMzAL8t4zzgSM/DLN96zjsQM/DKP95wjMQO/HOQ970jMwC8beS84EjPwy0vei47EDPwylPeSIzEDv1zlvexIzMAva3mvkGI+LCrmUGyH9yrgWXZRRB4FefIPccsF8nJYwE+W/4xn3mgf4388i/Ex/sezGB/jfzyL8TH+x7MYH+N/PIvxMf7Hsxgf4388i/Ex/sezGB/jfzyL8TH+x7MYH+N/PIvxMf7Hsxgf4388i/Ex/sezGB/jfzyL8dHFP57FXDeHpunrDuR9gAM+vuGAj2864ONbDvg40AEf33bAx3cc8HGQAz4OdsDHdx3w8T0HfBzigI9DHfDxfQd8/MABH4c54ONwB3z80AEfP3LAxxEO+DjSAR9HOeDjxw74ONoBH8c44OMnDvj4qQM+jnXAx3HEz/lwfqan677X+LnwfbywCcImCvtC2CRhk4V9KewrYVOETRX2tbBvhE0TNl3Yt8K+EzZD2Exh3wv7QdgsYbOF/SjsJ2FzhM0V9rOwX4TNEzZf2K/CfhO2QNhCYb8LWyRssbAlwpYKWyZsubAVwlYKWyVstbA1wtYKWydsvbANwjYK2yRss7AtwrYK2yZsu7AdwnYK2yVst7A9wopV9/WoXmzflzBJUaJfzDReszZBszZRs/aFZm2SZm2yZu1LzdpXmrUpmrWpmrWvNWvfaNamadama9a+1ax9p1mboVmbqVn7XrP2g2ZtlmZttmbtR83aT5q1OZq1uZq1nzVrv2jW5mnW5mvWftWsLdSs/a5ZW6RZW6xZW6JZW6pZW6ZZW65ZW6FZW6lZW6VZW61ZW6NZW6tZW6dZW69Z26BZ26hZ26RZ26xZ26JZ26pZ26ZZ265Z26FZ26lZ26VZ261Z26NZk80tek02unrF9j3UTeFM/5+x/hEC8Avt3uekGys6ZuQL4cY7EjPyhXATHIkZ+UK4iY7EjHwh3BeOxIx8IdwkR2JGvhBusiMxI18I96UjMSNfCPeVIzEjXwg3xZGYkS+Em+pIzMgXwn3tSMzIF8J940jMyBfCTXMkZuQL4aY7EjPyhXDfOhIz8oVw3zkSM/KFcDMciRn5QriZjsSMfCHc947EjHwh3A+OxIx8IdwsR2JGvhButiMxI18I96MjMSNfCPeTIzEjXwg3x5GYkS+Em+tIzMgXwv3sSMzIF8L94kjMyBfCzXMkZuQL4eY7EjPyhXC/kmI+LCrmUGyH91u12PVTL4Rj+rkA5meOx6wh4B9cegsd2TfAP+D0fnckZuAfhHqLHIkZ+Aem3mJHYgb+waq3xJGYgX8A6y11JGbgH9R6yxyJGfgHut5yR2IG/sGvt8KRmIF/QOytdCRm4B8ke6sciRn4B87eakdiBv7BtLfGkZiBf4DtrXUkZuAfdHvrHIkZ+Afi3npHYgb+wbm3wZGYgX/A7m10JGbgH8R7mxyJGfgH9t5mR2IG/sG+t8WRmIEvAPC2OhIz8IUC3jZHYga+oMDb7kjMwBceeDsciRn4AgVvpyMxA1/I4O1yJGbgCx683Y7EDHxhhLfHkZiBL6Dw5N8No2KWP6hVvtiff38sj8MCMRcLrAW1CMV2xH9QC+Rj/Ae1MD7Gf1AL42P8B7UwPsZ/UAvjY/wHtTA+xn9QC+Nj/Ae1MD7Gf1AL42P8B7UwPsZ/UAvjY/wHtTA+xn9QC+Nj/Ae1MD7Gf1AL42P8B7UQ143/oBbDx/gPamF8jP+gFsbH+A9qYXyM/6AWxsf4D2phfIz/oBbGx/gPamF8jP+gFsbH+A9qYXyM/6AWxsf4D2phfIz/oBbGx/gPamF8jP+gFsZHV35Qi3ht77CAtuqaxasXK1ZCWElhpYSVFlZG/s6LsHLCygurIKyisErCKgurIqyqsARhicKqCasurIawJGHJwlKEpQqrKayWsDRhtYXVEVZX/maMsMOF1Rd2hLAjhR0lrIGwhsKOFnaMsGOFHSfseGEnCDtR2EnCQsI8YenCMoRlCssSli0sLCxHWK6wk4WdIuxUYacJO13YGfL7qMLOiv6RruKaH7gpoVkrqVkrpVkrrVkro1krq1krp1krr1mroFmrqFmrpFmrrFmrolmrqllL0Kwlataqadaqa9ZqaNaSNGvJmrUUzVqqZq2mZq2WZi1Ns1Zbs1ZHs1ZXs1ZPs3a4Zu1kzdopmrVTNWunadZO16ydoVk7U7N2lr8WPIr7/zzT/6dNP+xUvDqnwaNjRv6wUwlHYkb+sFNJR2JG/rBTKUdiRv6wU2lHYkb+sFMZR2JG/rBTWUdiRv6wUzlHYkb+sFN5R2JG/rBTBUdiRv6wU0VHYkb+sFMlR2JG/rBTZUdiRv6wUxVHYkb+sFNVR2JG/rBTgiMxI3/YKdGRmJE/7FTNkZiRP+xU3ZGYkT/sVMORmJE/7JTkSMzIH3ZKdiRm5A87pTgSM/KHnVIdiRn5w041HYkZ+cNOtRyJGfnDTmmOxIz8YafajsSM/GGnOo7EjPxhp7qOxIz8Yad6jsSM/GGnw0kxo78UVL967PqZ+GGnI2B+7vvDTmg/j3Qk70c54mcDR/xs6IifRzvi5zGO+HmsI34e54ifxzvi5wmO+HmiI36e5IifIUf89BzxM90RPzMc8TPTET+zHPEz2xE/w474meOIn7kkP0vG6qe37/88OTY/97naKbHGHLjaqQBeV5/LpDW0NBehfaM+DVEz/tVOx9TfH1c7A5iL2nbnIqSiPhO3f72zgNcC1rIXzEVMn4kVRXLljwpUKrb3M1VKbsi1HYrlsLdmGH9s+VfPCub77Op//vOc6D8KlP+HeVFr8l+qVyxeKLE21HouNNSogj7EmNP9mL2zgfqdA9y0rFwUB+cCqd+5mmvlhwoKs7z87MKwV5SXlVNQkJvheel52XnZ+ek5kaL8LC8nK0dcsyAvPUf859LzCryiUF52kbyJVC62dxgPHugB/Vxggw36e151osPy4ujrng8sBlbc51ffKzDoulpfEc1E+orasOq6yBxdAC58dUOX1z1c/NPkJHgy8AZ/CvAGfyrwpnJadc5NBbSftJPghf5+vSh6ErxQMwlexJwEfSdPA04fFwI340WBa6UXZhWFcnPyc9Lz8zLC+ZkZ+bm5eeK62Z6XEylMDxVmpkeyvOzsgtyi3IiXEcnPKsrLzsrLzS784+5ZmObI9IHU72JHp4+LSdPHJdWJDl9CmD4utXz6kHFf6sj0cZHvK3r6QOboMtL0cdl/MH2Avsv6x9Vg3xH1sN+9ZL7cH5AL7fRxub9fr4iePi7XTB9XGPgcyoVCiXVj13fkc6gu1XCT4OXAxngFEBnqOzIJIvW70tFJ8ErSJHhVdaLDVxEmwastnwRl3Fc7Mgle4fuKngSRObqGNAle8x9MgvcCb/AdgDd45F/VdXJwErzW36/XRU+C12omwesMTIIuFEqsG/tIRybBTsBJ8FpgY7wOOAke6cgkiNTvekcnwetJk2Cj6kSHGxEmwRssnwRl3Dc4Mgle5/uKngSRObqRNAne+B9MgvcAb/BtgTd45PtS2js4Cd7k79fG0ZPgTZpJsLGBSdCFQol1YzdwZBJsD5wEbwI2xsbASbCBI5MgUr+bHZ0EbyZNgrdUJzp8C2ESbGL5JCjjbuLIJNjY9xU9CSJz1JQ0CTb9DybBO4E3+LuAN3jkmzDbODgJ3urv17zoSfBWzSSYZ2ASdKFQYt3YRzsyCbYBToK3AhtjHnASPNqRSRCpX76jk2A+aRIsqE50uIAwCRZaPgnKuAsdmQTzfF/RkyAyR0WkSbDoP5gE7wDe4FsCb/DI3zho7eAkGPH3a7PoSTCimQSbGZgEXSiUWDf2sY5Mgq2Bk2AE2BibASfBYx2ZBJH63eboJHgbaRK8vTrR4dsJk2BzyydBGXdzRybBZr6v6EkQmaMWpEmwxX8wCd4GvMHfDrzBI3+9roWDk+Ad/n5tGT0J3qGZBFsamARdKJRYN/bxjkyCLYCT4B3AxtgSOAke78gkiNSvlaOTYCvSJNi6OtHh1oRJ8E7LJ0EZ952OTIItfV/RkyAyR3eRJsG7/oNJsBB4gy8C3uCRv0vezMFJ8G5/v7aJngTv1kyCbQxMgi4USqwb+0RHJsFmwEnwbmBjbAOcBE90ZBJE6nePo5PgPaRJsG11osNtCZNgO8snQRl3O0cmwTa+r+hJEJmj9qRJsL3JSdC/KecBb8r5wOmtoBpuiOnq4CR4r79fO0RPgvdqJsEOzEnQoUKJdWOHbJ8ENQUd6yR4L7AxdgBOgiFHJkGkfh0dnQQ7kibBTtWJDnciTIL3WT4Jyrjvc2QS7OD7ip4EkTm6nzQJ3u9PgvJcDQDqJh/86Cf4QDD4NbHgHw8E/6Q0+KIReX5F4HxF+b3nA8sd+vlFgWueEzhfGbj+qsD56sD5msD52sD5usD5+sD5Bv+8s/jvdBHWVdgDwroJ6y7sQWE9qv99kkbvqx7AOlDDQk9xzV7Cegt7yC+CYI3I/3vZYvuu9dKs9dasPeSvBQ/0x1U9gPusJ+Baf/5+csjrBfQrnTSklIjKRSwxy1z0huj3Z14fAg55SP3Ye/xBwh5/WFyzj7BHhPXV7PGHNXu3j2btEc1aXwN7/EHgXnoYuMf7AP3KdGSPPwLc432BezzToT3enbDH+4lrPirsMWH9NXu8n2bvPqpZe0yz1t/AHu8O3Ev9gHv8UaBf2Y7s8ceAe7w/cI9nO7THuxH2+OPimk8Ie1LYU5o9/rhm7z6hWXtSs/aUgT3eDbiXHgfu8SeAfuU4ssefBO7xp4B7PMehPf4AYY8/La75jLBnhT2n2eNPa/buM5q1ZzVrzxnY4w8A99LTwD3+DNCvkx3Z488C9/hzwD1+skN7vCthjz8vrvmCsBeFvaTZ489r9u4LmrUXNWsvGdjjXYF76XngHn8B6NepjuzxF4F7/CXgHj/VoT3ehbDHXxbXfEXYq8Je0+zxlzV79xXN2quatdcM7PEuwL30MnCPvwL063RH9virwD3+GnCPn+7QHu9M2OOvi2sOEPaGsDc1e/x1zd4doFl7Q7P2poE93hm4l14H7vEBQL/OdGSPvwHc428C9zhSP7WnXw3oiLp22fj14teLXy9+vfj14teLXy9+vfj1bL6eF9cvfr349eLXi18vfr349eLX+9++Xl4Ye73MPOz1cgqx1ysIqc+7by6x97PvxoHzmwLnNwbObwicNwqcXx84vy5wfm3g/JrA+dWB86sC51cGzq8InF8eOL8scH5p4PySwPnFgfOLAucXBs4vCJyfHzg/L3B+buD8nMD52YHzswLnZwbOzwicnx44Py1wvrTk3vMlgfPFgfNFgfPfA+cLA+cLAue/Bc5/DZzPD5zPC5z/Ejj/OXA+N3A+J3D+U+D8x8D57MD5rMD5D4Hz7wPnMwPnMwLn3wXOvw2cTw+cTwucfxM4/zpwPjVwPiVw/lXg/J7Se8/bBM7vDpzfFTi/M3DeOnDeKnDeMnB+R+C8ReC8eeD89sD5bYHzZoHzSOC8KHBeGDgvCJznB87zAue3Bs6bBs6bBM5vCZzfHDhvHDi/KXB+Y+D8hsB5o8D59YHz6wLnTwWevQW/Fxv83mzwe7X9A+fB78oHv0sf/K5938B58O9ngn9fE/z7m4cC58G/qQv+zV3wb/LeDJwHnyMGnzMGn0O+FjgPfrcg+N2D4HcTXgqcB79vFPw+UvD7Ss8FzoPfQQx+R1F9h/H9Yn8eb4n/PVDY28LeETZI2GBh7wp7T9gQYUOFvS/sA2HDhA0X9qGwj4SNEDZS2ChhHwsbLWyMsE+EfSpsrLBxwj4T9rmw8cImCJso7Athk4RNFvalsK+ETRE2VdjXwr4RNk3YdGHfCvtO2AxhM4V9L+wHYbOEzRb2o7CfhM0RNlfYz8J+ETZP2Hxhvwr7TdgCYQuF/S5skbDFwpYIWypsmbDlwlYIWylslbDVwtYIWytsnbD1wjYI2yhsk7DNwrYI2ypsm7DtwnYI2ylsl7DdwvYIK1ZD6C+suLASwkoKKyWstLAywsoKKyesvLAKwioKqySssrAqwqoKSxCWKKyasOrCaghLEpYsLEVYqrCawmoJSxNWW1gdYXWF1RN2uLD6wo4QdqSwo4Q1ENZQ2NHCjhF2rLDjhB0v7ARhJwo7SVhImCcsXViGsExhWcKyhYWF5QjLFXaysFOEnSrsNGGnCztD2JnCzhJ2trBzhJ0r7Dxh5wu7QNiFwi4SdrGwS4RdKuwyYZcLu0LYlcKuEna1sGuEXSvsuhp/vkmnuF/b6lDnZ/r/jPlvQMU9O7vE368biu3w5DVB19rnOxzX1/jzn41q+GKoLzbI/0PXqLVG/hpTuBJE4WL1UWpygNcq2M+1vEY1cAmVhV2mmP4VUcUOUs/9+R28JrrIrwdqEtzkN0QXt1w4LEog1DdFdMWyH1+9/QVzQw2cXzfWgBXDvr9wH2gOLE0bAXVAanrTQWi6v/9WUNObfE3Z37pbWAa38er512ksfL9Z2C3CmghrKuxWYXnC8oUVCCsUViQsIqyZsNuE3S6subAWwu4Q1lJYK2Gthd0p7C5hdwtrI+weYW2FtRPWXti9wjoI6+hv+KCW0h812aq1mzVrt2jWmmjWmmrWbtWs5WnW8jVrBZq1Qs1akWYtollrplm7TbN2u2atuWathWbtDs1aS81aK81aa83anZq1uzRrd2vW2mjW7tGstdWstdOstdes3atZ66BZ6+ivBQ/0t0KDezbm3+MG9EL1rdCbgX31bEOv4Iv1W6G3QPT7M69NYr/WX6/zawrMxTk25yJz74B6a2wxh4LDbl4s10rfd3DOB+biXDtzEYqGhYJDjDk78nfwKDy0a+XoIKYImIvzbMtFjh7cIgcfc/ifILDZwV4r/M9AeRswF+fbk4v0f4Po2w8m5vC/A3lz4IcSLYC5uMCGXIT366d3x4HFHDqAmL2WB3Kt0AHp57UC5uLC/zYXWQfop9d6fzFnHnDM3p3/eq3MyEHo590FzMVF/1Uuwgflp3f3P8ecc5Axe23+4Vq5kYPWz7sHmIuLzecidAh+em11MYcOKWav3d+v5R2ifl57YC4uMZmLwkP207t335gzYojZ6xC4VnokJv28jsBcXOrIjyABPx/wgHzrBfks1lxc5kgugBzkAed47wJgLi53JBfAec8DzivexcBcXOFILoD3NQ/Yl73LgLm40tBf74diOzzg/vWA9eex9CsepV/MP0kCnDE6wR72Z4RM/rwJzu99v6RwXw2iw/fVwF/3fmAxsOK+v8ZegUHXDf3bD7KhY+gIK7ZCxo+V+V7u+5Wyzr7mXfyH8H89Fe3sF2FwrYvmSSm66yO6lnq62RlY9F3AyWVs8M418F/161zDjbtdB2Cuu8Jizs40ebfrSrrbPVCD6PADhLtdN8vvdjLubo7f7TrAii23QOMu5W7X3df8wei7XXfN3e5BA3e7DsC7XXdg0T9ISi666yNj7oHrnn988Rp9J77fbxrFwTWIRIOe4GkB3bRkjnsSpiTb41a1g467lyPTIbLGe5P7RCi2w5M56U3oEz2BGj7kwH55iLBfHgZP6H/92lzAV5YW6HrqDaynPiRd+9T4O7mhe9O9QB0egemQafRnqB8B508dfWsQHe5LINd+lpOrjLuf4+R6L6zY8tM17lLI9VFf88eiyfVRDbk+ZoBcEV3rr98DBBb9Y6Tkors+Mub+lk+kffymgf4L0z5ADZGN93HL8yHr5XHCdAuMW3vzQtRLP8Iki6ydJywnI6nhEwQNHwdq+KQjn0og+9dTlvccmZOnCD3naRL5PU0kaqUFeg8h6+kZkq7PGCBq5Dfdn4XpEE43SdTPgvOnjudqEB1+jkDUz1tO1DLu5x0n6vawYssp0rhLIeoXfM1fjCbqFzRE/aIBokZ0rb9+tRNY9C+Skovu+siYX7J8mnrGbxpoon4GqCGy8b5seT5kvbxMmG6BcVOIWtUhepJF1s4rlhO11PAVgoYvAzV81RGiRvav1yzvOTInrxF6zusk8nudSNRKC/QeQtbTAJKuAwwQdTugDm/AdCjyTBL1G+D8qePNGkSH3yQQ9VuWE7WM+y3HibodrNi8iMZdClEP9DV/O5qoB2qI+m0DRI3oWoqoBwKL/m1SctFdHxnzO5ZPUwP8poEm6gFADZGNd5Dl+ZD1Mogw3QLjphC1qkP0JIusncGWE7XUcDBBw0FADd91hKiR/es9y3uOzMl7hJ4zhER+Q4hErbRA7yFkPQ0l6TrUAFG3BerwPkyHDKNE/T44f+r4oAbR4Q8IRD3McqKWcQ9znKjbwoqtwBhRD/c1/zCaqIdriPpDA0SN6FqKqIcDi/5DUnLRXR8Z80eWT1ND/aaBJuqhQA2RjXeE5fmQ9TKCMN0C46YQtapD9CSLrJ2RlhO11HAkQcMRQA1HOULUyP71seU9R+bkY0LPGU0iv9FEolZaoPcQsp7GkHQdY4Coke+a/wSmQ57R911+As6fOj6tQXT4UwJRj7WcqGXcYx0n6ntgxZZt7H2X43zNP4sm6nEaov7MAFEjupYi6nHAov+MlFx010fG/Lnl09QYv2mgiXoMUENk4x1veT5kvYwnTLfAuClEreoQPckia2eC5UQtNZxA0HA8UMOJjhA1sn99YXnPkTn5gtBzJpHIbxKRqJUW6D2ErKfJJF0nGyDqNkAdvoTpkJ5rkqi/BOdPHV/VIDr8FYGop1hO1DLuKY4TdRtYsRWGNe5SiHqqr/nX0UQ9VUPUXxsgakTXUkQ9FVj0X5OSi+76yJi/sXyamuw3DTRRTwZqiGy80yzPh6yXaYTpFhg3hahVHaInWWTtTLecqKWG0wkaTgNq+K0jRI3sX99Z3nNkTr4j9JwZJPKbQSRqpQV6DyHraSZJ15kGiPpuoA7fw3TIzzFJ1N+D86eOH2oQHf6BQNSzLCdqGfcsx4n6blixZeZo3KUQ9Wxf8x+jiXq2hqh/NEDUiK6liHo2sOh/JCUX3fWRMf9k+TQ1028aaKKeCdQQ2XjnWJ4PWS9zCNMtMG4KUas6RE+yyNqZazlRSw3nEjScA9TwZ0eIGtm/frG858ic/ELoOfNI5DePSNRKC/QeQtbTfJKu8w0Q9V1AHX6F6ZBl9Fvfv4Lzp47fahAd/o1A1AssJ2oZ9wLHifou3MdOxr71vdDX/Pdool6oIerfDRA1omspol4ILPrfSclFd31kzIssn6bm+00DTdTzgRoiG+9iy/Mh62UxYboFxk0halWH6EkWWTtLLCdqqeESgoaLgRoudYSokf1rmeU9R+ZkGaHnLCeR33IiUSst0HsIWU8rSLquMEDUdwJ1WIl7QpNlkqhXgvOnjlU1iA6vIhD1asuJWsa92nGivhMHXfkadylEvcbXfG00Ua/REPVaA0SN6FqKqNcAi34tKbnoro+MeZ3l09QKv2mgiXoFUENk411veT5kvawnTLfAuClEreoQPckia2eD5UQtNdxA0HA9UMONjhA1sn9tsrznyJxsIvSczSTy20wkaqUFeg8h62kLSdctBoi6NVCHrbh5MtskUW8F508d22oQHd5GIOrtlhO1jHu740TdGvexU57GXQpR7/A13xlN1Ds0RL3TAFEjupYi6h3Aot9JSi666yNj3mX5NLXFbxpoot4C1BDZeHdbng9ZL7sJ0y0wbgpRqzpET7LI2tljOVFLDfcQNNyNHHyS3CBqZP86LMnuniNzIn1E7+niwFwHZ6jiSTyiVlqg9xCynkqQdC2RxCfqVkAdSsJ0yDH661klwflTR6kkosOlkvDXLZ1kN1HLuEsn7RUYdF2jRN0KNrSEjf16Vhlf87JJxfal5zJJfydq+S+xiboVkKjLAIu+bBInueiuj4y5nOXTVAm/aaCJugRQQ2TjLW95PmS9lCdMt+XBJIP2T9UhepJF1k4Fsoah2I4/9nIFgoblgRpWdISokf2rkuU9R+akEqHnVCaRX2UiUSst0HsIWU9VSLpWMUDULYFEXdVRoq4Kzp86EpKIDicQiDrRcqKWcSc6TtQtHSTqar7m1aOJupqGqKsbIOqWQKKuBiz66o4QNTLmGpZPU1X8poEm6ipADZGNN8nyfMh6SSJMt8C4KUSt6hA9ySJrJ9lyopYaJhM0TAJqmOIIUSP7V6rlPUfmJJXQc2qSyK8mkaiVFug9hKynWiRdaxkg6juARJ0G0yHL6Lu+08D5U0ftJKLDtQlEXcdyopZx13GcqO+AEXWesXd91/U1rxdN1HU1RF3PAFHfASTqusCir5fESS666yNjPtzyaaqW3zTQRF0LqCGy8da3PB+yXuoTpltg3BSiVnWInmSRtXOE5UQtNTyCoGF9oIZHOkLUyP51lOU9R+bkKELPaUAivwZEolZaoPcQsp4aknRtaICoWwCJ+mgcUReaJOqjwflTxzFJRIePIRD1sZYTtYz7WMeJugWOqDM07lKI+jhf8+Ojifo4DVEfb4CoWwCJ+jhg0R+fxEkuuusjYz7B8mmqod800ETdEKghsvGeaHk+ZL2cSJhugXFTiFrVIXqSRdbOSZYTtdTwJIKGJwI1DDlC1Mj+5Vnec2ROPELPSSeRXzqRqJUW6D2ErKcMkq4ZBoi6OZCoM2E6pBt9Rp0Jzp86spKIDmcRiDrbcqKWcWc7TtTNYURdaOwZddjXPCeaqMMaos4xQNTNgUQdBhZ9ThInueiuj4w51/JpKsNvGmiizgBqiGy8J1ueD1kvJxOmW2DcFKJWdYieZJG1c4rlRC01PIWg4clADU91hKiR/es0y3uOzMlphJ5zOon8TicStdICvYeQ9XQGSdczDBD17UCiPhOmQ0aGSaI+E5w/dZyVRHT4LAJRn205Ucu4z3acqG+HEXVBocZdClGf42t+bjRRn6Mh6nMNEPXtQKI+B1j05yZxkovu+siYz7N8mjrDbxpooj4DqCGy8Z5veT5kvZxPmG6BcVOIWtUhepJF1s4FlhO11PACgobnAzW80BGiRvaviyzvOTInFxF6zsUk8ruYSNRKC/QeQtbTJSRdLzFA1LcBifpSmA5FRp9RXwrOnzouSyI6fBmBqC+3nKhl3Jc7TtS3wYjaM/aM+gpf8yujifoKDVFfaYCobwMS9RXAor8yiZNcdNdHxnyV5dPUJX7TQBP1JUANkY33asvzIevlasJ0C4ybQtSqDtGTLLJ2rrGcqKWG1xA0vBqo4bWOEDWyf11nec+RObmO0HOuJ5Hf9USiVlqg9xCynhqRdG1kgKibAYn6BpgOmUaJ+gZw/tRxYxLR4RsJRH2T5UQt477JcaJuhvvRdmNE3djX/OZoom6sIeqbDRB1MyBRNwYW/c1JnOSiuz4y5lssn6Ya+U0DTdSNgBoiG28Ty/Mh66UJYboFxk0halWH6EkWWTtNLSdqqWFTgoZNgBre6ghRI/tXnuU9R+Ykj9Bz8knkl08kaqUFeg8h66mApGuBAaKOAIm6EKZDONckUReC86eOoiSiw0UEoo5YTtQy7ojjRB2BEXVOWOMuhaib+ZrfFk3UzTREfZsBoo4AiboZsOhvS+IkF/45KjDm2y2fpgr8poEm6gKghsjG29zyfMh6aU6YboFxU4ha1SF6kkXWTgvLiVpq2IKgYXOghnc4QtTI/tXS8p4jc9KS0HNakcivFZGolRboPYSsp9YkXVsbIOoiIFHfiXtCY5So7wTnTx13JREdvotA1HdbTtQy7rsdJ+oiGFFnGiPqNr7m90QTdRsNUd9jgKiLgETdBlj09yRxkovu+siY21o+TbX2mwaaqFsDNUQ23naW50PWSzvCdAuMm0LUqg7RkyyydtpbTtRSw/YEDdsBNbzXEaJG9q8OlvccmZMOhJ7TkUR+HYlErbRA7yFkPXUi6drJAFEXAon6Ptwz6pBJor4PnD913J9EdPh+AlF3tpyoZdydHSfqQhhR54Y07lKIuouveddoou6iIequBoi6EEjUXYBF3zWJk1x010fG/IDl01Qnv2mgiboTUENk4+1meT5kvXQjTLfAuClEreoQPckia6e75UQtNexO0LAbUMMHHSFqZP/qYXnPkTnpQeg5PUnk15NI1EoL9B5C1lMvkq69DBB1AZCoe+PmSc8kUfcG508dDyURHX6IQNQPW07UMu6HHSfqAhhRZ0c07lKIuo+v+SPRRN1HQ9SPGCDqAiBR9wEW/SNJnOSiuz4y5r6WT1O9/KaBJupeQA2Rjbef5fmQ9dKPMN0C46YQtapD9CSLrJ1HLSdqqeGjBA37ATV8zBGiRvav/pb3HJmT/oSe8ziJ/B4nErXSAr2HkPX0BEnXJwwQdT6QqJ/EfefR6K9nPQnOnzqeSiI6/BSBqJ+2nKhl3E87TtT5uDeTGfv1rGd8zZ+NJupnNET9rAGizgcS9TPAon82iZNcdNdHxvyc5dPUE37TQBP1E0ANkY33ecvzIevlecJ0C4ybQtSqDtGTLLJ2XrCcqKWGLxA0fB6o4YuOEDWyf71kec+ROXmJ0HNeJpHfy0SiVlqg9xCynl4h6fqKAaLOAxL1qzAdiow+o34VnD91vJZEdPg1AlG/bjlRy7hfd5yo83C/nmXsGfUAX/M3ool6gIao3zBA1HlAoh4ALPo3kjjJRXd9ZMxvWj5NveI3DTRRvwLUENl437I8H7Je3iJMt8C4KUSt6hA9ySJrZ6DlRC01HEjQ8C2ghm87QtTI/vWO5T1H5uQdQs8ZRCK/QUSiVlqg9xCyngaTdB1sgKhvBRL1uzAdIlkmifpdcP7U8V4S0eH3CEQ9xHKilnEPcZyob4URdShf4y6FqIf6mr8fTdRDNUT9vgGivhVI1EOBRf9+Eie56K6PjPkDy6epwX7TQBP1YKCGyMY7zPJ8yHoZRphugXFTiFrVIXqSRdbOcMuJWmo4nKDhMKCGHzpC1Mj+9ZHlPUfm5CNCzxlBIr8RRKJWWqD3ELKeRpJ0HWmAqJsCiXoUTIdco9/6HgXOnzo+TiI6/DGBqEdbTtQy7tGOE3VT3N9RG/vW9xhf80+iiXqMhqg/MUDUTYFEPQZY9J8kcZKL7vrImD+1fJoa6TcNNFGPBGqIbLxjLc+HrJexhOkWGDeFqFUdoidZZO2Ms5yopYbjCBqOBWr4mSNEjexfn1vec2ROPif0nPEk8htPJGqlBXoPIetpAknXCQaIugmQqCfinlEbfdf3RHD+1PFFEtHhLwhEPclyopZxT3KcqJvgvvVt7F3fk33Nv4wm6skaov7SAFE3ARL1ZGDRf5nESS666yNj/sryaWqC3zTQRD0BqCGy8U6xPB+yXqYQpltg3BSiVnWInmSRtTPVcqKWGk4laDgFqOHXjhA1sn99Y3nPkTn5htBzppHIbxqRqJUW6D2ErKfpJF2n+7qapMtbamBjUce3SUSHvyXQ5XeW06WM+zsCXep8RWyQ7wibGLjx6Pm2VUNk3DMcGSamA2OeafkwIWOdQRgmvrd8+JZ5+Z7cc2LV8AfS4PDDfzA43EwaHGYlER2eRRgcZls+OMi4ZzsyOMhCnk3YxMCNR8+3rRoi4/7RkcHhB2DMP1k+OMhYfyQMDnMsHxxkXuaQe06sGs4lDQ5zDTzDbwx8hv8zcA+ZHJZ+TuIMS78kER3+hTAszbN8WJJxzzM0LIViO7y5vq/oR4dzgTlC5nu+5TdQ2ejmE26gv1p+A5Ux/0qI+zfSTe83zVdA0Jqwc4bY4/MIQw9yvy+wvO6lhgsIGs4HarjQEdBC3nN+t/w+IXPyO6FfLiL1y0XEx71KC/QeQtbTYtIeQmu5GBhz8WL7HmhfF5TBaVrPv84SEf9SYcuELRe2QthKYauErRa2RthaYeuErRe2QdhGYZuEbRa2RdhWYduEbRe2Q9hOYbuE7Ra2R3JBstBCWHFhJYSVFFZKWOnkP0UK7psl/pwRXFuqWVumWVuuWVuhWVupWVulWVutWVujWVurWVunWVuvWdugWduoWdukWdusWduiWduqWdumWduuWduhWdupWdulWdutWdujWZP1Eb12mGatuGathGatpGatlGatdPLfZ9qS/j/P9P8Ziu3YZ8/G2l+WAHqV+or0UmDfu7Uhp9dH5yKWmGUulkH0+zOvy2O/Vrqvn7cCmIs8m3OR+Zef3srYYg4FYvZWxXKt9H3081YDc5FvZy5CUX56aw4x5uzI32L21h7atXI0+nnrgLkosC0XOVo/vfUHH3P4H2L2NhzstcL/qJ+3EZiLQntykf4vfnqbDibm8L/G7G0+8GsV7Ec/bwswF0U25CK8Xz+9rQcWc+gAYva2Hci1Qgekn7cdmIvIf5uLrAP009uxv5gzDzhmb+e/XiszchD6ebuAuWj2X+UifFB+erv/Oeacg4zZ2/MP18qNHLR+nmQ6VC5uM5+L0CH46R2mizl0SDF7xf9+Le8Q9fNKAHNxu8lcFB6yn17JfWPOiCFmr1TgWumRmPTzSgNz0dxQLkKxHR7w8wEPyLdekM9izUULR3IB5CAPOMd7RcBc3OFILoDzngecV7zbgLlo6UgugPc1D9iXvRbAXLQi5QL9KhDg/vWA9eex9EN/LwA5Y5RJRsWcYfQFUDi/9/3yaNlkosPy4ujrlgMWAyvucsl7BQZd1+gLoErDiq3Q2AugyvuaV/Afwv/1VLS8X4TBtQrJ/BdAIbqWerpZHlj0FcDJZWzw8sn4b0aVT3bjblcKmOuKsJizM03e7SqS7naVkokOVyLc7SpbfreTcVd2/G5XClZsuQUadyl3uyq+5lWj73ZVNHe7qgbudqWAd7sqwKKvSkouuusjY07AdU/td59j9a+c3zSKg2sQiQaJ4GkB3bRkjhMJU5LtcavaQcddzZHpEFnj1cl9IhTb4cmcVCf0iUSghjUc2C81CPslCTyhq1klKeArSwt0PVUH1lMySdfkZP4f+ZcE6pAC0yGzyCS5poDzp47UZKLDqQRyrWk5ucq4azpOriVhxZafrnGXQq61fM3Tosm1loZc0wyQK6JrKXKtBSz6NFJy0V0fGXNtyyfSZL9poN+2kQzUENl461ieD1kvdQjTLTBuypsbVB2iJ1lk7dS1nIykhnUJGtYBaljPkU8lkP3rcMt7jszJ4YSeU59EfvWJRK20QO8hZD0dQdL1CANEjfym+5EwHcLpJon6SHD+1HFUMtHhowhE3cByopZxN3CcqEvAii2nSOMuhagb+pofHU3UDTVEfbQBokZ0LUXUDYFFfzQpueiuj4z5GMunqSP8poEm6iOAGiIb77GW50PWy7GE6RYYN4WoVR2iJ1lk7RxnOVFLDY8jaHgsUMPjHSFqZP86wfKeI3NyAqHnnEgivxOJRK20QO8hZD2dRNL1JANEXRyoQwimQ5HRF9GHwPlTh5dMdNgjEHW65UQt4053nKiLw4rNi2jcpRB1hq95ZjRRZ2iIOtMAUSO6liLqDGDRZ5KSi+76yJizLJ+mTvKbBpqoTwJqiGy82ZbnQ9ZLNmG6BcZNIWpVh+hJFlk7YcuJWmoYJmiYDdQwxxGiRvavXMt7jsxJLqHnnEwiv5OJRK20QO8hZD2dQtL1FANEfRhQh1NhOmQYJepTwflTx2nJRIdPIxD16ZYTtYz7dMeJ+jBYsRUYI+ozfM3PjCbqMzREfaYBokZ0LUXUZwCL/kxSctFdHxnzWZZPU6f4TQNN1KcANUQ23rMtz4esl7MJ0y0wbgpRqzpET7LI2jnHcqKWGp5D0PBsoIbnOkLUyP51nuU9R+bkPELPOZ9EfucTiVppgd5DyHq6gKTrBQaIGvmu+QthOuQZfd/lheD8qeOiZKLDFxGI+mLLiVrGfbHjRF0MVmzZxt53eYmv+aXRRH2JhqgvNUDUiK6liPoSYNFfSkouuusjY77M8mnqAr9poIn6AqCGyMZ7ueX5kPVyOWG6BcZNIWpVh+hJFlk7V1hO1FLDKwgaXg7U8EpHiBrZv66yvOfInFxF6DlXk8jvaiJRKy3QewhZT9eQdL3GAFHvAf6S3rUwHdJzTRL1teD8qeO6ZKLD1xGI+nrLiVrGfb3jRB3ccKGYjsKwxl0KUTfyNb8hmqgbaYj6BgNEvQfy++5/EnUjYNHfkMxJLrrrI2O+0fJp6hq/aaCJ+hqghsjGe5Pl+ZD1chNhugXGTSFqVYfoSRZZO40tJ2qpYWOChjcBNbzZEaJG9q9bLO85Mie3EHpOExL5NSEStdICvYeQ9dSUpGtTA0S9G0jUt8J0yM8xSdS3gvOnjrxkosN5BKLOt5yoZdz5jhP1bhhRZ+Zo3KUQdYGveWE0URdoiLrQAFHvBhJ1AbDoC5M5yUV3fWTMRZZPU039poEm6qZADZGNN2J5PmS9RAjTLTBuClGrOkRPssjaaWY5UUsNmxE0jAA1vM0Rokb2r9st7zkyJ7cTek5zEvk1JxK10gK9h5D11IKkawsDRL0LSNR3wHTIMvqt7zvA+VNHy2Siwy0JRN3KcqKWcbdynKh3wYg639i3vlv7mt8ZTdStNUR9pwGi3gUk6tbAor8zmZNcdNdHxnyX5dNUC79poIm6BVBDZOO92/J8yHq5mzDdAuOmELWqQ/Qki6ydNpYTtdSwDUHDu4Ea3uMIUSP7V1vLe47MSVtCz2lHIr92RKJWWqD3ELKe2pN0bW+AqHcCifpe3BOaLJNEfS84f+rokEx0uAOBqDtaTtQy7o6OE/VOHFHna9ylEHUnX/P7oom6k4ao7zNA1DuBRN0JWPT3JXOSi+76yJjvt3yaau83DTRRtwdqiGy8nS3Ph6yXzoTpFhg3hahVHaInWWTtdLGcqKWGXQgadgZq2NURokb2rwcs7zkyJw8Qek43Evl1IxK10gK9h5D11J2ka3cDRL0DSNQP4ubJbJNE/SA4f+rokUx0uAeBqHtaTtQy7p6OE/UO3Le+8zTuUoi6l69572ii7qUh6t4GiHoHkKh7AYu+dzInueiuj4z5Icunqe5+00ATdXeghsjG+7Dl+ZD18jBhugXGTSFqVYfoSRZZO30sJ2qpYR+Chg8DNXzEEaJG9q++lvccmZO+hJ7Tj0R+/YhErbRA7yFkPT1K0vVRA0S9HUjUj8F0yDH661mPgfOnjv7JRIf7E4j6ccuJWsb9uONEvR1G1GFjv571hK/5k9FE/YSGqJ80QNTbgUT9BLDon0zmJBfd9ZExP2X5NPWo3zTQRP0oUENk433a8nzIenmaMN0C46YQtapD9CSLrJ1nLCdqqeEzBA2fBmr4rCNEjexfz1nec2ROniP0nOdJ5Pc8kaiVFug9hKynF0i6vmCAqLcBifpFR4n6RXD+1PFSMtHhlwhE/bLlRC3jftlxot7mIFG/4mv+ajRRv6Ih6lcNEPU2IFG/Aiz6Vx0hamTMr1k+Tb3gNw00Ub8A1BDZeF+3PB+yXl4nTLfAuClEreoQPckia2eA5UQtNRxA0PB1oIZvOELUyP71puU9R+bkTULPeYtEfm8RiVppgd5DyHoaSNJ1oAGi3gok6rdhOmQZfdf32+D8qeOdZKLD7xCIepDlRC3jHuQ4UW+FEXWesXd9D/Y1fzeaqAdriPpdA0S9FUjUg4FF/24yJ7noro+M+T3Lp6mBftNAE/VAoIbIxjvE8nzIehlCmG6BcVOIWtUhepJF1s5Qy4laajiUoOEQoIbvO0LUyP71geU9R+bkA0LPGUYiv2FEolZaoPcQsp6Gk3QdboCotwCJ+kMcUReaJOoPwflTx0fJRIc/IhD1CMuJWsY9wnGi3oIj6gyNuxSiHulrPiqaqEdqiHqUAaLeAiTqkcCiH5XMSS666yNj/tjyaWq43zTQRD0cqCGy8Y62PB+yXkYTpltg3BSiVnWInmSRtTPGcqKWGo4haDgaqOEnjhA1sn99annPkTn5lNBzxpLIbyyRqJUW6D2ErKdxJF3HGSDqzUCi/gymQ7rRZ9SfgfOnjs+TiQ5/TiDq8ZYTtYx7vONEvRlG1IXGnlFP8DWfGE3UEzREPdEAUW8GEvUEYNFPTOYkF931kTF/Yfk0Nc5vGmiiHgfUENl4J1meD1kvkwjTLTBuClGrOkRPssjamWw5UUsNJxM0nATU8EtHiBrZv76yvOfInHxF6DlTSOQ3hUjUSgv0HkLW01SSrlMNEPUmIFF/DdMhI8MkUX8Nzp86vkkmOvwNgainWU7UMu5pjhP1JhhRFxRq3KUQ9XRf82+jiXq6hqi/NUDUm4BEPR1Y9N8mc5KL7vrImL+zfJqa6jcNNFFPBWqIbLwzLM+HrJcZhOkWGDeFqFUdoidZZO3MtJyopYYzCRrOAGr4vSNEjexfP1jec2ROfiD0nFkk8ptFJGqlBXoPIetpNknX2QaIeiOQqH+E6VBk9Bn1j+D8qeOnZKLDPxGIeo7lRC3jnuM4UW+EEbVn7Bn1XF/zn6OJeq6GqH82QNQbgUQ9F1j0Pydzkovu+siYf7F8mprtNw00Uc8GaohsvPMsz4esl3mE6RYYN4WoVR2iJ1lk7cy3nKilhvMJGs4DavirI0SN7F+/Wd5zZE5+I/ScBSTyW0AkaqUFeg8h62khSdeFBoh6A5Cof4fpkGmUqH8H508di5KJDi8iEPViy4laxr3YcaLeACPqfGNEvcTXfGk0US/REPVSA0S9AUjUS4BFvzSZk1x010fGvMzyaWqh3zTQRL0QqCGy8S63PB+yXpYTpltg3BSiVnWInmSRtbPCcqKWGq4gaLgcqOFKR4ga2b9WWd5zZE5WEXrOahL5rSYStdICvYeQ9bSGpOsaA0S9HkjUa2E6hHNNEvVacP7UsS6Z6PA6AlGvt5yoZdzrHSfq9TCizglr3KUQ9QZf843RRL1BQ9QbDRD1eiBRbwAW/cZkTnLhn6MCY95k+TS1xm8aaKJeA9QQ2Xg3W54PWS+bCdMtMG4KUas6RE+yyNrZYjlRSw23EDTcDNRwqyNEjexf2yzvOTIn2wg9ZzuJ/LYTiVppgd5DyHraQdJ1hwGiXgck6p24JzRGiXonOH/q2MUiaunwLgJR77acqGXcux0n6nUwos40RtR7lOYpxfal5z0aopb/Epuo1wGJeg+y6FM4yUV3fWTMh6XYPU3t8JsGmqh3ADVENt7iludD1ov0ET3dAuOmELWqQ/Qki6ydEmQNQ7Edf+xl6SNaw2DtxKphSbCG6kDfA5D9q5TlPUfmpBSh55QG5jo4Q5VO4RG10gK9h5D1VIaka5kUPlGvBRJ1WZgO4ZBJoi4Lzp86yqUQHS6Xgr9ueeCNhRV3+ZS9AoOua5So18KIOjekcZdC1BV8zStGE3WFlL8TdUUDRL0WSNQVgEVfMYWTXHTXR8ZcyfJpqozfNNBEXQaoIbLxVrY8H7JeKhOmW2DcFKJWdYieZJG1U8VyopYaViFoWBmoYVVHiBrZvxIs7zkyJwmEnpNIIr9EIlErLdB7CFlP1Ui6VjNA1GuARF0dN096Jom6Ojh/6qiRQnS4BoGokywnahl3kuNEvQZG1NkRjbsUok72NU+JJupkDVGnGCDqNUCiTgYWfUoKJ7noro+MOdXyaaqa3zTQRF0NqCGy8da0PB+yXmoSpltg3BSiVnWInmSRtVPLcqKWGtYiaFgTqGGaI0SN7F+1Le85Mie1CT2nDon86hCJWmmB3kPIeqpL0rWuAaJeDSTqerjvPBr99ax64Pyp4/AUosOHE4i6vuVELeOu7zhRr8a9mczYr2cd4Wt+ZDRRH6Eh6iMNEPVqIFEfASz6I1M4yUV3fWTMR1k+TdX1mwaaqOsCNUQ23gaW50PWSwPCdAuMm0LUqg7RkyyydhpaTtRSw4YEDRsANTzaEaJG9q9jLO85MifHEHrOsSTyO5ZI1EoL9B5C1tNxJF2PM0DUq4BEfTxMhyKjz6iPB+dPHSekEB0+gUDUJ1pO1DLuEx0n6lW4X88y9oz6JF/zUDRRn6Qh6pABol4FJOqTgEUfSuEkF931kTF7lk9Tx/lNA03UxwE1RDbedMvzIeslnTDdAuOmELWqQ/Qki6ydDMuJWmqYQdAwHahhpiNEjexfWZb3HJmTLELPySaRXzaRqJUW6D2ErKcwSdewAaJeCSTqHJgOkSyTRJ0Dzp86clOIDucSiPpky4laxn2y40S9EkbUoXyNuxSiPsXX/NRooj5FQ9SnGiDqlUCiPgVY9KemcJKL7vrImE+zfJoK+00DTdRhoIbIxnu65fmQ9XI6YboFxk0halWH6EkWWTtnWE7UUsMzCBqeDtTwTEeIGtm/zrK858icnEXoOWeTyO9sIlErLdB7CFlP55B0PccAUa8AEvW5MB1yjX7r+1xw/tRxXgrR4fMIRH2+5UQt4z7fcaJegfs7amPf+r7A1/zCaKK+QEPUFxog6hVAor4AWPQXpnCSi+76yJgvsnyaOsdvGmiiPgeoIbLxXmx5PmS9XEyYboFxU4ha1SF6kkXWziWWE7XU8BKChhcDNbzUEaJG9q/LLO85MieXEXrO5STyu5xI1EoL9B5C1tMVJF2vMEDUy4FEfSXuGbXRd31fCc6fOq5KITp8FYGor7acqGXcVztO1Mtx3/o29q7va3zNr40m6ms0RH2tAaJeDiTqa4BFf20KJ7noro+M+TrLp6kr/KaBJuorgBoiG+/1ludD1sv1hOkWGDeFqFUdoidZZO00spyopYaNCBpeD9TwBkeIGtm/brS858ic3EjoOTeRyO8mIlErLdB7CFlPjUm6NvZ1NUmXy5Kwsajj5hSiwzcT6PIWy+lSxn0LgS51viI2yC2ETQzcePR826ohMu4mjgwTjYExN7V8mJCxNiEME7daPnzLvNxK7jmxaphHGhzy/oPBYSlpcMhPITqcTxgcCiwfHGTcBY4MDrKQCwibGLjx6Pm2VUNk3IWODA55wJiLLB8cZKyFhMEhYvngIPMSIfecWDVsRhocmhl4hr8E+Az/NuAeMjks3ZbCGZZuTyE6fDthWGpu+bAk425uaFgKxXZ4zXxf0Y8OmwFzhMx3C8tvoLLRtSDcQO+w/AYqY76DEHdL0k2vpeYrIGhN2DlD7PHmhKEHud9bWV73UsNWBA1bADVs7QhoIe85d1p+n5A5uZPQL+8i9cu7iI97lRboPYSsp7tJewit5d3AmIsX2/dA+3oY7lqhev512oj47xHWVlg7Ye2F3Susg7COwjoJu0/Y/cI6C+sirKuwB4R1E9Zd2IPCegjrKayXsN7CHhL2sLA+wh4R1ldYP2GPCntMWH9hj6f8KVJw37Tx54zg2j2atbaatXaatfaatXs1ax00ax01a500a/dp1u7XrHXWrHXRrHXVrD2gWeumWeuuWXtQs9ZDs9ZTs9ZLs9Zbs/aQZu1hzVofzdojmrW+mrV+mrVHNWuPadb6a9Ye18y0Jf1/nun/MxTbsc+ejbW/tAH0KvUV6XuAfa9zQ06vj85FLDHLXLSF6PdnXtvFfq10Xz+vPTAXXWzOReZffnr3xhZzKBCz1yGWa6Xvo5/XEZiLrnbmIhTlp9fpEGPOjvwtZu++Q7tWjkY/735gLh6wLRc5Wj+9zgcfc/gfYva6HOy1wv+on9cVmItu9uQi/V/89B44mJjD/xqz1+3Ar1WwH/287sBcdLchF+H9+uk9eGAxhw4gZq/HgVwrdED6eT2BuXjwv81F1gH66fXaX8yZBxyz1/tfr5UZOQj9vIeAuejxX+UifFB+eg//c8w5Bxmz1+cfrpUbOWj9vEeAuehpPhehQ/DT66uLOXRIMXv9/n4t7xD18x4F5qKXyVwUHrKf3mP7xpwRQ8xe/8C10iMx6ec9DsxFb0O5CMV2eMDPBzwg33pBPos1Fw85kgsgB3nAOd7rDszFw47kAjjvecB5xesJzEUfR3IBvK95wL7sPQTMxSOkXKBfBQLcvx6w/jyWfujvBSBnjCdgz3EzjL4ACuf3vl8efTKF6PCTKfjrPgUsBlbcT6XsFRh0XaMvgHocVmyFxl4A9bSv+TP+Q/i/noo+7RdhcO2ZFP4LoBBdSz3dfBpY9M+Ak8vY4E+n4L8Z9XSKG3e7/sBcPwuLOTvT5N3uWdLd7rkUosPPEe52z1t+t5NxP+/43a4/rNhyCzTuUu52L/iavxh9t3tBc7d70cDdrj/wbvcCsOhfJCUX3fWRMb+E657a7z7H6t9TftMoDq5BJBq8DJ4W0E1L5vhlwpRke9yqdtBxv+LIdIis8VfJfSIU2+HJnLxK6BMvAzV8zYH98hphv7wOntDVrPJ6wFeWFuh6ehVYTwNIug5I4f+R/2NAHd6A6ZBZZJJc3wDnTx1vphAdfpNArm9ZTq4y7rccJ9fHYMWWn65xl0KuA33N344m14Eacn3bALkiupYi14HAon+blFx010fG/I7lE+kAv2mg37YxAKghsvEOsjwfsl4GEaZbYNyUNzeoOkRPssjaGWw5GUkNBxM0HATU8F1HPpVA9q/3LO85MifvEXrOEBL5DSEStdICvYeQ9TSUpOtQA0SN/Kb7+zAdwukmifp9cP7U8UEK0eEPCEQ9zHKilnEPc5yoH4UVW06Rxl0KUQ/3Nf8wmqiHa4j6QwNEjehaiqiHA4v+Q1Jy0V0fGfNHlk9TQ/2mgSbqoUANkY13hOX5kPUygjDdAuOmELWqQ/Qki6ydkZYTtdRwJEHDEUANRzlC1Mj+9bHlPUfm5GNCzxlNIr/RRKJWWqD3ELKexpB0HWOAqPsBdfgEpkOR0RfRfwLOnzo+TSE6/CmBqMdaTtQy7rGOE3U/WLF5EY27FKIe52v+WTRRj9MQ9WcGiBrRtRRRjwMW/Wek5KK7PjLmzy2fpsb4TQNN1GOAGiIb73jL8yHrZTxhugXGTSFqVYfoSRZZOxMsJ2qp4QSChuOBGk50hKiR/esLy3uOzMkXhJ4ziUR+k4hErbRA7yFkPU0m6TrZAFH3BerwJUyHDKNE/SU4f+r4KoXo8FcEop5iOVHLuKc4TtR9YcVWYIyop/qafx1N1FM1RP21AaJGdC1F1FOBRf81Kbnoro+M+RvLp6nJftNAE/VkoIbIxjvN8nzIeplGmG6BcVOIWtUhepJF1s50y4laajidoOE0oIbfOkLUyP71neU9R+bkO0LPmUEivxlEolZaoPcQsp5mknSdaYCoke+a/x6mQ57R911+D86fOn5IITr8A4GoZ1lO1DLuWY4T9SOwYss29r7L2b7mP0YT9WwNUf9ogKgRXUsR9Wxg0f9ISi666yNj/snyaWqm3zTQRD0TqCGy8c6xPB+yXuYQpltg3BSiVnWInmSRtTPXcqKWGs4laDgHqOHPjhA1sn/9YnnPkTn5hdBz5pHIbx6RqJUW6D2ErKf5JF3nGyDqPkAdfoXpkJ5rkqh/BedPHb+lEB3+jUDUCywnahn3AseJug+s2ArDGncpRL3Q1/z3aKJeqCHq3w0QNaJrKaJeCCz630nJRXd9ZMyLLJ+m5vtNA03U84EaIhvvYsvzIetlMWG6BcZNIWpVh+hJFlk7SywnaqnhEoKGi4EaLnWEqJH9a5nlPUfmZBmh5ywnkd9yIlErLdB7CFlPK0i6rjBA1A8DdVgJ0yE/xyRRrwTnTx2rUogOryIQ9WrLiVrGvdpxon4YVmyZORp3KUS9xtd8bTRRr9EQ9VoDRI3oWoqo1wCLfi0pueiuj4x5neXT1Aq/aaCJegVQQ2TjXW95PmS9rCdMt8C4KUSt6hA9ySJrZ4PlRC013EDQcD1Qw42OEDWyf22yvOfInGwi9JzNJPLbTCRqpQV6DyHraQtJ1y0GiPohoA5bYTpkGf3W91Zw/tSxLYXo8DYCUW+3nKhl3NsdJ+qHcB87GfvW9w5f853RRL1DQ9Q7DRA1omspot4BLPqdpOSiuz4y5l2WT1Nb/KaBJuotQA2RjXe35fmQ9bKbMN0C46YQtapD9CSLrJ09lhO11HAPQcPdyMEn1Q2iRvavw1Lt7jkyJ9JH9J4uDsx1cIYqnsojaqUFeg8h66kESdcSqXyi7g3UoSRMh8wsk0RdEpw/dZRKJTpcKhV/3dKpdhO1jLt06l6BQdc1StS9cdCVr3GXQtRlfM3Lphbbl57LpP6dqOW/xCbq3kCiLgMs+rKpnOSiuz4y5nKWT1Ml/KaBJuoSQA2Rjbe85fmQ9VKeMN2WB5MM2j9Vh+hJFlk7FcgahmI7/tjLFQgalgdqWNERokb2r0qW9xyZk0qEnlOZRH6ViUSttEDvIWQ9VSHpWsUAUfcCEnVV3DyZbZKoq4Lzp46EVKLDCQSiTrScqGXciY4TdS/cF4PzNO5SiLqar3n1aKKupiHq6gaIuheQqKsBi756Kie56K6PjLmG5dNUFb9poIm6ClBDZONNsjwfsl6SCNMtMG4KUas6RE+yyNpJtpyopYbJBA2TgBqmOELUyP6VannPkTlJJfScmiTyq0kkaqUFeg8h66kWSddaBoi6J5Co02A65Bj99aw0cP7UUTuV6HBtAlHXsZyoZdx1HCfqnjCiDhv79ay6vub1oom6roao6xkg6p5Aoq4LLPp6qZzkors+MubDLZ+mavlNA03UtYAaIhtvfcvzIeulPmG6BcZNIWpVh+hJFlk7R1hO1FLDIwga1gdqeKQjRI3sX0dZ3nNkTo4i9JwGJPJrQCRqpQV6DyHrqSFJ14YGiLoHkKiPdpSojwbnTx3HpBIdPoZA1MdaTtQy7mMdJ+oeDhL1cb7mx0cT9XEaoj7eAFH3ABL1ccCiP94RokbGfILl01RDv2mgibohUENk4z3R8nzIejmRMN0C46YQtapD9CSLrJ2TLCdqqeFJBA1PBGoYcoSokf3Ls7znyJx4hJ6TTiK/dCJRKy3QewhZTxkkXTMMEPWDQKLOhOmQZfRd35ng/KkjK5XocBaBqLMtJ2oZd7bjRP0gjKjzcjTuUog67GueE03UYQ1R5xgg6geBRB0GFn1OKie56K6PjDnX8mkqw28aaKLOAGqIbLwnW54PWS8nE6ZbYNwUolZ1iJ5kkbVziuVELTU8haDhyUANT3WEqJH96zTLe47MyWmEnnM6ifxOJxK10gK9h5D1dAZJ1zMMEHV3IFGfiSPqQpNEfSY4f+o4K5Xo8FkEoj7bcqKWcZ/tOFF3xxF1hsZdClGf42t+bjRRn6Mh6nMNEHV3IFGfAyz6c1M5yUV3fWTM51k+TZ3hNw00UZ8B1BDZeM+3PB+yXs4nTLfAuClEreoQPckia+cCy4laangBQcPzgRpe6AhRI/vXRZb3HJmTiwg952IS+V1MJGqlBXoPIevpEpKulxgg6m5Aor4UpkO60WfUl4Lzp47LUokOX0Yg6sstJ2oZ9+WOE3U3GFEXGntGfYWv+ZXRRH2FhqivNEDU3YBEfQWw6K9M5SQX3fWRMV9l+TR1id800ER9CVBDZOO92vJ8yHq5mjDdAuOmELWqQ/Qki6ydaywnaqnhNQQNrwZqeK0jRI3sX9dZ3nNkTq4j9JzrSeR3PZGolRboPYSsp0YkXRsZIOoHgER9A0yHjAyTRH0DOH/quDGV6PCNBKK+yXKilnHf5DhRPwAj6oJCjbsUom7sa35zNFE31hD1zQaI+gEgUTcGFv3NqZzkors+MuZbLJ+mGvlNA03UjYAaIhtvE8vzIeulCWG6BcZNIWpVh+hJFlk7TS0naqlhU4KGTYAa3uoIUSP7V57lPUfmJI/Qc/JJ5JdPJGqlBXoPIeupgKRrgQGi7gok6kKYDkVGn1EXgvOnjqJUosNFBKKOWE7UMu6I40TdFUbUnrFn1M18zW+LJupmGqK+zQBRdwUSdTNg0d+WykkuuusjY77d8mmqwG8aaKIuAGqIbLzNLc+HrJfmhOkWGDeFqFUdoidZZO20sJyopYYtCBo2B2p4hyNEjexfLS3vOTInLQk9pxWJ/FoRiVppgd5DyHpqTdK1tQGi7gIk6jthOmQaJeo7wflTx12pRIfvIhD13ZYTtYz7bseJuguMqPONEXUbX/N7oom6jYao7zFA1F2ARN0GWPT3pHKSi+76yJjbWj5NtfabBpqoWwM1RDbedpbnQ9ZLO8J0C4ybQtSqDtGTLLJ22ltO1FLD9gQN2wE1vNcRokb2rw6W9xyZkw6EntORRH4diUSttEDvIWQ9dSLp2skAUXcGEvV9MB3CuSaJ+j5w/tRxfyrR4fsJRN3ZcqKWcXd2nKg7w4g6J6xxl0LUXXzNu0YTdRcNUXc1QNSdgUTdBVj0XVM5yYV/jgqM+QHLp6lOftNAE3UnoIbIxtvN8nzIeulGmG6BcVOIWtUhepJF1k53y4laatidoGE3oIYPOkLUyP7Vw/KeI3PSg9BzepLIryeRqJUW6D2ErKdeJF17GSDq+4FE3Rv3hMYoUfcG508dD6USHX6IQNQPW07UMu6HHSfq+2FEnWmMqPv4mj8STdR9NET9iAGivh9I1H2ARf9IKie56K6PjLmv5dNUL79poIm6F1BDZOPtZ3k+ZL30I0y3wLgpRK3qED3JImvnUcuJWmr4KEHDfkANH3OEqJH9q7/lPUfmpD+h5zxOIr/HiUSttEDvIWQ9PUHS9QkDRH0fkKifxD2jDpkk6ifB+VPHU6lEh58iEPXTlhO1jPtpx4n6PhhR54Y07lKI+hlf82ejifoZDVE/a4Co7wMS9TPAon82lZNcdNdHxvyc5dPUE37TQBP1E0ANkY33ecvzIevlecJ0C4ybQtSqDtGTLLJ2XrCcqKWGLxA0fB6o4YuOEDWyf71kec+ROXmJ0HNeJpHfy0SiVlqg9xCynl4h6fqKAaLuBCTqV3HzpGeSqF8F508dr6USHX6NQNSvW07UMu7XHSfqTjCizo5o3KUQ9QBf8zeiiXqAhqjfMEDUnYBEPQBY9G+kcpKL7vrImN+0fJp6xW8aaKJ+BaghsvG+ZXk+ZL28RZhugXFTiFrVIXqSRdbOQMuJWmo4kKDhW0AN33aEqJH96x3Le47MyTuEnjOIRH6DiESttEDvIWQ9DSbpOtgAUXcEEvW7uO88Gv31rHfB+VPHe6lEh98jEPUQy4laxj3EcaLuiHszmbFfzxrqa/5+NFEP1RD1+waIuiOQqIcCi/79VE5y0V0fGfMHlk9Tg/2mgSbqwUANkY13mOX5kPUyjDDdAuOmELWqQ/Qki6yd4ZYTtdRwOEHDYUANP3SEqJH96yPLe47MyUeEnjOCRH4jiESttEDvIWQ9jSTpOtIAUXcAEvUomA5FRp9RjwLnTx0fpxId/phA1KMtJ2oZ92jHiboD7tezjD2jHuNr/kk0UY/REPUnBoi6A5CoxwCL/pNUTnLRXR8Z86eWT1Mj/aaBJuqRQA2RjXes5fmQ9TKWMN0C46YQtapD9CSLrJ1xlhO11HAcQcOxQA0/c4Sokf3rc8t7jszJ54SeM55EfuOJRK20QO8hZD1NIOk6wQBR3wsk6okwHSJZJol6Ijh/6vgilejwFwSinmQ5Ucu4JzlO1PfCiDqUr3GXQtSTfc2/jCbqyRqi/tIAUd8LJOrJwKL/MpWTXHTXR8b8leXT1AS/aaCJegJQQ2TjnWJ5PmS9TCFMt8C4KUSt6hA9ySJrZ6rlRC01nErQcApQw68dIWpk//rG8p4jc/INoedMI5HfNCJRKy3QewhZT9NJuk43QNTtgUT9LUyHXKPf+v4WnD91fJdKdPg7AlHPsJyoZdwzHCfq9ri/ozb2re+ZvubfRxP1TA1Rf2+AqNsDiXomsOi/T+UkF931kTH/YPk0Nd1vGmiing7UENl4Z1meD1kvswjTLTBuClGrOkRPssjamW05UUsNZxM0nAXU8EdHiBrZv36yvOfInPxE6DlzSOQ3h0jUSgv0HkLW01ySrnMNEHU7IFH/jHtGbfRd3z+D86eOX1KJDv9CIOp5lhO1jHue40TdDvetb2Pv+p7va/5rNFHP1xD1rwaIuh2QqOcDi/7XVE5y0V0fGfNvlk9Tc/2mgSbquUANkY13geX5kPWygDDdAuOmELWqQ/Qki6ydhZYTtdRwIUHDBUANf3eEqJH9a5HlPUfmZBGh5ywmkd9iIlErLdB7CFlPS0i6LvF1NUmXbVOwsahjaSrR4aUEulxmOV3KuJcR6FLnK2KDLCNsYuDGo+fbVg2RcS93ZJhYAox5heXDhIx1OWGYWGn58C3zspLcc2LVcBVpcFj1HwwO95AGh9WpRIdXEwaHNZYPDjLuNY4MDrKQ1xA2MXDj0fNtq4bIuNc6MjisAsa8zvLBQca6ljA4rLd8cJB5WU/uObFquIE0OGww8Ay/DfAZ/kbgHjI5LG1M5QxLm1KJDm8iDEubLR+WZNybDQ1LodgOb4PvK/rR4QZgjpD53mL5DVQ2ui2EG+hWy2+gMuathLi3kW562zRfAUFrws4ZYo9vJgw9yP2+3fK6lxpuJ2i4BajhDkdAC3nP2Wn5fULmZCehX+4i9ctdxMe9Sgv0HkLW027SHkJruRs8W7P8nF0cp2fxYvse8D+wAvpaz7/OHskXNYWvwooLKyGspLBSwkoLKyOsrLBywsoLqyCsorBKwioLqyKsqrAEYYnCqgmrLqyGsCRhycJShKUKqymslrA0YbWF1an5p0jB/b3Hn4eCa9K/6LXDNGvFNWslNGslNWulNGulNWtlNGtlNWvlNGvlNWsVNGsVNWuVNGuVNWtVNGtVNWsJmrVEzVo1zVp1zVoNzVqSZi1Zs5aiWUvVrNXUrNXSrKVp1mpr1urU/PvsXdL/55n+P0OxHfvs2Vj74B5AT1Vf5ZZ7CuXXiw0596ToXMQSs8zFYTUR1/ozr8Vjv1a6r59XApiLl2zOReZffnolY4s5FIjZKxXLtdL30c8rDczFy3bmIhTlp1fmEGPOjvwtZq/soV0rR6OfVw6Yi1dsy0WO1k+v/MHHHP6HmL0KB3ut8D/q51UE5uJVe3KR/i9+epUOJubwv8bsVT7waxXsRz+vCjAXr9mQi/B+/fSqHljMoQOI2Us4kGuFDkg/LxGYi9f/21xkHaCfXrX9xZx5wDF71f/1WpmRg9DPqwHMxYD/Khfhg/LTS/rnmHMOMmYv+R+ulRs5aP28FGAu3jCfi9Ah+Oml6mIOHVLMXs2/X8s7RP28WsBcvGkyF4WH7KeXtm/MGTHE7NUOXCs9EpN+Xh1gLt4ylItQbIcH/HzAA/KtF+SzWHMx0JFcADnIA87x3mvAXLztSC6A854HnFe8N4C5eMeRXADvax6wL3sDgbkYRMoF+pUlwP3rAevPQ+on6/cyYfX869Xxn4ml+c/IavrPzFL8Z2hJ/jO16v4ztkT/mVtV/xlcZf+ZXEX/GV15/5ldWf8ZXmn/mV5J/xlfcf+Zn3wOsCe12N8O9HcqkHNP3ZqoPGQYfXkWzu99v3hbrybRYXlx9HUPBxYDK+7Da+4VGHRdoy/PqgMrtkJjL8+q72t+hP/FgL+e1Nb3izC4dkRN/suzEF1LPXGtDyz6I8DJZWzw+jXx3yqrX5MzwaDvdrWBuT4SFnN2psm73ZGku91RNYkOH0W42zWw/G4n427g+N2uNqzYcgs07lLudg19zY+Ovts11NztjjZwt6sNvNs1BBb90aTkors+MuZjcN1T+73xWP073G8axcE1iESDY8HTArppyRwfS5iSbI9b1Q467uMcmQ6RNX48uU+EYjs8mZPjCX3iWKCGJziwX04g7JcTwRO6mlVODPjK0gJdT8cD6+kkkq4n1eS/ICENqEMIpkNmkUlyDYHzpw6vJtFhj0Cu6ZaTq4w73XFyTYMVW366xl0KuWb4mmdGk2uGhlwzDZAromspcs0AFn0mKbnoro+MOcvyifQkv2mg31RyElBDZOPNtjwfsl6yCdMtMG7KWy9UHaInWWTthC0nI6lhmKBhNlDDHEc+lUD2r1zLe47MSS6h55xMIr+TiUSttEDvIWQ9nULS9RQDRI389v2pMB3C6SaJ+lRw/tRxWk2iw6cRiPp0y4laxn2640RdC1ZsOUUadylEfYav+ZnRRH2GhqjPNEDUiK6liPoMYNGfSUouuusjYz7L8mnqFL9poIn6FKCGyMZ7tuX5kPVyNmG6BcZNIWpVh+hJFlk751hO1FLDcwgang3U8FxHiBrZv86zvOfInJxH6Dnnk8jvfCJRKy3QewhZTxeQdL3AAFHXBOpwIUyHIqMv8b8QnD91XFST6PBFBKK+2HKilnFf7DhR14QVmxfRuEsh6kt8zS+NJupLNER9qQGiRnQtRdSXAIv+UlJy0V0fGfNllk9TF/hNA03UFwA1RDbeyy3Ph6yXywnTLTBuClGrOkRPssjaucJyopYaXkHQ8HKghlc6QtTI/nWV5T1H5uQqQs+5mkR+VxOJWmmB3kPIerqGpOs1Bog6FajDtTAdMowS9bXg/KnjuppEh68jEPX1lhO1jPt6x4k6FVZsBcaIupGv+Q3RRN1IQ9Q3GCBqRNdSRN0IWPQ3kJKL7vrImG+0fJq6xm8aaKK+BqghsvHeZHk+ZL3cRJhugXFTiFrVIXqSRdZOY8uJWmrYmKDhTUANb3aEqJH96xbLe47MyS2EntOERH5NiESttEDvIWQ9NSXp2tQAUSPff38rTIc8o++7vBWcP3Xk1SQ6nEcg6nzLiVrGne84UafAii3b2PsuC3zNC6OJukBD1IUGiBrRtRRRFwCLvpCUXHTXR8ZcZPk01dRvGmiibgrUENl4I5bnQ9ZLhDDdAuOmELWqQ/Qki6ydZpYTtdSwGUHDCFDD2xwhamT/ut3yniNzcjuh5zQnkV9zIlErLdB7CFlPLUi6tjBA1MlAHe6A6ZCea5Ko7wDnTx0taxIdbkkg6laWE7WMu5XjRJ0MK7bCsMZdClG39jW/M5qoW2uI+k4DRI3oWoqoWwOL/k5SctFdHxnzXZZPUy38poEm6hZADZGN927L8yHr5W7CdAuMm0LUqg7RkyyydtpYTtRSwzYEDe8GaniPI0SN7F9tLe85MidtCT2nHYn82hGJWmmB3kPIempP0rW9AaJOAupwL0yH/ByTRH0vOH/q6FCT6HAHAlF3tJyoZdwdHSfqJFixZeZo3KUQdSdf8/uiibqThqjvM0DUiK6liLoTsOjvIyUX3fWRMd9v+TTV3m8aaKJuD9QQ2Xg7W54PWS+dCdMtMG4KUas6RE+yyNrpYjlRSw27EDTsDNSwqyNEjexfD1jec2ROHiD0nG4k8utGJGqlBXoPIeupO0nX7gaIugZQhwdhOmQZ/db3g+D8qaNHTaLDPQhE3dNyopZx93ScqGvgPnYy9q3vXr7mvaOJupeGqHsbIGpE11JE3QtY9L1JyUV3fWTMD1k+TXX3mwaaqLsDNUQ23octz4esl4cJ0y0wbgpRqzpET7LI2uljOVFLDfsQNHwYqOEjjhA1sn/1tbznyJz0JfScfiTy60ckaqUFeg8h6+lRkq6PGiDq6kAdHsM9ockySdSPgfOnjv41iQ73JxD145YTtYz7cceJujoOuvI17lKI+glf8yejifoJDVE/aYCoEV1LEfUTwKJ/kpRcdNdHxvyU5dPUo37TQBP1o0ANkY33acvzIevlacJ0C4ybQtSqDtGTLLJ2nrGcqKWGzxA0fBqo4bOOEDWyfz1nec+ROXmO0HOeJ5Hf80SiVlqg9xCynl4g6fqCAaKuBtThRdw8mW2SqF8E508dL9UkOvwSgahftpyoZdwvO07U1XAfO+Vp3KUQ9Su+5q9GE/UrGqJ+1QBRI7qWIupXgEX/Kim56K6PjPk1y6epF/ymgSbqF4AaIhvv65bnQ9bL64TpFhg3hahVHaInWWTtDLCcqKWGAwgavg7U8A1HiBrZv960vOfInLxJ6DlvkcjvLSJRKy3QewhZTwNJug40QNSJQB3ehumQY/TXs94G508d79QkOvwOgagHWU7UMu5BjhN1IqzYwsZ+PWuwr/m70UQ9WEPU7xogakTXUkQ9GFj075KSi+76yJjfs3yaGug3DTRRDwRqiGy8QyzPh6yXIYTpFhg3hahVHaInWWTtDLWcqKWGQwkaDgFq+L4jRI3sXx9Y3nNkTj4g9JxhJPIbRiRqpQV6DyHraThJ1+EGiDoBqMOHjhL1h+D8qeOjmkSHPyIQ9QjLiVrGPcJxok5wkKhH+pqPiibqkRqiHmWAqBFdSxH1SGDRj3KEqJExf2z5NDXcbxpooh4O1BDZeEdbng9ZL6MJ0y0wbgpRqzpET7LI2hljOVFLDccQNBwN1PATR4ga2b8+tbznyJx8Sug5Y0nkN5ZI1EoL9B5C1tM4kq7jDBB1VaAOn8F0yDL6ru/PwPlTx+c1iQ5/TiDq8ZYTtYx7vONEXRVWbHnG3vU9wdd8YjRRT9AQ9UQDRI3oWoqoJwCLfiIpueiuj4z5C8unqXF+00AT9TighsjGO8nyfMh6mUSYboFxU4ha1SF6kkXWzmTLiVpqOJmg4SSghl86QtTI/vWV5T1H5uQrQs+ZQiK/KUSiVlqg9xCynqaSdJ1qgKirAHX4GkfUhSaJ+mtw/tTxTU2iw98QiHqa5UQt457mOFFXwUFXhsZdClFP9zX/Npqop2uI+lsDRI3oWoqopwOL/ltSctFdHxnzd5ZPU1P9poEm6qlADZGNd4bl+ZD1MoMw3QLjphC1qkP0JIusnZmWE7XUcCZBwxlADb93hKiR/esHy3uOzMkPhJ4zi0R+s4hErbRA7yFkPc0m6TrbAFFXBurwI0yHdKPPqH8E508dP9UkOvwTgajnWE7UMu45jhN1ZVixFRp7Rj3X1/znaKKeqyHqnw0QNaJrKaKeCyz6n0nJRXd9ZMy/WD5NzfabBpqoZwM1RDbeeZbnQ9bLPMJ0C4ybQtSqDtGTLLJ25ltO1FLD+QQN5wE1/NURokb2r98s7zkyJ78Res4CEvktIBK10gK9h5D1tJCk60IDRF0JqMPvMB0yMkwS9e/g/KljUU2iw4sIRL3YcqKWcS92nKgrwYqtoFDjLoWol/iaL40m6iUaol5qgKgRXUsR9RJg0S8lJRfd9ZExL7N8mlroNw00US8EaohsvMstz4esl+WE6RYYN4WoVR2iJ1lk7aywnKilhisIGi4HarjSEaJG9q9VlvccmZNVhJ6zmkR+q4lErbRA7yFkPa0h6brGAFFXBOqwFqZDkdFn1GvB+VPHuppEh9cRiHq95UQt417vOFFXhBWbZ+wZ9QZf843RRL1BQ9QbDRA1omspot4ALPqNpOSiuz4y5k2WT1Nr/KaBJuo1QA2RjXez5fmQ9bKZMN0C46YQtapD9CSLrJ0tlhO11HALQcPNQA23OkLUyP61zfKeI3OyjdBztpPIbzuRqJUW6D2ErKcdJF13GCDqCkAddsJ0yDRK1DvB+VPHrppEh3cRiHq35UQt497tOFFXgBVbvjGi3qM0r1VsX3reoyFq+S+xiRrRtRRR70EWfS1OctFdHxnzYbXsnqZ2+E0DTdQ7gBoiG29xy/Mh60X6iJ5ugXFTiFrVIXqSRdZOCbKGodiOP/ay9BGtYbB2YtWwJFhDdaDvAcj+VcryniNzUorQc0oDcx2coUrX4hG10gK9h5D1VIaka5lafKIuD9ShLEyHcK5Joi4Lzp86ytUiOlyuFv665YE3Flbc5WvtFRh0XaNEXR5G1DlhjbsUoq7ga14xmqgr1Po7UVc0QNTlgURdAVj0FWtxkgv/HBUYcyXLp6kyftNAE3UZoIbIxlvZ8nzIeqlMmG4rg0kG7Z+qQ/Qki6ydKpYTtdSwCkHDykANqzpC1Mj+lWB5z5E5SSD0nEQS+SUSiVppgd5DyHqqRtK1mgGiLgck6uq4JzRGibo6OH/qqFGL6HANAlEnWU7UMu4kx4m6HO6LHMaIOtnXPCWaqJM1RJ1igKjLAYk6GVj0KbU4yUV3fWTMqZZPU9X8poEm6mpADZGNt6bl+ZD1UpMw3QLjphC1qkP0JIusnVqWE7XUsBZBw5pADdMcIWpk/6ptec+ROalN6Dl1SORXh0jUSgv0HkLWU12SrnUNEHVZIFHXwz2jDpkk6nrg/Knj8FpEhw8nEHV9y4laxl3fcaIuCyPq3JDGXQpRH+FrfmQ0UR+hIeojDRB1WSBRHwEs+iNrcZKL7vrImI+yfJqq6zcNNFHXBWqIbLwNLM+HrJcGhOkWGDeFqFUdoidZZO00tJyopYYNCRo2AGp4tCNEjexfx1jec2ROjiH0nGNJ5HcskaiVFug9hKyn40i6HmeAqMsAifp43DzpmSTq48H5U8cJtYgOn0Ag6hMtJ2oZ94mOE3UZGFFnRzTuUoj6JF/zUDRRn6Qh6pABoi4DJOqTgEUfqsVJLrrrI2P2LJ+mjvObBpqojwNqiGy86ZbnQ9ZLOmG6BcZNIWpVh+hJFlk7GZYTtdQwg6BhOlDDTEeIGtm/sizvOTInWYSek00iv2wiUSst0HsIWU9hkq5hA0RdGkjUObjvPBr99awccP7UkVuL6HAugahPtpyoZdwnO07UpXFvJjP261mn+JqfGk3Up2iI+lQDRF0aSNSnAIv+1Fqc5KK7PjLm0yyfpsJ+00ATdRioIbLxnm55PmS9nE6YboFxU4ha1SF6kkXWzhmWE7XU8AyChqcDNTzTEaJG9q+zLO85MidnEXrO2STyO5tI1EoL9B5C1tM5JF3PMUDUpYBEfS5MhyKjz6jPBedPHefVIjp8HoGoz7ecqGXc5ztO1KVwP7Bk7Bn1Bb7mF0YT9QUaor7QAFGXAhL1BcCiv7AWJ7noro+M+SLLp6lz/KaBJupzgBoiG+/FludD1svFhOkWGDeFqFUdoidZZO1cYjlRSw0vIWh4MVDDSx0hamT/uszyniNzchmh51xOIr/LiUSttEDvIWQ9XUHS9QoDRF0SSNRXwnSIZJkk6ivB+VPHVbWIDl9FIOqrLSdqGffVjhN1SdxPteVr3KUQ9TW+5tdGE/U1GqK+1gBRlwQS9TXAor+2Fie56K6PjPk6y6epK/ymgSbqK4AaIhvv9ZbnQ9bL9YTpFhg3hahVHaInWWTtNLKcqKWGjQgaXg/U8AZHiBrZv260vOfInNxI6Dk3kcjvJiJRKy3QewhZT41JujY2QNQlgER9M0yHXKPf+r4ZnD913FKL6PAtBKJuYjlRy7ibOE7UJXB/R23sW99Nfc1vjSbqphqivtUAUZcAEnVTYNHfWouTXHTXR8acZ/k01dhvGmiibgzUENl48y3Ph6yXfMJ0C4ybQtSqDtGTLLJ2CiwnaqlhAUHDfKCGhY4QNbJ/FVnec2ROigg9J0IivwiRqJUW6D2ErKdmJF2bGSDq4kCivg33jNrou75vA+dPHbfXIjp8O4Gom1tO1DLu5o4TdXHct76Nveu7ha/5HdFE3UJD1HcYIOriQKJuASz6O2pxkovu+siYW1o+TTXzmwaaqJsBNUQ23laW50PWSyvCdAuMm0LUqg7RkyyydlpbTtRSw9YEDVsBNbzTEaJG9q+7LO85Mid3EXrO3STyu5tI1EoL9B5C1lMbkq5tfF1N0uVhNbGxqOOeWkSH7yHQZVvL6VLG3ZZAlzpfERukLWETAzcePd+2aoiMu50jw0QbYMztLR8mZKztCMPEvZYP3zIv95J7TqwadiANDh3+g8GhGGlw6FiL6HBHwuDQyfLBQcbdyZHBQRZyJ8ImBm48er5t1RAZ932ODA4dgDHfb/ngIGO9jzA4dLZ8cJB56UzuObFq2IU0OHQx8Ax/TyruWl2Be8jksNS1FmdYeqAW0eEHCMNSN8uHJRl3N0PDUii2w+vi+4p+dNgFmCNkvrtbfgOVja474Qb6oOU3UBnzg4S4e5Buej00XwFBa8LOGWKPdyMMPcj93tPyupca9iRo2B2oYS9HQAt5z+lt+X1C5qQ3oV8+ROqXDxEf9yot0HsIWU8Pk/YQWsuHwbO1OtB7fVZx3LX6BGL2cjLS08MZ8t/LKQx5mYUF6Tnp6YX5maGCUF5BelFuppcbyUzPzCgoLMgX18zzIqFIXkFuJOfPa5kEwj4kIHykFtHhRwhA2NdyIJRx9yUAoSy20sXMfKk7uOFCMR4ad2EbMFjI/YKfTKHvlH2BE0LwTtnvX+6U+/G5YD/i/LFR+h3CnXJ/ovcDbsBHSROIvG7XQ6wFT2hX4IUiodz0UF4oXJAdzs8tTM/PyYtkRLIyCjMOVdf9FTtS18dIuj526Lr+v6jX/iRd+/+P1+vjJF0f93WVN8/ixcxMasibZ/Bm/4Q/VDwp7xmMG1w/wrTWz/KPtQ51c4QOIu5YfXzK8o+1ZGE+Rfh44mlSU3j6X5ptKLbDe5KkxTMkLZ4haiEbIUOL0Q3t7ims/TDmv427YD/+0Wr/E3Dc6kD/FS+wLj1grj2kfnKQKlNM/ylEsYPUc3/1FLwm456F0iQ4VD77b59ChGI7vKdIN4FnD/3zem9//x3p87OEpvAZqSmUPMicHczwFmvMz9Wys8EgcxGsy+cCw8mh5md/miPz83zw2UJGhtgbhWEvUhjJyArnpud72RnZ2ZHMSDg7J7MwkpWZVxgu8jLzMtJzi8KhiJdTVBTOyigIZ0dyCwuyI8Gm7RVmZGQW5uYXeFnp2Xn5oZzCjLxQJDOcIYC/MCNcWJiRk52dl5FRmJ0TyckVkC7QPyeUFQ7nhrLTM3LTWfl5PkDXqJvC/j7NCV7TlZvCCy7eFF4g3xReINwUxltyU/jHIg7/8ZKWCLLpvGjpTWE8qem8CLgp7O+jTWR+XrL0psDKz0v/jz5yfdn/yPUV3UeuodiOf3zegXxWGeu1gB/fUr4ZpTREf6OZpWGs13rV8nzIDfMq4cb+GmnIeY348ecrJC1eJ2nxOvmjYIYWEy3/KJi1H76w/KNgVu1PcuSjYGBdesBce5PiHwVHH3/cs1CaBIfdAUzqf5V0ExhApH7p8wBCU5jiyEfBrwIHwTdq2dlgppCo8g0DHwUj8/MmkPonAamflZ83Nfk52O/U7O+jX2R+3iL1z7cAOuzv0ymkDgNJOgx0rB7eJunwtmP18A5Jh3cO4FGRzYOdxl1YHQeHxkEuDo2DyEPjIMLQ+LWhoTHGb8VDm9xg4LWQQ+PXpKFk8AEMjbF+ux6Zn3dr4QY95NDIys+7gJvjfg6vDvAHgd6D9c8cyhex+/qfuqGfKCFrfIjlTzBkjocQ7jdDSfdeed2y/v++rNjfD9R/U10PrffAcvb7+D56kHSlaKdZ/nhFxvw+Ie7plnyiuJ9jn8KMNeYPgI0ZWDceMhfkJvnXY4r/xSb5wf9qkxxm+Z/nyZiHEeIeTppohtfa+7Y1xp976ibkUGyHh5yQP7S8niRRfUiop48c2EcfEeIeQdpHI/5lH4ViO2g9ZUbD/80amGnoey2x+jkSOCQCc+3NJH1CNTJO13QfR7EHRwRljiJs+lmOUOYoBzZ9rLmY7UgD/hiYC2D9ebPjlO5Es/0Y2WxdvSsOcyBRo+OJCnkfOpCoMfFEhbwRDiTqk3iixCznQKI+jSdK9H8HEjU2nijRVhxI1Lh4okS1OpCoz+KJEiI4kKjP44kKeeMdSNT4eKJC3kQHEjUhnqiQN8mBRE2MJyrkfelAor6IJ0okqrgDuz6eqJA31YEdNTmeKDFRObCjvownKuRNc2BHfRVPVMj71oFETYknKuTNcCBRU+OJCnnfO5Cor+OJCnmzHEjUN/FEhbwfHUjUtHiiQt4cBxI1PZ6okPezA4n6Np6okDfPgUR9F09UyPvVgUTNiCcq5C1wIFEz44kKecMd+Kzv+3iiQt4iB3bUD/FEhbwlDiRqVjxRIW+ZA4maHU9UyFvhQKJ+ZL2KEv03iT/BHM0IM/2cc+h+ZkUvSN+qFdv7d5Pyf0sddvvnjWrsPb8+cD7H/3fU/99c8b9/FvaLsHm19q6rA/0jA7+XwV1rLvAFFvNJxY7WbxFQv5+B+v0KfiFEdG3PD9T2r4HzXwLn86Jq+zfxvxcIWyjsd7+2ixfb90A3zd+AOtTzr7NIXHOxsCXClgpbJmy5sBXCVgpbJWy1sDXC1gpbJ2y9sA3CNgrbJGyzsC3CtgrbJmy7sB3CdgrbJXUTtkdYsTShibDiwkoIK5n2p0jBFwws8l8wEFxbrFlbollbqllbpllbrllboVlbqVlbpVlbrVlbo1lbq1lbp1lbr1nboFnbqFnbpFnbrFnbolnbqlnbplnbrlnboVnbqVnbpVnbrVnbo1mT9RO9dphmrbhmrYRmrWTa3hfCqAP9roDfgH1wEeBaRX/83mbIWwz0a44dr47+15hlLpZA9Pszr0tjv1a6+jGfZcBczLU5F5l7f8BoeWwxh4I/hrQilmul7/vDSiuBufjZzlyEon9MatUhxpwd+fsPU60+tGvl6H7kag0wF7/Ylosc/Q97rT34mMP/9CNh6w72WuF//sGx9cBczLMnF+n/9iNrGw4m5vC//2DbxgO/1n5/THATkk1tyEV4v356mw8s5tABxOxtOZBrhQ5IP28rknP/21xkHaCf3rb9xZx5wDF72//1WpmRg9DP2wHMxW//VS7CB+Wnt/OfY845yJi9Xf9wrdzIQevn7QbmYoH5XIQOwU9vjy7m0CHF7EnWjbqWd4j6eYel4XKx0GQuCg/ZT6/4vjFnxBCzVyJwrfRITPp5JYG5+N2R9yUCPx/wgHzr/Qx8X+IiR3IB5CAPOMd784G5WOxILoDzngecV7wFwFwscSQXwPuaB+zL3iJgLpY68mPxwP3rAevPY+lXPEq/WPOMnDFKpcG+/xCSv3Vaudje56LBA/2sFOf3vr9HWjqN6LC8OPq6ZYDFwIq7TNpegUHX/aPYKhUz88O6JWHFVhjSuIu5thcKBbUo62tezn8I/9dT0bJ+EQbXymmelKK7PqJrqaebZYFFXw6cXMYGL5uG/0ZZ2TQ37nYlgLkuD4s5O9Pk3a486W5XIY3ocAXC3a6i5Xc7GXdFx+92JWDFllugcZdyt6vka145+m5XSXO3q2zgblcCeLerBCz6yqTkors+MuYquO6p/QnmWP0r4zeN4uAaRKJBVfC0gG5aMsdVCVOS7XGr2kHHneDIdIis8URynwjFdngyJ4mEPlEVqGE1B/ZLNcJ+qQ6e0NWsUj3gK0sLdD0lAuupBknXGml/Jzd0byoO1CEJpkNmkUlyTQLnTx3JaUSHkwnkmmI5ucq4Uxwn1+KwYstP17hLIddUX/Oa0eSaqiHXmgbIFdG1FLmmAou+Jim56K6PjLmW5RNpDb9poH/1swZQQ2TjTbM8H7Je0gjTLTBu7c0LUS8phEkWWTu1LScjqWFtgoZpQA3rOPKpBLJ/1bW858ic1CX0nHok8qtHJGqlBXoPIevpcJKuhxsgauQ33evDdAinmyTq+uD8qeOINKLDRxCI+kjLiVrGfaTjRH0YrNhyijTuUoj6KF/zBtFEfZSGqBsYIGpE11JEfRSw6BuQkovu+siYG1o+TR3uNw00UR8O1BDZeI+2PB+yXo4mTLfAuClEreoQPckia+cYy4laangMQcOjgRoe6whRI/vXcZb3HJmT4wg953gS+R1PJGqlBXoPIevpBJKuJxgg6mJAHU6E6VDkmSTqE8H5U8dJaUSHTyIQdchyopZxhxwn6mKwYvMiGncpRO35mqdHE7WnIep0A0SN6FqKqD1g0aeTkovu+siYMyyfpk7wmwaaqE8AaohsvJmW50PWSyZhugXGTSFqVYfoSRZZO1mWE7XUMIugYSZQw2xHiBrZv8KW9xyZkzCh5+SQyC+HSNRKC/QeQtZTLknXXANEvQf4ZryTYTpkGCXqk8H5U8cpaUSHTyEQ9amWE7WM+1THiXoP7GczCowR9Wm+5qdHE/VpGqI+3QBR7wH+9sBpwKI/PY2TXHTXR8Z8huXTVK7fNNBEnQvUENl4z7Q8H3/UC2G6BcZNIWpVh+hJFlk7Z1lO1FLDswgangnU8GxHiBrZv86xvOfInJxD6DnnksjvXCJRKy3QewhZT+eRdD3PAFEj3zV/PkyHPKPvuzwfnD91XJBGdPgCAlFfaDlRy7gvdJyod8OIOtvY+y4v8jW/OJqoL9IQ9cUGiHo3kKgvAhb9xWmc5KK7PjLmSyyfps7zmwaaqM8DaohsvJdang9ZL5cSpltg3BSiVnWInmSRtXOZ5UQtNbyMoOGlQA0vd4Sokf3rCst7jszJFYSecyWJ/K4kErXSAr2HkPV0FUnXqwwQ9S4gUV8N0yE91yRRXw3OnzquSSM6fA2BqK+1nKhl3Nc6TtS7YERdGNa4SyHq63zNr48m6us0RH29AaLeBSTq64BFf30aJ7noro+MuZHl09RVftNAE/VVQA2RjfcGy/Mh6+UGwnQLjJtC1KoO0ZMssnZutJyopYY3EjS8AajhTY4QNbJ/Nba858icNCb0nJtJ5HczkaiVFug9hKynW0i63mKAqHcCiboJTIf8HJNE3QScP3U0TSM63JRA1LdaTtQy7lsdJ+qdMKLOzNG4SyHqPF/z/GiiztMQdb4Bot4JJOo8YNHnp3GSi+76yJgLLJ+mbvGbBpqobwFqiGy8hZbnQ9ZLIWG6BcZNIWpVh+hJFlk7RZYTtdSwiKBhIVDDiCNEjexfzSzvOTInzQg95zYS+d1GJGqlBXoPIevpdpKutxsg6h1Aom4O0yHL6Le+m4Pzp44WaUSHWxCI+g7LiVrGfYfjRL0DRtT5xr713dLXvFU0UbfUEHUrA0S9A0jULYFF3yqNk1x010fG3Nryaep2v2mgifp2oIbIxnun5fmQ9XInYboFxk0halWH6EkWWTt3WU7UUsO7CBreCdTwbkeIGtm/2ljec2RO2hB6zj0k8ruHSNRKC/QeQtZTW5KubQ0Q9XYgUbfDPaHJMknU7cD5U0f7NKLD7QlEfa/lRC3jvtdxot6OI+p8jbsUou7ga94xmqg7aIi6owGi3g4k6g7Aou+YxkkuuusjY+5k+TTV1m8aaKJuC9QQ2Xjvszwfsl7uI0y3wLgpRK3qED3JImvnfsuJWmp4P0HD+4AadnaEqJH9q4vlPUfmpAuh53QlkV9XIlErLdB7CFlPD5B0fcAAUW8DEnU33DyZbZKou4Hzp47uaUSHuxOI+kHLiVrG/aDjRL0N963vPI27FKLu4WveM5qoe2iIuqcBot4GJOoewKLvmcZJLrrrI2PuZfk09YDfNNBE/QBQQ2Tj7W15PmS99CZMt8C4KUSt6hA9ySJr5yHLiVpq+BBBw95ADR92hKiR/auP5T1H5qQPoec8QiK/R4hErbRA7yFkPfUl6drXAFFvBRJ1P5gOOUZ/PasfOH/qeDSN6PCjBKJ+zHKilnE/5jhRb4URddjYr2f19zV/PJqo+2uI+nEDRL0VSNT9gUX/eBonueiuj4z5Ccunqb5+00ATdV+ghsjG+6Tl+ZD18iRhugXGTSFqVYfoSRZZO09ZTtRSw6cIGj4J1PBpR4ga2b+esbznyJw8Q+g5z5LI71kiUSst0HsIWU/PkXR9zgBRbwES9fOOEvXz4Pyp44U0osMvEIj6RcuJWsb9ouNEvcVBon7J1/zlaKJ+SUPULxsg6i1Aon4JWPQvO0LUyJhfsXyaes5vGmiifg6oIbLxvmp5PmS9vEqYboFxU4ha1SF6kkXWzmuWE7XU8DWChq8CNXzdEaJG9q8BlvccmZMBhJ7zBon83iAStdICvYeQ9fQmSdc3DRD1ZiBRvwXTIcvou77fAudPHQPTiA4PJBD125YTtYz7bceJejOMqPOMvev7HV/zQdFE/Y6GqAcZIOrNQKJ+B1j0g9I4yUV3fWTMgy2fpt70mwaaqN8EaohsvO9ang9ZL+8Spltg3BSiVnWInmSRtfOe5UQtNXyPoOG7QA2HOELUyP411PKeI3MylNBz3ieR3/tEolZaoPcQsp4+IOn6gQGi3gQk6mE4oi40SdTDwPlTx/A0osPDCUT9oeVELeP+0HGi3oQj6gyNuxSi/sjXfEQ0UX+kIeoRBoh6E5CoPwIW/Yg0TnLRXR8Z80jLp6kP/KaBJuoPgBoiG+8oy/Mh62UUYboFxk0halWH6EkWWTsfW07UUsOPCRqOAmo42hGiRvavMZb3HJmTMYSe8wmJ/D4hErXSAr2HkPX0KUnXTw0Q9UYgUY+F6ZBu9Bn1WHD+1DEujejwOAJRf2Y5Ucu4P3OcqDfCiLrQ2DPqz33Nx0cT9ecaoh5vgKg3Aon6c2DRj0/jJBfd9ZExT7B8mvrUbxpoov4UqCGy8U60PB+yXiYSpltg3BSiVnWInmSRtfOF5UQtNfyCoOFEoIaTHCFqZP+abHnPkTmZTOg5X5LI70siUSst0HsIWU9fkXT9ygBRbwAS9RSYDhkZJol6Cjh/6piaRnR4KoGov7acqGXcXztO1BtgRF1QqHGXQtTf+JpPiybqbzREPc0AUW8AEvU3wKKflsZJLrrrI2Oebvk09ZXfNNBE/RVQQ2Tj/dbyfMh6+ZYw3QLjphC1qkP0JIusne8sJ2qp4XcEDb8FajjDEaJG9q+ZlvccmZOZhJ7zPYn8vicStdICvYeQ9fQDSdcfDBD1eiBRz4LpUGT0GfUscP7UMTuN6PBsAlH/aDlRy7h/dJyo18OI2jP2jPonX/M50UT9k4ao5xgg6vVAov4JWPRz0jjJRXd9ZMxzLZ+mfvCbBpqofwBqiGy8P1ueD1kvPxOmW2DcFKJWdYieZJG184vlRC01/IWg4c9ADec5QtTI/jXf8p4jczKf0HN+JZHfr0SiVlqg9xCynn4j6fqbAaJeByTqBTAdMo0S9QJw/tSxMI3o8EICUf9uOVHLuH93nKjXwYg63xhRL/I1XxxN1Is0RL3YAFGvAxL1ImDRL07jJBfd9ZExL7F8mvrNbxpoov4NqCGy8S61PB+yXpYSpltg3BSiVnWInmSRtbPMcqKWGi4jaLgUqOFyR4ga2b9WWN5zZE5WEHrOShL5rSQStdICvYeQ9bSKpOsqA0S9FkjUq2E6hHNNEvVqcP7UsSaN6PAaAlGvtZyoZdxrHSfqtTCizglr3KUQ9Tpf8/XRRL1OQ9TrDRD1WiBRrwMW/fo0TnLhn6MCY95g+TS1ym8aaKJeBdQQ2Xg3Wp4PWS8bCdMtMG4KUas6RE+yyNrZZDlRSw03ETTcCNRwsyNEjexfWyzvOTInWwg9ZyuJ/LYSiVppgd5DyHraRtJ1mwGiXgMk6u24JzRGiXo7OH/q2JFGdHgHgah3Wk7UMu6djhP1GhhRZxoj6l2+5rujiXqXhqh3GyDqNUCi3gUs+t1pnOSiuz4y5j2WT1Pb/KaBJuptQA2hjbe23fmQ9SJ9RE+3wLgpRK3qED3JImvnMLKGodiOP/ay9BGtYbB2YtWwOFhDdaDvAcj+VcLyniNzUoLQc0oCcx2coUrW5hG10gK9h5D1VIqka6nafKJeDSTq0jAdwiGTRF0anD91lKlNdLhMbfx1ywJvLKy4y9beKzDoukaJejWMqHNDGncpRF3O17x87WL70nO52n8navkvsYl6NZCoywGLvnxtTnLRXR8ZcwXLp6lSftNAE3UpoIbIxlvR8nzIeqlImG6BcVOIWtUhepJF1k4ly4laaliJoGFFoIaVHSFqZP+qYnnPkTmpQug5VUnkV5VI1EoL9B5C1lMCSdcEA0S9CkjUibh50jNJ1Ing/KmjWm2iw9UIRF3dcqKWcVd3nKhXwYg6O6Jxl0LUNXzNk6KJuoaGqJMMEPUqIFHXABZ9Um1OctFdHxlzsuXTVILfNNBEnQDUENl4UyzPh6yXFMJ0C4ybQtSqDtGTLLJ2Ui0naqlhKkHDFKCGNR0hamT/qmV5z5E5qUXoOWkk8ksjErXSAr2HkPVUm6RrbQNEvRJI1HVgOmQa/fWsOuD8qaNubaLDdQlEXc9yopZx13OcqFfi3kxm7NezDvc1rx9N1IdriLq+AaJeCSTqw4FFX782J7noro+M+QjLp6naftNAE3VtoIbIxnuk5fmQ9XIkYboFxk0halWH6EkWWTtHWU7UUsOjCBoeCdSwgSNEjexfDS3vOTInDQk952gS+R1NJGqlBXoPIevpGJKuxxgg6hVAoj4WpkOR0WfUx4Lzp47jahMdPo5A1MdbTtQy7uMdJ+oVuF/PMvaM+gRf8xOjifoEDVGfaICoVwCJ+gRg0Z9Ym5NcdNdHxnyS5dPUMX7TQBP1MUANkY03ZHk+ZL2ECNMtMG4KUas6RE+yyNrxLCdqqaFH0DAE1DDdEaJG9q8My3uOzEkGoedkksgvk0jUSgv0HkLWUxZJ1ywDRL0cSNTZMB0iWSaJOhucP3WEaxMdDhOIOsdyopZx5zhO1MthRB3K17hLIepcX/OTo4k6V0PUJxsg6uVAos4FFv3JtTnJRXd9ZMynWD5NZflNA03UWUANkY33VMvzIevlVMJ0C4ybQtSqDtGTLLJ2TrOcqKWGpxE0PBWo4emOEDWyf51hec+ROTmD0HPOJJHfmUSiVlqg9xCyns4i6XqWAaJeBiTqs2E65Br91vfZ4Pyp45zaRIfPIRD1uZYTtYz7XMeJehnu76iNfev7PF/z86OJ+jwNUZ9vgKiXAYn6PGDRn1+bk1x010fGfIHl09RZftNAE/VZQA2RjfdCy/Mh6+VCwnQLjJtC1KoO0ZMssnYuspyopYYXETS8EKjhxY4QNbJ/XWJ5z5E5uYTQcy4lkd+lRKJWWqD3ELKeLiPpepkBol4KJOrLcc+ojb7r+3Jw/tRxRW2iw1cQiPpKy4laxn2l40S9FPetb2Pv+r7K1/zqaKK+SkPUVxsg6qVAor4KWPRX1+YkF931kTFfY/k0dZnfNNBEfRlQQ2TjvdbyfMh6uZYw3QLjphC1qkP0JIusnessJ2qp4XUEDa8Fani9I0SN7F+NLO85MieNCD3nBhL53UAkaqUFeg8h6+lGkq43+rqapMsltbCxqOOm2kSHbyLQZWPL6VLG3ZhAlzpfERukMWETAzcePd+2aoiM+2ZHhokbgTHfYvkwIWO9mTBMNLF8+JZ5aULuObFq2JQ0ODT9DwaHxaTB4dbaRIdvJQwOeZYPDjLuPEcGB1nIeYRNDNx49HzbqiEy7nxHBoemwJgLLB8cZKz5hMGh0PLBQealkNxzYtWwiDQ4FBl4hr8I+Aw/AtxDJoelSG3OsNSsNtHhZoRh6TbLhyUZ922GhqVQbIdX5PuKfnRYBMwRMt+3W34DlY3udsINtLnlN1AZc3NC3C1IN70Wmq+AoDVh5wyxx28jDD3I/X6H5XUvNbyDoOHtQA1bOgJayHtOK8vvEzInrQj9sjWpX7YmPu5VWqD3ELKe7iTtIbSWd4Jna3Wgvx45DPfJsfcREC7vIkBa10CuO9b4c+6Q5x0C5/cGztsHztsFztsGzu8JnLcJnN8dOL8rcH5n4Lx14LxV4Lxl4PyOwHmLwHnzwPntgfPbAufNAueRwHlR4LwwcF4QOM8PnOcFzm8NnDcNnDcJnN8SOL85cN44cF46ee95qcB5ycB5icB58cD5YYHzYoHzPUl7z3cHzncFzncGzncEzrcHzrcFzrcGzrcEzjcHzjcFzjcGzjcEztcHztcFztcGztcEzlcHzlcFzlcGzlcEzpcHzpcFzpcGzpcEzh9P2XveP3D+WOD80cB5v8B538D5I4HzPoHzhwPnDwXOewfOewXOewbOewTOHwycdw+cdwucPxA47xo47xI47xw4vz9wfl/gvFPgvGPgvEPg/N7AefvAebvAedvA+T2B8zaB87tq7z0fXWvv+ZjA+SeB808D52MD5+MC558Fzj8PnI8PnE8InE8MnH8ROJ8UOJ8cOP8ycP5V4HxK4Hxq4PzrwPk3gfNpgfPpgfNvA+ffBc5nBM5nBs6/D5z/EDifFTifHTj/MXC+MXC+IXC+PnC+LnC+NnC+JnC+OnC+KnC+MnC+InC+PHC+LHC+NHC+JHC+OHC+KHBeMi3QJwPnxQPnhwXOiwXO9wSusztwvitwvjNwviNwvj1wvi1wvjVwviVwvjlwvsk/f6zYn8fdYg+0EXaPsLbC2glrL+xeYR2EdRTWSdh9wu4X1llYF2FdhT0grJuw7sIeFNZDWE9hvYT1FvaQsIeF9RH2iLC+wvoJe1TYY8L6C3tc2BPCnhT2lLCnhT0j7Flhzwl7XtgLwl4U9pKwl4W9IuxVYa8Je13YAGFvCHtT2FvCBgp7W9g7wgYJGyzsXWHvCRsibKiw94V9IGyYsOHCPhT2kbARwkYKGyXsY2GjhY0R9omwT4WNFTZO2GfCPhc2XtgEYROFfSFskrDJwr4U9pWwKcKmCvta2DfCpgmbLuxbYd8JmyFsprDvhf0gbJaw2cJ+FPaTsDnC5gr7WdgvwuYJmy/sV2G/CVsgbKGw34UtErZY2BJhS4UtE7Zc2AphK4WtErZa2Bpha4WtE7Ze2AZhG4VtErZZ2BZhW4VtE7Zd2A5hO4XtErZb2B5hxeqIeqpTbJ/jMP+fZ/r/DMV2eEvL4ObP4sW4vv4O9LWef53iQt8SwkoKKyWstLAywsoKKyesvLAKwioKqySssrAqwqoKSxCWKKyasOrCaghLEpYsLEVYqrCawmoJSxNWW1gdYXWF1RN2eJ0/Rfqjt6m+VifQ79Q/NWslNWulNGulNWtlNGtlNWvlNGvlNWsVNGsVNWuVNGuVNWtVNGtVNWsJmrVEzVo1zVp1zVoNzVqSZi1Zs5aiWUvVrNXUrNXSrKVp1mpr1upo1upq1upp1g7314JHSf+fZ/r/DMV27LNnY2VluTdivZb6E8cSdXB+bW3I+awmOhexxCwu7ZWE6PeHm16p2K+V7uvnlQbmYpvNucj8y0+vTGwxhwIxe2VjuVb6Pvp55YC52G5nLkJRfnrlDzHm7MjfYvYqHNq1cjT6eRWBudhhWy5ytH56lQ4+5vA/xOxVPthrhf9RP68KMBc77clF+r/46VU9mJjD/xqzl3Dg1yrYj35eIjAXu2zIRXi/fnrVDizm0AHE7FU/kGuFDkg/rwYwF7v/21xkHaCfXtL+Ys484Ji95H+9VmbkIPTzUoC52PNf5SJ8UH56qf8cc85BxuzV/Idr5UYOWj+vFjAXxY42novQIfjppeliDh1SzF7tv1/LO0T9vDrAXBxmMheFh+ynV3ffmDNiiNmrF7hWeiQm/bzDgbkobigXodgOD/j5gAfkWy/IZ7HmooQjuQBykAec471dwFyUdCQXwHnPA84rXvB+G2suSjmSC+B9zQP2Za8EMBelSblAf1cNuH89YP15SP1k/V4trJ5/vcP9Z2J1/Wdktf1nZrX8Z2ip/jO1ZP8ZWw3/mVs1/xlcgv9Mror/jK6S/8yugv8M749nWf6zvdL+s76S/rO/4lHPWOWB/q4xcu6pXweVhwyjL5XF+b3vH6QdUYfosLw4+rpHIuGQFPeRgU0Buq7Rl8oeDiu2QmMvlT3K17yB/8WAv57UHuUXYXCtgebpLfpOhOha6onrUcCibwBOLmODH6VpHLHGfVQdzgSDvtvVA+a6ISzm7EyTd7uGpLvd0XWIDh9NuNsdY/ndTsZ9jON3u3qwYsst0LhLudsd62t+XPTd7ljN3e44A3e7esC73bHAoj+OlFx010fGfDyue2r/njJW/470m0ZxcA0i0eAE8LSAbloyxycQpiTb41a1g477REemQ2SNn0TuE6HYDk/m5CRCnzgBqGHIgf0SIuwXDzyhq1nFC/jK0gJdTycB6ymdpGt6nb+TG7o31QXqkAHTIbPIJLlmgPOnjsw6RIczCeSaZTm5yrizHCfXurBiy0/XuEsh12xf83A0uWZryDVsgFwRXUuRazaw6MOk5KK7PjLmHMsn0nS/aaDf4JcO1BDZeHMtz4esl1zCdAuMm/I2OFWH6EkWWTsnW05GUsOTCRrmAjU8xZFPJZD961TLe47MyamEnnMaifxOIxK10gK9h5D1dDpJ19MNEDXy2/dnwHQIp5sk6jPA+VPHmXWYDhOI+izLiVrGfZbjRF0HVmw5RRp3KUR9tq/5OdFEfbaGqM8xQNSIrqWI+mxg0Z9DSi666yNjPtfyaep0v2mgifp0oIbIxnue5fmQ9XIeYboFxk0halWH6EkWWTvnW07UUsPzCRqeB9TwAkeIGtm/LrS858icXEjoOReRyO8iIlErLdB7CFlPF5N0vdgAUdcG6nAJTIcioz9udQk4f+q4tA7R4UsJRH2Z5UQt477McaKuDSs2L6Jxl0LUl/uaXxFN1JdriPoKA0SN6FqKqC8HFv0VpOSiuz4y5istn6Yu9psGmqgvBmqIbLxXWZ4PWS9XEaZbYNwUolZ1iJ5kkbVzteVELTW8mqDhVUANr3GEqJH961rLe47MybWEnnMdifyuIxK10gK9h5D1dD1J1+sNEHUaUIdGMB0yjBJ1I3D+1HFDHaLDNxCI+kbLiVrGfaPjRJ0GK7YCY0R9k69542iivklD1I0NEDWiaymivglY9I1JyUV3fWTMN1s+TV3vNw00UV8P1BDZeG+xPB+yXm4hTLfAuClEreoQPckia6eJ5UQtNWxC0PAWoIZNHSFqZP+61fKeI3NyK6Hn5JHIL49I1EoL9B5C1lM+Sdd8A0SNfP99AUyHPKPvuywA508dhXWIDhcSiLrIcqKWcRc5TtS1YMWWbex9lxFf82bRRB3REHUzA0SN6FqKqCPAom9GSi666yNjvs3yaSrfbxpoos4HaohsvLdbng9ZL7cTpltg3BSiVnWInmSRtdPccqKWGjYnaHg7UMMWjhA1sn/dYXnPkTm5g9BzWpLIryWRqJUW6D2ErKdWJF1bGSDqmkAdWsN0SM81SdStwflTx511iA7fSSDquywnahn3XY4TdU1YsRWGNe5SiPpuX/M20UR9t4ao2xggakTXUkR9N7Do25CSi+76yJjvsXyaauU3DTRRtwJqiGy8bS3Ph6yXtoTpFhg3hahVHaInWWTttLOcqKWG7QgatgVq2N4Rokb2r3st7zkyJ/cSek4HEvl1IBK10gK9h5D11JGka0cDRJ0K1KETTIf8HJNE3QmcP3XcV4fo8H0Eor7fcqKWcd/vOFGnwootM0fjLoWoO/uad4km6s4aou5igKgRXUsRdWdg0XchJRfd9ZExd7V8muroNw00UXcEaohsvA9Yng9ZLw8Qpltg3BSiVnWInmSRtdPNcqKWGnYjaPgAUMPujhA1sn89aHnPkTl5kNBzepDIrweRqJUW6D2ErKeeJF17GiDqFKAOvWA6ZBn91ncvcP7U0bsO0eHeBKJ+yHKilnE/5DhRp+A+djL2re+Hfc37RBP1wxqi7mOAqBFdSxH1w8Ci70NKLrrrI2N+xPJpqqffNNBE3ROoIbLx9rU8H7Je+hKmW2DcFKJWdYieZJG1089yopYa9iNo2Beo4aOOEDWyfz1mec+ROXmM0HP6k8ivP5GolRboPYSsp8dJuj5ugKiTgTo8gXtCk2WSqJ8A508dT9YhOvwkgaifspyoZdxPOU7UyTjoyte4SyHqp33Nn4km6qc1RP2MAaJGdC1F1E8Di/4ZUnLRXR8Z87OWT1OP+00DTdSPAzVENt7nLM+HrJfnCNMtMG4KUas6RE+yyNp53nKilho+T9DwOaCGLzhC1Mj+9aLlPUfm5EVCz3mJRH4vEYlaaYHeQ8h6epmk68sGiDoJqMMruHky2yRRvwLOnzperUN0+FUCUb9mOVHLuF9znKiTcB875WncpRD1677mA6KJ+nUNUQ8wQNSIrqWI+nVg0Q8gJRfd9ZExv2H5NPWy3zTQRP0yUENk433T8nzIenmTMN0C46YQtapD9CSLrJ23LCdqqeFbBA3fBGo40BGiRvavty3vOTInbxN6zjsk8nuHSNRKC/QeQtbTIJKugwwQdQ2gDoNhOuQY/fWsweD8qePdOkSH3yUQ9XuWE7WM+z3HiboGrNjCxn49a4iv+dBooh6iIeqhBoga0bUUUQ8BFv1QUnLRXR8Z8/uWT1OD/KaBJupBQA2RjfcDy/Mh6+UDwnQLjJtC1KoO0ZMssnaGWU7UUsNhBA0/AGo43BGiRvavDy3vOTInHxJ6zkck8vuISNRKC/QeQtbTCJKuIwwQdXWgDiMdJeqR4PypY1QdosOjCET9seVELeP+2HGiru4gUY/2NR8TTdSjNUQ9xgBRI7qWIurRwKIf4whRI2P+xPJpaoTfNNBEPQKoIbLxfmp5PmS9fEqYboFxU4ha1SF6kkXWzljLiVpqOJag4adADcc5QtTI/vWZ5T1H5uQzQs/5nER+nxOJWmmB3kPIehpP0nW8AaKuBtRhAkyHLKPv+p4Azp86JtYhOjyRQNRfWE7UMu4vHCfqarBiyzP2ru9JvuaTo4l6koaoJxsgakTXUkQ9CVj0k0nJRXd9ZMxfWj5NjfebBpqoxwM1RDberyzPh6yXrwjTLTBuClGrOkRPssjamWI5UUsNpxA0/Aqo4VRHiBrZv762vOfInHxN6DnfkMjvGyJRKy3QewhZT9NIuk4zQNSJQB2m44i60CRRTwfnTx3f1iE6/C2BqL+znKhl3N85TtSJOOjK0LhLIeoZvuYzo4l6hoaoZxogakTXUkQ9A1j0M0nJRXd9ZMzfWz5NTfObBpqopwE1RDbeHyzPh6yXHwjTLTBuClGrOkRPssjamWU5UUsNZxE0/AGo4WxHiBrZv360vOfInPxI6Dk/kcjvJyJRKy3QewhZT3NIus4xQNQJQB3mwnRIN/qMei44f+r4uQ7R4Z8JRP2L5UQt4/7FcaJOgBVbobFn1PN8zedHE/U8DVHPN0DUiK6liHoesOjnk5KL7vrImH+1fJqa4zcNNFHPAWqIbLy/WZ4PWS+/EaZbYNwUolZ1iJ5kkbWzwHKilhouIGj4G1DDhY4QNbJ//W55z5E5+Z3QcxaRyG8RkaiVFug9hKynxSRdFxsg6qpAHZbAdMjIMEnUS8D5U8fSOkSHlxKIepnlRC3jXuY4UVeFFVtBocZdClEv9zVfEU3UyzVEvcIAUSO6liLq5cCiX0FKLrrrI2Neafk0tdhvGmiiXgzUENl4V1meD1kvqwjTLTBuClGrOkRPssjaWW05UUsNVxM0XAXUcI0jRI3sX2st7zkyJ2sJPWcdifzWEYlaaYHeQ8h6Wk/Sdb0Boq4C1GEDTIcio8+oN4Dzp46NdYgObyQQ9SbLiVrGvclxoq4CKzbP2DPqzb7mW6KJerOGqLcYIGpE11JEvRlY9FtIyUV3fWTMWy2fptb7TQNN1OuBGiIb7zbL8yHrZRthugXGTSFqVYfoSRZZO9stJ2qp4XaChtuAGu5whKiR/Wun5T1H5mQnoefsIpHfLiJRKy3QewhZT7tJuu42QNSVgTrsgemQaZSo94Dz99dRl+iwvDj6uofVtZuoZdyH1d2rL+i6Rom6MqzY8o0RdXFf8xJ1i+1Lz8Xr/p2o5b/EJmpE11JEXRxY9CXqcpKL7vrImEvWtXua2u03DTRR7wbeOZGNt5Tl+ZD1UqoufroFxk0halWH6EkWWTulyRqGYjv+2MulCRqWAmpYBqyhOtD3AGT/Kmt5z5E5KUvoOeWAuQ7OUOXq8ohaaYHeQ8h6Kk/StXxdPlFXAupQAaZDONckUVcA508dFesSHa5IIOpKlhO1jLuS40RdCUbUOWGNuxSiruxrXiWaqCtriLqKAaKuBCTqysCir1KXk1z456jAmKtaPk2V95sGmqjLAzVENt4Ey/Mh6yWBMN0mgEkG7Z+qQ/Qki6ydRMuJWmqYSNAwAahhNUeIGtm/qlvec2ROqhN6Tg0S+dUgErXSAr2HkPWURNI1yQBRVwQSdTLuCY1Rok4G508dKXWJDqcQiDrVcqKWcac6TtQVcV/kMEbUNX3Na0UTdU0NUdcyQNQVgURdE1j0tepykovu+siY0yyfppL8poEm6iSghsjGW9vyfMh6qU2YboFxU4ha1SF6kkXWTh3LiVpqWIegYW2ghnUdIWpk/6pnec+ROalH6DmHk8jvcCJRKy3QewhZT/VJutY3QNQVgER9BO4ZdcgkUR8Bzp86jqxLdPhIAlEfZTlRy7iPcpyoK8CIOjekcZdC1A18zRtGE3UDDVE3NEDUFYBE3QBY9A3rcpKL7vrImI+2fJqq7zcNNFHXB2qIbLzHWJ4PWS/HEKZbYNwUolZ1iJ5kkbVzrOVELTU8lqDhMUANj3OEqJH963jLe47MyfGEnnMCifxOIBK10gK9h5D1dCJJ1xMNEHV5IFGfhJsnPZNEfRI4f+oI1SU6HCIQtWc5Ucu4PceJujyMqLMjGncpRJ3ua54RTdTpGqLOMEDU5YFEnQ4s+oy6nOSiuz4y5kzLp6kT/aaBJuoTgRoiG2+W5fmQ9ZJFmG6BcVOIWtUhepJF1k625UQtNcwmaJgF1DDsCFEj+1eO5T1H5iSH0HNySeSXSyRqpQV6DyHr6WSSricbIOpyQKI+BfedR6O/nnUKOH/qOLUu0eFTCUR9muVELeM+zXGiLod7M5mxX8863df8jGiiPl1D1GcYIOpyQKI+HVj0Z9TlJBfd9ZExn2n5NHWy3zTQRH0yUENk4z3L8nzIejmLMN0C46YQtapD9CSLrJ2zLSdqqeHZBA3PAmp4jiNEjexf51rec2ROziX0nPNI5HcekaiVFug9hKyn80m6nm+AqMsCifoCmA5FRp9RXwDOnzourEt0+EICUV9kOVHLuC9ynKjL4n5gydgz6ot9zS+JJuqLNUR9iQGiLgsk6ouBRX9JXU5y0V0fGfOllk9T5/tNA03U5wM1RDbeyyzPh6yXywjTLTBuClGrOkRPssjaudxyopYaXk7Q8DKghlc4QtTI/nWl5T1H5uRKQs+5ikR+VxGJWmmB3kPIerqapOvVBoi6DJCor4HpEMkySdTXgPOnjmvrEh2+lkDU11lO1DLu6xwn6jK4n2rL17hLIerrfc0bRRP19RqibmSAqMsAifp6YNE3qstJLrrrI2O+wfJp6mq/aaCJ+mqghsjGe6Pl+ZD1ciNhugXGTSFqVYfoSRZZOzdZTtRSw5sIGt4I1LCxI0SN7F83W95zZE5uJvScW0jkdwuRqJUW6D2ErKcmJF2bGCDq0kCibgrTIdfot76bgvOnjlvrEh2+lUDUeZYTtYw7z3GiLo37O2pj3/rO9zUviCbqfA1RFxgg6tJAos4HFn1BXU5y0V0fGXOh5dNUE79poIm6CVBDZOMtsjwfsl6KCNMtMG4KUas6RE+yyNqJWE7UUsMIQcMioIbNHCFqZP+6zfKeI3NyG6Hn3E4iv9uJRK20QO8hZD01J+na3ABRlwISdQvcM2qj7/puAc6fOu6oS3T4DgJRt7ScqGXcLR0n6lK4b30be9d3K1/z1tFE3UpD1K0NEHUpIFG3AhZ967qc5KK7PjLmOy2fppr7TQNN1M2BGiIb712W50PWy12E6RYYN4WoVR2iJ1lk7dxtOVFLDe8maHgXUMM2jhA1sn/dY3nPkTm5h9Bz2pLIry2RqJUW6D2ErKd2JF3b+bqapMuSdbCxqKN9XaLD7Ql0ea/ldCnjvpdAlzpfERvkXsImBm48er5t1RAZdwdHhol2wJg7Wj5MyFg7EIaJTpYP3zIvncg9J1YN7yMNDvf9B4NDCdLgcH9dosP3EwaHzpYPDjLuzo4MDrKQOxM2MXDj0fNtq4bIuLs4MjjcB4y5q+WDg4y1C2FweMDywUHm5QFyz4lVw26kwaGbgWf4xYHP8LsD95DJYal7Xc6w9GBdosMPEoalHpYPSzLuHoaGpVBsh9fN9xX96LAbMEfIfPe0/AYqG11Pwg20l+U3UBlzL0LcvUk3vd6ar4CgNWHnDLHHexCGHuR+f8jyupcaPkTQsCdQw4cdAS3kPaeP5fcJmZM+hH75CKlfPkJ83Ku0QO8hZD31Je0htJZ9wbO1OtB7fVEZ3LX6BWL2cjLS08MZ8t/LKQx5mYUF6Tnp6YX5maGCUF5BelFuppcbyUzPzCgoLMgX18zzIqFIXkFuJOfPa5kEwn4kIHy0LtHhRwlA+JjlQCjjfowAhLLYShcz86Xu4IYLxXho3IVtwGAh9w9+MoW+Uz4GnBCCd8r+/3Kn3I/PBfsR54+N0v8Q7pT7E70/cAM+TppA5HW7HmIteEK7Ai8UCeWmh/JC4YLscH5uYXp+Tl4kI5KVUZhxqLrur9iRuj5B0vWJQ9f1/0W9PknS9cn/8Xp9iqTrU76u8uZZvJiZSQ158wze7J/2h4pn5D2DcYPrT5jW+lv+sdahbo7QQcQdq4/PWv6xlizMZwkfTzxHagrP/UuzDcV2eM+QtHiepMXzRC1kI2RokXS03T2FtR+S/9u4C/bjH632U8BxqwP9V7zAuvSAufaQ+slBSmxr7acQxQ5Sz/3VU/CajHsWSpPgUPnCv30KEYrt8J4l3QReOPTP6739/Xekzy8QmkIaqSmUPMicHczwFmvML9a1s8EgcxGsyxcDw8mh5md/miPz81Lw2UJGhtgbhWEvUhjJyArnpud72RnZ2ZHMSDg7J7MwkpWZVxgu8jLzMtJzi8KhiJdTVBTOyigIZ0dyCwuyI8Gm7RVmZGQW5uYXeFnp2Xn5oZzCjLxQJDOcIYC/MCNcWJiRk52dl5FRmJ0TyckVkC7QPyeUFQ7nhrLTM3LTWfl5KUDXqJvC/j7NCV7TlZvCyy7eFF4m3xReJtwU6lhyU/jHIg7/8ZKWCLLpvGLpTaEOqem8Argp7O+jTWR+XrX0psDKz6v/jz5yfc3/yPV13UeuodiOf3zegXxWGeu1gB/fUr4ZpTREf6OZpWGs1xpgeT7khhlAuLG/QRpy3iB+/Pk6SYs3SVq8Sf4omKFFPcs/Cmbth8Mt/yiYVfv1HfkoGFiXHjDXXv34R8HRxx/3LJQmwWH3LSb1DyDdBN4iUr/0+S1CU2jgyEfBA4CD4MC6djaYBiSqHGjgo2Bkft4GUn99IPWz8vO2Jj8H+52a/X30i8zPO6T++Q5Ah/19OoXUYRBJh0GO1cNgkg6DHauHd0k6vHsAj4psHuw07sLqODg0vufi0PgeeWh8jzA0Hm1oaIzxW/HQJjcEeC3k0Hg0aSgZcgBDY6zfrkfmZ2hd3KCHHBpZ+RkKuDnu5/AOB75M6H1Y/8yhfBH7Mf9TN/QTJWSNf2D5EwyZ4w8I95thpHuvvG5Z/39fXezvB+q/qa6H1ntgOft9HI4eJF0p2mMtf7wiYx5OiPs4Sz5R3M+xT2HGGvOHwMYMrBsPmQtyk/zrMcX/YpP88H+1SX5k+Z/nyZg/IsQ9gjTRjKi7921rjD/31E3IodgODzkhj7S8niRRjSTU0ygH9tEoQtwfk/bRx/+yj0KxHbSecuLR/5s1cJKh77XE6udo4JAIzLV3EukTqtFxuqb7OIY9OCIocwxh06c7QpljHNj0seYiw5EG/AkwF8D68zLilO5Es/0E2WxdvSsOcyBRn8YTJT5TciBRY+OJCnkjHEjUuHiiQt4oBxL1WTxRIW+0A4n6PJ4oMVE5kKjx8USJG7UDiZoQT5To/w4kamI8UaKtOJCoL+KJEtXqQKImxRMlRHAgUZPjiQp5XzqQqC/jiRIiFLffx6/iiQp5Ux3YUVPiiRJTnwM7amo8USFvmgM76ut4okLetw4k6pt4okLeDAcSNS2eqJD3vQOJmh5PVMib5UCivo0nKuT96ECivosnKuTNcSBRM+KJCnk/O5ComfFEhbx5DiTq+3iiQt6vDiTqh3iiQt4CBxI1K56okDfcgc/6ZscTFfIWObCjfownKuQtcSBRP8UTFfKWOZCoOfFEhbwVDiRqLjJR8h2aFYrt/duyP5wtXkx7wP6j8evGrxu/bvy68evGrxu/bvy68evGrxu/bvy68evGrxu/bvy68evGrxu/bvy68etacd3i2Ot6wJcce+gXvcrD6tcvkXwc64CP4xzw8TMHfPzcAR/HO+DjBAd8nOiAj1844OMkB3yc7ICPXzrg41cO+DjFAR+nOuDj1w74+I0DPk5zwMfpDvj4rQM+fueAjzMc8HGmAz5+74CPPzjg4ywHfJztgI8/OuDjTw74OMcBH+c64OPbFe338R0HfBzkgI+DHfDxXQd8fM8BH4c44ONQB3x83wEfP3DAx2EO+DjcAR8/dMDHjxzwcYQDPo50wMdRDvj4sQM+jnbAxzEO+PiJAz5+6oCPYx3wcZwDPn7mgI+fO+DjeAd8nOCAjxMd8PELB3yc5ICPkx3w8UsHfPzKAR+nOODjVAd8/NoBH79xwMdpDvg43QEfv3XAx+8c8HGGAz7OdMDH7x3w8QcHfJzlgI+zHfCxZYL9PrZywMfWDvh4pwM+3uWAj3c74GMbB3y8xwEf2zrgYzsHfGzvgI/3OuBjBwd87OiAj50c8PE+B3y83wEfOzvgYxcHfOzqgI8POOBjNwd87O6Ajw864GMPB3zs6YCPvRzwsbcDPj7kgI8PO+BjHwd8fMQBH/s64GM/B3x81AEfH3PAx/4O+Pi4Az4+4YCPTzrg41MO+Pi0Az4+44CPzzrg43MO+Pi8Az6+4ICPL7rwLK62A8/iHPDxHgd8bOuAj+0c8LG9Az7e64CPHRzwsaMDPnZywMf7HPDxfgd87OyAj10c8LGrAz4+4ICP3RzwsbsDPj7ogI89HPCxpwM+9nLAx94O+PiQAz4+7ICPfRzw8REHfOzrgI/9HPDxUQd8fMwBH/s74OPjDvj4hAM+PumAj0854OPTDvj4jAM+PuuAj8854OPzDvj4ggM+vuiAjy854OPLDvj4igM+vuqAj6854OPrDvg4wAEf33DAxzcd8PEtB3wc6ICPbzvg4zsO+DjIAR8HO+Djuw74+J4DPg5xwMehDvj4vgM+fuCAj8Mc8HG4Az5+6ICPHzng4wgHfBzpgI+jHPDxYwd8HO2Aj2Mc8PETB3z81AEfxzrg4zgHfPzMAR8/d8DH8Q74OMEBHyc64OMXDvg4yQEfJzvg45cO+PiVAz5OccDHqQ74+LUDPn7jgI/THPBxugM+fuuAj9854OMMB3yc6YCP3zvg4w8O+DjLAR9nO+Djjw74+JMDPs5xwMe5Dvj4swM+/uKAj/Mc8HG+Az7+6oCPvzng4wIHfFzogI+/O+DjIgd8XOyAj0sc8HGpAz4uc8DH5Q74uMIBH1c64OMqB3xc7YCPaxzwca0DPq5zwMf1Dvi4wQEfNzrg4yYHfNzsgI9bHPBxqwM+bnPAx+0O+LjDAR93OuDjLgd83O2Aj3sc8LFYHft9PMwBH9+qbr+PAx3w8W0HfHzHAR8HOeDjYAd8fNcBH99zwMchDvg41AEf33fAxw8c8HGYAz4Od8DHDx3w8SMHfBzhgI8jHfBxlAM+fuyAj6Md8HGMAz5+4oCPnzrg41gHfBzngI+fOeDj5w74ON4BHyc44ONEB3z8wgEfJzng42QHfPzSAR+/csDHKQ74ONUBH792wMdvHPBxmgM+TnfAx28d8PE7B3yc4YCPMx3w8XsHfPzBAR9nOeDjbAd8/NEBH39ywMc5Dvg41wEff3bAx18c8HGeAz7Od8DHXx3w8TcHfFzggI8LHfDxdwd8XOSAj4sd8HGJAz4udcDHZQ74uNwBH1c44ONKB3xc5YCPqx3wcY0DPq51wMf/Y+8s4Jy4vrefXdyhhTqQFSjezGqWUqy4W72lXS20OIu7u7uWUoq7u7u7u7u7vnfKpNyd350tuTmzm+f9J5+eZrg55+b73JH7bCYzuQPAeBeA8R4A430AxgcAjA8BGB8BMD4GYHwCwPgUgPEZAONzAMYXAIwvARhfATBasrg/oxcAozcAYxIAxqQAjMkAGJMDMKYAYEwJwJgKgDE1AGMaAMa0AIzpABjTAzBmAGDMCMCYCYDxHQDGdwEYMwMwZgFgfA+A8X0Axg8AGD8EYPwIgPFjAMZPABizAjBmA2DMDsBoBWD0AWD0BWD0A2D0B2DMAcCYE4DxUwDGXACMuQEY8wAw5gVgzAfAmB+AsQAA42cAjDYARgWAMQCAMRCAMQiAMRiAMQSAMRSA0Q7AGAbAWBCA8XMAxkIAjF8AMBYGYCwCwFgUgLEYAGNxAMYvARhLADCWBGAsBcBYGoCxDABjWQDGcgCM5QEYKwAwVgRgrATAWBmAsQoAY1UAxmoAjNUBGGsAMH5lAiP/IOk7wMS+2cObG1tHn8ezWywnWJxkcYrFaRZnWJxlcY7FeRYXWFxkcYnFZRZXWFxlcY3FdRY3WNxkcYvFbRZ3WNxlcY/FfRYPWDxk8YjFYxZPWDxl8YzFcxYvWLxk8YqFxcr4WHizSMIiKYtkLJKzSMEiJYtULFKzSMMiLYt0LNKzyMAiI4tMLN5h8S6LzCyysHiPxfssPmDxIYuPWHxsfT0Gn1i1QUmiPasNVt1KoN4g1YEn6stmJucJEM6TIJynQDhPg3CeAeE8C8J5DoTzPAjnBRDOiyCcl0A4L4NwXgHhvArCeQ2E8zoI5w0QzpsgnLdAOG+DcN4B4bwLwnkPhPM+COcDEM6HIJyPQDgfg3A+AeF8CsL5DITzOQjnCxDOlyCcr0A41RMACJxeIJzeIJxJQDiTgnAmA+FMDsKZAoQzJQhnKhDO1CCcaUA404JwpgPhTA/CmQGEMyMIZyYQzndAON8F4cwMwpkFhPM9EM73QTg/AOH8EITzIxDOjwk5VbbMGuOkVK+/E4q6fD31m+Ub3PJNbvkWt3ybW77DLd/llu9py1nZ/7KxyM7CysKHhS8LPxb+LJKxnDSW19+v/Xede1uEj6IWmnXn6dfTr6dfT7+efj39evr19Ovp19Ovp19Pv55+Pf16+vX06+nX06+nX0+/nn7do19v2n6VBXTfM1UWm/CdVerzHisAGFcCMK4CYFwNwLgGgHEtAOM6AMb1AIwbABg3AjBuAmDcDMC4BYBxKwDjNgDG7QCMOwAYdwIw7gJg3A3AuAeAcS8A4z4Axv0AjAcAGA8CMB4CYDwMwHgEgPEoAOMxAMbJad2fcQoA41QAxmkAjNMBGGcAMM4EYJwFwDgbgHEOAONcAMZ5AIzzARgXADAuBGBcBMC4GIBxCQDjUgDGZQCMywEYVwAwrgRgXAXAuBqAcQ0A41oAxnUAjOsBGDcAMG4EYNwEwLgZgHELAONWAMZtAIzbARh3ADDuBGDcBcC4G4BxDwDjXgDGfQCM+wEYDwAwHgRgPATAWDeT+zPWA2CsD8DYAICxIQBjIwDGxgCMsQCMTQAYmwIwNgNgbA7A2AKAsSUAYysAxtYAjG0AGNsCMLYDYGwPwNgBgLEjAGMnAMbOAIxdABi7AjB2A2DsDsDYA4CxJwBjLwDG3gCMfQAY+wIw9gNg7A/AOACAcSAA4yAAxsEAjEMAGIcCMA4DYBwOwDgCgHEkAOMoAMbRCOfisgKciwNgjAVgbALA2BSAsRkAY3MAxhYAjC0BGFsBMLYGYGwDwNgWgLEdAGN7AMYOAIwdARg7ATB2BmDsAsDYFYCxGwBjdwDGHgCMPQEYewEw9gZg7APA2BeAsR8AY38AxgEAjAMBGAcBMA4GYBwCwDgUgHEYAONwAMYRAIwjARhHATCOBmAcA8A4FoDxDwDGcQCMfwIwjgdg/AuAcQIA498AjBMBGCcBME4GYJwCwDgVgHEaAON0AMYZAIwzARhnATDOBmCcA8A4F4BxHgDjfADGBQCMCwEYFwEwLgZgXALAuBSAcRkA43IAxhUAjCsBGFcBMK4GYFwDwLgWgHEdAON6AMYNAIwbARg3ATBuBmDcAsC4FYBxGwDjdgDGHQCMOwEYdwEw7gZg3APAuBeAcR8A434AxgMAjAcBGA8BMB4GYDwCwHgUgPEYAONxAMYTAIwnARhPATCeBmA8A8B4FoDxHADjeQDGCwCMFwEYLwEwXgZgvALAeBWA8RoA43UAxhsAjDcBGG8BMN4GYLwDwHgXgPEeAON9AMYHAIwPARgfATA+BmB8AsD4FIDxGQDjcwDGFwCMLwEYXwEwWrK5P6MXAOPEzO7POAmAcTIA4xQAxqkAjNMAGKcDMM4AYJwJwDgLgHE2AOMcAMa5AIzzABjnAzAuAGBcCMC4CIBxMQDjEgDGpQCMywAYlwMwrgBgXAnAuAqAcTUA4xoAxrUAjOsAGNcDMG4AYNwIwLgJgHEzAOMWAMatAIzbABi3AzDuAGDcCcC4C4BxNwDjHgDGvQCM+wAY9wMwHgBgPAjAeAiA8TAA4xEAxqMAjMcAGI8DMJ4AYDwJwHgKgPE0AOMZAMazAIznABjPAzBeAGC8CMB4CYDxMgDjFQDGqwCM1wAYrwMw3gBgvAnAeAuA8TYA4x0AxrsAjPcAGO8DMD4AYHwIwPgIgPExAOMTAManAIzPABifAzC+AGB8CcD4CoDRksX9Gb0AGL0BGJMAMCYFYEwGwJgcgDEFAGNKAMZUAIypARjTADCmBWBMB8CYHoAxAwBjRgDGTACM7wAwvgvAmBmAMQsA43sAjO8DMH4AwPghAONHAIwfAzB+AsCYFYAxGwBjdgBGKwCjDwCjLwCjHwCjPwBjDgDGnACMnwIw5gJgzA3AmAeAMS8AYz4AxvwAjAUAGD8DYLQBMCoAjAEAjIEAjEEAjMEAjCEAjKEAjHYAxjAAxoIAjJ8DMBYCYPwCgLEwAGMRAMaiAIzFABiLAzB+CcBYAoCxJABjKQDG0gCMZQAYywIwlgNgLA/AWAGAsSIAYyUAxsoAjFUAGKsCMFYDYKwOwFgDgPErExj5B0nfASb2bQuyeXNj6+gzh9ViycniUxa5WORmkYdFXhb5WORnUYDFZyxsLBQWASwCWQSxCGYRwiKUhZ1FGIuCLD5nUYjFFywKsyjCoiiLYiyKs/iSRQkWJVmUYlGaRRkWZVmUY1GeRQUWFVlUYlGZRRUWVVlUY1GdRQ0WX7H4msU3LL5l8R2L71n8wOJHFj+xqMniZxa/sAhnEcEikkWU9fUYRFu1QUmiPauDklLXllPQ9qmgLZegLbegLY+gLa+gLZ+gLb+grYCg7TNBm03QpgjaAgRtgYK2IEFbsKAtRNAWKmizC9rCBG0FBW2fC9oKCdq+ELQVFrQVEbQVFbQVE7QVF7R9KWgrIWgrKWgrJWgrLWgrI2grK2grJ2grL2irIGirKGirJGirLGirImirKmirJmirLmirIWj7StD2taDtG0Hbt4K27wRt3wvafhC0/Sho+0nQVlPQ9rOg7RdBW7igLULQFiloixK0qQdE9l+cRxLtuaj2HGgLCQqKDg2IVgKVcFtAWIQ92BYUHBFiV+xKsD04KsAeGBhtD7KHhkWEhdrClKDAaCUmOCwwRpuOFmSn62txdsIvulnNMQrexOO3glBzThDNKwk1fwqieRWh5lwgmlcTas4NonkNoeY8IJrXEmrOC6J5HaHmfCCa1xNqzg+ieQOh5gIgmjcSav4MRPMmQs02EM2bCTUrIJq3EGoOANG8lVBzIIjmbYSag0A0byfUHAyieQeh5hAQzTsJNYeCaN5FqNkOonk3oeYwEM17CDUXBNG8l1Dz5yCa9xFqLgSieT+h5i9ANB8g1FwYRPNBQs1FQDQfItRcFETzYULNxUA0HyHUXBxE81FCzV+CaD5GqLkEiObJaek0lwTRPIVQcykQzVMJNZcG0TyNUHMZEM3TCTWXBdE8g1BzORDNMwk1lwfRPItQcwUQzbMJNVcE0TyHUHMlEM1zCTVXBtE8j1BzFRDN8wk1VwXRvIBQczUQzQsJNVcH0byIUHMNEM2LCTV/BaJ5CaHmr0E0LyXU/A2I5mWEmr8F0bycUPN3IJpXEGr+HkTzSkLNP4BoXkWo+UcQzasJNf8EonkNoeaaIJrXEmr+GUTzOkLNv4BoXk+oORxE8wZCzREgmjcSao4E0byJUHMUoeZkrI90nF7+kVQ3BjbZh/L6iWj//qc3sv1God0eCdezGTddURwL/PqOsb5+/lV95i+4V184qWtTk6wWz4bi6gEhJJc5GwrZunj9iLNBS2oO0DQr6vZENX6/Wuk0mrUuvInXBeX41RL0FWGLjApWIkKiQpXo8GB7ZGRYoKIEhIeEh0QE2GOiI4IVe7Cd9RkZHmBnbxcQHqlE28JDotVJJL3l9fFB//AiHoNadOvdxvPWtpoIrHZO3e9vhBuDWbp/s74ZYKJ+hawUBxOVlWqHdfRLuY5+t9Ju+I4JXe3Xhz0npBNcTTjBryGc4Ck/aVgH6ATrWF8/17Va4ro+9QW9E1STrBbPhuLqjm0HcYLrCJ2guj1RjV9dK51GO4gTpBy/elZMJ1jPSjshOh71rSYCq51T99uAcGMwS3cD65sBJurXFCdYV2OldoKU66ih1RwnqPab0E5wOeEEv4Jwgqc8h7wK0Ak2sr5+bmy1xHV96gt6J6gmWS2eDcXVHbsgiBNcRegE1e2JavwaW+k0FgRxgpTjF2vFdIKxVtoJ0fFoYjURWO2cut+mhBuDWbqbWt8MMFG/pjjBxhortROkXEfNrOY4QbXfhHaCiwkn+CWEEzzlt4OXATrB5tbXzy2slriuT31B7wTVJKvFs6G4umMXAnGCywidoLo9UY1fCyudxkIgTpBy/FpaMZ1gSyvthOh4tLKaCKx2Tt1va8KNwSzdra1vBpioX1OcYAuNldoJUq6jNlZznKDab0I7wfmEE/wCwgme8rrPRYBOsK319XM7qyWu61Nf0DtBNclq8Wworu7YhUGc4CJCJ6huT1Tj185Kp7EwiBOkHL/2Vkwn2N5KOyE6Hh2sJgKrnVP325FwYzBLd0frmwEm6tcUJ9hOY6V2gpTrqJPVHCeo9pvQTnA24QQ/h3CCp7yjzzxAJ9jZ+vq5i9US1/WpL+idoJpktXg2FFd37KIgTnAeoRNUtyeq8etipdNYFMQJUo5fVyumE+xqpZ0QHY9uVhOB1c6p++1OuDGYpbu79c0AE/VrihPsorFSO0HKddTDao4TVPtNaCc4nXCCn0E4wVPeq3UWoBPsaX393Mtqiev61Bf0TlBNslo8G4qrO3ZxECc4i9AJqtsT1fj1stJpLA7iBCnHr7cV0wn2ttJOiI5HH6uJwGrn1P32JdwYzNLd1/pmgIn6NcUJ9tJYqZ0g5TrqZzXHCar9JrQTnEw4wU8hnOApf4VjGqAT7G99/TzAaonr+tQX9E5QTbJaPBuKqzt2CRAnOI3QCarbE9X4DbDSaSwB4gQpx2+gFdMJDrTSToiOxyCricBq59T9DibcGMzSPdj6ZoCJ+jXFCQ7QWKmdIOU6GmI1xwmq/Sa0EyT6vcp/eiP7HUiF9vcVCX+3MMGc4FDr6+dhVktc16e+oHeCapLV4tlQXN2xS4E4wWPZ6Zyguj1Rjd8wK53GUiBOkHL8hlsxneBwK+2E6HiMsJoIrHZO3e9Iwo3BLN0jrW8GmKhfU5zgMI2V2glSrqNRVnOcoNpvQjvB/YQT/AHCCf4goRM8BOgER1tfP4+xWuK6PvUFvRNUk6wWz4bi6o5dBsQJHiJ0gur2RDV+Y6x0GsuAOEHK8RtrxXSCY620E6Lj8YfVRGC1c+p+xxFuDGbpHmd9M8BE/ZriBMdorNROkHId/Wk1xwmq/Sa0E9xNOMHvIZzg9xI6wX2ATnC89fXzX1ZLXNenvqB3gmqS1eLZUFzdscuBOMF9hE5Q3Z6oxu8vK53GciBOkHL8JlgxneAEK+2E6Hj8bTURWO2cut+JhBuDWbonWt8MMFG/pjjBvzRWaidIuY4mWc1xgmq/Ce0EtxNO8DsIJ/idhE5wF6ATnGx9/TzFaonr+tQX9E5QTbJaPBuKqzt2BRAnuIvQCarbE9X4TbHSaawA4gQpx2+qFdMJTrXSToiOxzSricBq59T9TifcGMzSPd36ZoCJ+jXFCU7RWKmdIOU6mmE1xwmq/Sa0E9xMOMFvIZzgtxI6wW2ATnCm9fXzLKslrutTX9A7QTXJavFsKK7u2JVAnOA2Qieobk9U4zfLSqexEogTpBy/2VZMJzjbSjshOh5zrCYCq51T9zuXcGMwS/dc65sBJurXFCc4S2OldoKU62ie1RwnqPab0E5wPeEEv4Fwgt9I6AQ3ATrB+dbXzwuslriuT31B7wTVJKvFs6G4umNXAXGCmwidoLo9UY3fAiudxiogTpBy/BZaMZ3gQivthOh4LLKaCKx2Tt3vYsKNwSzdi61vBpioX1Oc4AKNldoJUq6jJVZznKDab0I7wdWEE/wawgl+LaETXAfoBJdaXz8vs1riuj71Bb0TVJOsFs+G4uqOXQ3ECa4jdILq9kQ1fsusdBqrgThByvFbbsV0gsuttBOi47HCaiKw2jl1vysJNwazdK+0vhlgon5NcYLLNFZqJ0i5jlZZzXGCar8J5gS1SXkF4aS8ktC9rcpOZ2JyWPGc4Grr6+c1Vktc16e+oHeCapLV4tlQXN2xa7i7ExRs0K46wdVWuvFbY6VbrzVAnCDl+K21YjrBtVbaCdHxWGc1EVjtnLrf9YQbg1m611vfDDBRv6Y4wTUaK7UTpFxHG6zmOEG1Xx9tObMl7iTPf/TDnxDkvybGXzzAX1LK32hEXR7GLQ/glntxy1245XbccgtuuTG3XJdb/pVbzsotZ+OWs3PLVm7Zh1v25Zb9uGV/bXkj+98mFptZbGGxlcU2FttZ7LC+dtRptPG1aLVCe20xzyl6+vX06+nX06+nX0+/nn49/Xr69fTr6dfTr6dfT7+efj39evr19Ovp19Ovp9/E6Zf6XIsZ3zqgZlyR3f0ZVwIwrgJgXA3AuAaAcS0A4zoAxvUAjBsAGDcCMG4CYNwMwLgFgHErAOM2AMbtAIw7ABh3AjDuAmDcDcC4B4BxLwDjPgDG/QCMBwAYDwIwHgJgPAzAeASA8SgA4zEAxslp3Z9xCgDjVADGaQCM0wEYZwAwzgRgnAXAOBuAcQ4A41wAxnkAjPMBGBcAMC4EYFwEwLgYgHEJAONSAMZlAIzLARhXADCuBGBcBcC4GoBxDQDjWgDGdQCM6wEYNwAwbgRg3ATAuBmAcQsA41YAxm0AjNsBGHcAMO4EYNwFwLgbgHEPAONeAMZ9AIz7ARgPADAeBGA8BMBYN5P7M9YDYKwPwNgAgLEhAGMjAMbGAIyxAIxNABibAjA2A2BsDsDYAoCxJQBjKwDG1gCMbQAY2wIwtgNgbA/A2AGAsSMAYycAxs4AjF0AGLsCMHYDYOwOwNgDgLEnAGMvAMbeAIx9ABj7AjD2A2DsD8A4AIBxIADjIADGwQCMQwAYhwIwDgNgHA7AOAKAcSQA4ygAxtEI5+KyApyLA2CMBWBsAsDYFICxGQBjcwDGFgCMLQEYWwEwtgZgbAPA2BaAsR0AY3sAxg4AjB0BGDsBMHYGYOwCwNgVgLEbAGN3AMYeAIw9ARh7ATD2BmDsA8DYF4CxHwBjfwDGAQCMAwEYBwEwDgZgHALAOBSAcRgA43AAxhEAjCMBGEcBMI4GYBwDwDgWgPEPAMZxAIx/AjCOB2D8C4BxAgDj3wCMEwEYJwEwTgZgnALAOBWAcRoA43QAxhkAjDMBGGcBMM4GYJwDwDgXgHEeAON8AMYFAIwLARgXATAuBmBcAsC4FIBxGQDjcgDGFQCMKwEYVwEwrgZgXAPAuBaAcR0A43oAxg0AjBsBGDcBMG4GYNwCwLgVgHEbAON2AMYdAIw7ARh3ATDuBmDcA8C4F4BxHwDjfgDGAwCMBwEYDwEwHgZgPALAeBSA8RgA43EAxhMAjCcBGE8BMJ4GYDwDwHgWgPEcAON5AMYLAIwXARgvATBeBmC8AsB4FYDxGgDjdQDGGwCMNwEYbwEw3gZgvAPAeBeA8R4A430AxgcAjA8BGB8BMD4GYHwCwPgUgPEZAONzAMYXAIwvARhfATBasrk/oxcA48TM7s84CYBxMgDjFADGqQCM0wAYpwMwzgBgnAnAOAuAcTYA4xwAxrkAjPMAGOcDMC4AYFwIwLgIgHExAOMSAMalAIzLABiXAzCuAGBcCcC4CoBxNQDjGgDGtQCM6wAY1wMwbgBg3AjAuAmAcTMA4xYAxq0AjNsAGLcDMO4AYNwJwLgLgHE3AOMeAMa9AIz7ABj3AzAeAGA8CMB4CIDxMADjEQDGowCMxwAYjwMwngBgPAnAeAqA8TQA4xkAxrMAjOcAGM8DMF4AYLwIwHgJgPEyAOMVAMarAIzXABivAzDeAGC8CcB4C4DxNgDjHQDGuwCM9wAY7wMwPgBgfAjA+AiA8TEA4xMAxqcAjM8AGJ8DML4AYHwJwPgKgNGSxf0ZvQAYvQEYkwAwJgVgTAbAmByAMQUAY0oAxlQAjKkBGNMAMKYFYEwHwJgegDEDAGNGAMZMAIzvADC+C8CYGYAxCwDjewCM7wMwfgDA+CEA40cAjB8DMH4CwJgVgDEbAGN2AEYrAKMPAKMvAKMfAKM/AGMOAMacAIyfAjDmAmDMDcCYB4AxLwBjPgDG/ACMBQAYPwNgtAEwKgCMAQCMgQCMQQCMwQCMIQCMoQCMdgDGMADGggCMnwMwFgJg/AKAsTAAYxEAxqIAjMUAGIsDMH4JwFgCgLEkAGMpAMbSAIxlABjLAjCWA2AsD8BYAYCxIgBjJQDGygCMVQAYqwIwVgNgrA7AWAOA8SsTGPkHSd8BJvZts9u8ubF19LnTarHsYrGbxR4We1nsY7GfxQEWB1kcYnGYxREWR1kcY3GcxQkWJ1mcYnGaxRkWZ1mcY3GexQUWF1lcYnGZxRUWV1lcY3GdxQ0WN1ncYnGbxR0Wd1ncY3GfxQMWD1k8YvGYxRMWT1k8Y/GcxQsWL1m8YmHxYbpYeLNIwiIpi2QskrNIwSIli1QsUrNIwyIti3Q+r8cgvY82KEm0Z3VQUuradgnadgva9gja9gra9gna9gvaDgjaDgraDgnaDgvajgjajgrajgnajgvaTgjaTgraTgnaTgvazgjazgrazgnazgvaLgjaLgraLgnaLgvargjargrargnargvabgjabgrabgnabgva7gja7gra7gna7gvaHgjaHgraHgnaHgvangjangrangnangvaXgjaXgraXgna1IOGvs1L0OYtaEsiaEsqaEsmaEsuaEshaEspaEslaEstaEsjaEsraEsnaFMPiFZL3Idj8iiqPQfaQoKCokMDopVAJdwWEBZhD7YFBUeE2BW7EmwPjgqwBwZG24PsoWERYaG2MCUoMFqJCQ4LjNGmo81p6SZ39XhN1JfNTM1bCDXvAtG8lVDzbhDN2wg17wHRvJ1Q814QzTsINe8D0byTUPN+EM27CDUfANG8m1DzQRDNewg1HwLRvJdQ82EQzfsINR8B0byfUPNREM0HCDUfA9F8kFDzcRDNhwg1nwDRXDcTneaTIJrrEWo+BaK5PqHm0yCaGxBqPgOiuSGh5rMgmhsRaj4HorkxoebzIJpjCTVfANHchFDzRRDNTQk1XwLR3IxQ82UQzc0JNV8B0dyCUPNVEM0tCTVfA9HcilDzdRDNrQk13wDR3IZQ800QzW0JNd8C0dyOUPNtEM3tCTXfAdHcgVDzXRDNHQk13wPR3IlQ830QzZ0JNT8A0dyFUPNDEM1dCTU/AtHcjVDzYxDN3Qk1PwHR3INQ81MQzT0JNT8D0dyLUPNzEM29CTW/ANHch1DzSxDNfQk1vwLR3I9Qs3q9BYLm/oSavUA0DyDU7A2ieSCh5iQgmgcRak4KonkwoeZkIJqHEGpODqJ5KKHmFCCahxFqTgmieTih5lQgmkcQak4NonkkoeY0IJpHEWpOC6J5NKHmdISak7E+0nF6+UdS3RjYZB/K6yei/fuf3sj2G4V2eyRcz2bcKEVxLPDrO4PP6+eM6jN/kbz6wkldW0bBhfP/FzcUVw8IX+cyZ0MhWxevH3E2aEnNAZpmJYMP3fhlpDsIKmatC2/idUE5fpkEfUXYIqOClYiQqFAlOjzYHhkZFqgoAeEh4SERAfaY6IhgxR5sZ31GhgfY2dsFhEcq0bbwkGh1Eklv0W44ont4EY9BJsLJj+d9x8dEYLVz6n7fJdwYzNL9rs+bASbqV8hKcTBRWal2WEe/lOsoM/GG75jQ1X7V1ZSQTnAI4QQ/lHCCp/ykYTigE8yi7a/v6Z1gFoETfC8BnCDChuLqjv0tiBMcTugEsxAeGN8jdILfgjhByvF7H9QJvm+SE/zAx0TgD0xwgh+6uRNUdX8I4gTf01ipnSDlOvrIJCf4USI4wQGEE/xAwgme8hzyYEAn+LG2v36id4IfC5zgJwngBBE2FFd37O9BnOBgQif4MeGB8RNCJ/g9iBOkHL+soE4wq0lOMJuPicDZTHCC2d3cCaq6s4M4wU80VmonSLmOrCY5QWsiOME+hBN8X8IJnvLbwf0BnaCPtr/66p2gj8AJ+iaAE0TYUFzdsX8EcYL9CZ2gD+GB0ZfQCf4I4gQpx88P1An6meQE/X1MBPY3wQnmcHMnqOrOAeIEfTVWaidIuY5ymuQEcyaCE+xBOMH3JJzgKa/77A3oBD/V9tdceif4qcAJ5koAJ4iwobi6Y9cEcYK9CZ3gp4QHxlyETrAmiBOkHL/coE4wt0lOMI+PicB5THCCed3cCaq684I4wVwaK7UTpFxH+UxygvkSwQl2IZzguxJO8JR39OkO6ATza/trAb0TzC9wggUSwAkibCiu7ti/gDjB7oROMD/hgbEAoRP8BcQJUo7fZ6BO8DOTnKDNx0RgmwlOUHFzJ6jqVkCcYAGNldoJUq6jAJOcYEAiOMEOhBN8R8IJnvJerZ0BnWCgtr8G6Z1goMAJBiWAE0TYUFzdsSNAnGBnQicYSHhgDCJ0ghEgTpBy/IJBnWCwSU4wxMdE4BATnGComztBVXcoiBMM0lipnSDlOrKb5ATtieAE2xBO8G0JJ3jKX+FoD+gEw7T9taDeCYYJnGDBBHCCCBuKqzt2FIgTbE/oBMMID4wFCZ1gFIgTpBy/z0Gd4OcmOcFCPiYCFzLBCX7h5k5Q1f0FiBMsqLFSO0HKdVTYJCdYOBGcYAvCCb4l4QRP+fuKrQGdYBFtfy2qd4JFBE6waAI4QYQNxdUdOwbECbYmdIJFCA+MRQmdYAyIE6Qcv2KgTrCYSU6wuI+JwMVNcIJfurkTVHV/CeIEi2qs1E6Qch2VMMkJlkgEJ9iEcIJvSjjBNyN0gs0BnWBJbX8tpXeCJQVOsFQCOEGEDcXVHbsWiBNsTugESxIeGEsROsFaIE6QcvxKgzrB0iY5wTI+JgKXMcEJlnVzJ6jqLgviBEtprNROkHIdlTPJCZZLBCfYkHCCb0Q4wTcmdIKxgE6wvLa/VtA7wfICJ1ghAZwgwobi6o79G4gTjCV0guUJD4wVCJ3gbyBOkHL8KoI6wYomOcFKPiYCVzLBCVZ2cyeo6q4M4gQraKzUTpByHVUxyQlWSQQnWJdwgq9HOMHXJ3SCDQCdYFVtf62md4JVBU6wWgI4QYQNxdUduw6IE2xA6ASrEh4YqxE6wTogTpBy/KqDOsHqJjnBGj4mAtcwwQl+5eZOUNX9FYgTrKaxUjtBynX0tUlO8OtEcIL709JN8AfS0k3wB9PSbf+H0pozqRDtT0In+I22v36rd4LfCJzgtwngBBE2FFd37HogTvBQWjon+A3hgfFbQidYD8QJUo7fd6BO8DuTnOD3PiYCf2+CE/zBzZ2gqvsHECf4rcZK7QQp19GPJjnBHxPBCe4mnOD3EE7wewmd4D5AJ/iTtr/W1DvBnwROsGYCOEGEDcXVHbsBiBPcR+gEfyI8MNYkdIINQJwg5fj9DOoEfzbJCf7iYyLwLyY4wXA3d4Kq7nAQJ1hTY6V2gpTrKMIkJxiRCE5wO+EEv4Nwgt9J6AR3ATrBSG1/jdI7wUiBE4xKACeIsKG4umM3AnGCuwidYCThgTGK0Ak2AnGClOMXDeoEo01ygjE+JgLHmOAEf3VzJ6jq/hXECUZprNROkHId1TLJCdZKBCe4mXCC30I4wW8ldILbAJ1gbW1//U3vBGsLnOBvCeAEETYUV3fsWBAnuI3QCdYmPDD+RugEY0GcIOX4/Q7qBH83yQnW8TERuI4JTrCumztBVXddECf4m8ZK7QQp11E9k5xgPc0JqsuZLXEnef6jH/6EoLr8LbdcjVuuwC2X4paLcssFueUgbrkAt5yLW/bllj/hlt/jljNyyxutb5Y3ccubueUt3PJWbnkbt7ydW96hLddn79OARUMWjVg0ZhHLogmLpj6vHXUabXwtWq3QXlvMc4qefj39evr19Ovp19Ovp19Pv55+Pf16+vX06+nX06+nX0+/nn49/Xr69fTr6Tdx+qU+15LD6v6MK7K7P+NKAMZVAIyrARjXADCuBWBcB8C4HoBxAwDjRgDGTQCMmwEYtwAwbgVg3AbAuB2AcQcA404Axl0AjLsBGPcAMO4FYNwHwLgfgPEAAONBAMZDAIyHARiPADAeBWA8BsA4Oa37M04BYJwKwDgNgHE6AOMMAMaZAIyzABhnAzDOAWCcC8A4D4BxPgDjAgDGhQCMiwAYFwMwLgFgXArAuAyAcTkA4woAxpUAjKsAGFcDMK4BYFwLwLgOgHE9AOMGAMaNAIybABg3AzBuAWDcCsC4DYBxOwDjDgDGnQCMuwAYdwMw7gFg3AvAuA+AcT8A4wEAxoMAjIcAGOtmcn/GegCM9QEYGwAwNgRgbATA2BiAMRaAsQkAY1MAxmYAjM0BGFsAMLYEYGwFwNgagLENAGNbAMZ2AIztARg7ADB2BGDsBMDYGYCxCwBjVwDGbgCM3QEYewAw9gRg7AXA2BuAsQ8AY18Axn4AjP0BGAcAMA4EYBwEwDgYgHEIAONQAMZhAIzDARhHADCOBGAcBcA4GuFcXFaAc3EAjLEAjE0AGJsCMDYDYGwOwNgCgLElAGMrAMbWAIxtABjbAjC2A2BsD8DYAYCxIwBjJwDGzgCMXQAYuwIwdgNg7A7A2AOAsScAYy8Axt4AjH0AGPsCMPYDYOwPwDgAgHEgAOMgAMbBAIxDABiHAjAOA2AcDsA4AoBxJADjKADG0QCMYwAYxwIw/gHAOA6A8U8AxvEAjH8BME4AYPwbgHEiAOMkAMbJAIxTABinAjBOA2CcDsA4A4BxJgDjLADG2QCMcwAY5wIwzgNgnA/AuACAcSEA4yIAxsUAjEsAGJcCMC4DYFwOwLgCgHElAOMqAMbVAIxrABjXAjCuA2BcD8C4AYBxIwDjJgDGzQCMWwAYtwIwbgNg3A7AuAOAcScA4y4Axt0AjHsAGPcCMO4DYNwPwHgAgPEgAOMhAMbDAIxHABiPAjAeA2A8DsB4AoDxJADjKQDG0wCMZwAYzwIwngNgPA/AeAGA8SIA4yUAxssAjFcAGK8CMF4DYLwOwHgDgPEmAOMtAMbbAIx3ABjvAjDeA2C8D8D4AIDxIQDjIwDGxwCMTwAYnwIwPgNgfA7A+AKA8SUA4ysARks292f0AmCcmNn9GScBME4GYJwCwDgVgHEaAON0AMYZAIwzARhnATDOBmCcA8A4F4BxHgDjfADGBQCMCwEYFwEwLgZgXALAuBSAcRkA43IAxhUAjCsBGFcBMK4GYFwDwLgWgHEdAON6AMYNAIwbARg3ATBuBmDcAsC4FYBxGwDjdgDGHQCMOwEYdwEw7gZg3APAuBeAcR8A434AxgMAjAcBGA8BMB4GYDwCwHgUgPEYAONxAMYTAIwnARhPATCeBmA8A8B4FoDxHADjeQDGCwCMFwEYLwEwXgZgvALAeBWA8RoA43UAxhsAjDcBGG8BMN4GYLwDwHgXgPEeAON9AMYHAIwPARgfATA+BmB8AsD4FIDxGQDjcwDGFwCMLwEYXwEwWrK4P6MXAKM3AGMSAMakAIzJABiTAzCmAGBMCcCYCoAxNQBjGgDGtACM6QAY0wMwZgBgzAjAmAmA8R0AxncBGDMDMGYBYHwPgPF9AMYPABg/BGD8CIDxYwDGTwAYswIwZgNgzA7AaAVg9AFg9AVg9ANg9AdgzAHAmBOA8VMAxlwAjLkBGPMAMOYFYMwHwJgfgLEAAONnAIw2AEYFgDEAgDEQgDEIgDEYgDEEgDEUgNEOwBgGwFgQgPFzAMZCAIxfADAWBmAsAsBYFICxGABjcQDGLwEYSwAwlgRgLAXAWBqAsQwAY1kAxnIAjOUBGCsAMFYEYKwEwFgZgLEKAGNVAMZqAIzVARhrADB+ZQIj/yDpO8DEvm2RNm9ubB19NvOxWJqzaMGiJYtWLFqzaMOiLYt2LNqz6MCiI4tOLDqz6MKiK4tuLLqz6MGiJ4teLHqz6MOiL4t+LPqzGMBiIItBLAazGMJiKIthLIazGMFiJItRLEazGMNiLIs/WIxj8SeL8Sz+YjGBxd8sJrKYxGIyiyksprKYxmI6ixksZrKYxWI2izks5rKYx2I+iwUsFvq8HoNFPtqgJNGe1UFJqWtrLmhrIWhrKWhrJWhrLWhrI2hrK2hrJ2hrL2jrIGjrKGjrJGjrLGjrImjrKmjrJmjrLmjrIWjrKWjrJWjrLWjrI2jrK2jrJ2jrL2gbIGgbKGgbJGgbLGgbImgbKmgbJmgbLmgbIWgbKWgbJWgbLWgbI2gbK2j7Q9A2TtD2p6BtvKDtL0HbBEHb34K2iYK2SYK2yYK2KYK2qYK2aYK26YK2GYK2mYK2WYK22YK2OYK2uYK2eYK2+YK2BYK2hYI29YBotcR9OCaPotpzoC0kKCg6NCBaCVTCbQFhEfZgW1BwRIhdsSvB9uCoAHtgYLQ9yB4aFhEWagtTggKjlZjgsMAYbTpqRPfDzIp6vCbqy2am5saEmpuDaI4l1NwCRHMTQs0tQTQ3JdTcCkRzM0LNrUE0NyfU3AZEcwtCzW1BNLck1NwORHMrQs3tQTS3JtTcAURzG0LNHUE0tyXU3AlEcztCzZ1BNLcn1NwFRHMHQs1dQTR3JNTcDURzJ0LN3UE0dybU3ANEcxdCzT1BNHcl1NwLRHM3Qs29QTR3J9TcB0RzD0LNfUE09yTU3A9Ecy9Czf1BNPcm1DwARHMfQs0DQTT3JdQ8CERzP0LNg0E09yfUPARE8wBCzUNBNA8k1DwMRPMgQs3DQTQPJtQ8AkTzEELNI0E0DyXUPApE8zBCzaNBNA8n1DwGRPMIQs1jQTSPJNT8B4jmUYSax4FoHk2o+U8QzWMINY8H0TyWUPNfIJr/INQ8AUTzOELNf4No/pNQ80QQzeMJNU8C0fwXoebJIJonEGqeAqL5b0LNU0E0TyTUPA1E8yRCzdNBNE8m1DwDRPMUQs0zQTRPJdQ8C0TzNELNs0E0TyfUPAdE8wxCzXNBNM8k1DwPRPMsQs3zQTTPJtS8AETzHELNCwk1J2N9pOP08o+kujGwyT6U109E+/c/vZHtNwrt9ki4ns24UYriWODX92Kf189L1Gcvy5uL5NUXTuralggunP+/uKG4fDFxLnM2FLJ18foRZ4OW1BygaVYW+9CN3xK6g6Bi1rrwJl4XlOO3VNBXhC0yKliJCIkKVaLDg+2RkWGBihIQHhIeEhFgj4mOCFbswXbWZ2R4gJ29XUB4pBJtCw+JVieR9JbXxwf9w4t4DJYSTn487zIfE4HVzqn7XU64MZile7nPmwEm6lfISnEwUVmpdlhHv5TraAXxhu+Y0NV+1dWUkE5wKuEEP41wgqf8pGEGoBNcqe2vq/ROcKXACa5KACeIsKG4fLsRECc4g9AJriQ8MK4idILNQZwg5fitBnWCq01ygmt8TAReY4ITXOvmTlDVvRbECa7SWKmdIOU6WmeSE1yXCE5wIuEEP4lwgqc8hzwF0Amu1/bXDXonuF7gBDckgBNE2FBcviEZiBOcQugE1xMeGDcQOsGWIE6Qcvw2gjrBjSY5wU0+JgJvMsEJbnZzJ6jq3gziBDdorNROkHIdbTHJCW5JBCc4nnCC/4twgqf8dvDfgE5wq7a/btM7wa0CJ7gtAZwgwobi8i1LQZzg34ROcCvhgXEboRNsDeIEKcdvO6gT3G6SE9zhYyLwDhOc4E43d4Kq7p0gTnCbxkrtBCnX0S6TnOCuRHCCYwkn+D8IJ3jK6z7/BHSCu7X9dY/eCe4WOME9CeAEETYUl29qDuIE/yR0grsJD4x7CJ1gWxAnSDl+e0Gd4F6TnOA+HxOB95ngBPe7uRNUde8HcYJ7NFZqJ0i5jg6Y5AQPJIITHEk4wY8inOAp7+gzBtAJHtT210N6J3hQ4AQPJYATRNhQXP7ZExAnOIbQCR4kPDAeInSC7UGcIOX4HQZ1godNcoJHfEwEPmKCEzzq5k5Q1X0UxAke0lipnSDlOjpmkhM8lghOcCjhBD+McIKnvFfrCEAneFzbX0/oneBxgRM8kQBOEGFDcfmH0UCc4AhCJ3ic8MB4gtAJdgRxgpTjdxLUCZ40yQme8jER+JQJTvC0mztBVfdpECd4QmOldoKU6+iMSU7wTCI4wYGEE/wgwgme8lc4hgA6wbPa/npO7wTPCpzguQRwgggbiss/nQriBIcQOsGzhAfGc4ROsDOIE6Qcv/OgTvC8SU7wgo+JwBdMcIIX3dwJqrovgjjBcxortROkXEeXTHKClxLBCfYlnOD7EU7wlL+vOADQCV7W9tcreid4WeAErySAE0TYUFz+cXUQJziA0AleJjwwXiF0gl1BnCDl+F0FdYJXTXKC13xMBL5mghO87uZOUNV9HcQJXtFYqZ0g5Tq6YZITvJEITrAn4QTfi3CC703oBPsAOsGb2v56S+8Ebwqc4K0EcIIIG4qrO3Z3ECfYh9AJ3iQ8MN4idILdQZwg5fjdBnWCt01ygnd8TAS+Y4ITvOvmTlDVfRfECd7SWKmdIOU6umeSE7yXCE6wK+EE341wgu9O6AR7ADrB+9r++kDvBO8LnOCDBHCCCBuKqzt2TxAn2IPQCd4nPDA+IHSCPUGcIOX4PQR1gg9NcoKPfEwEfmSCE3zs5k5Q1f0YxAk+0FipnSDlOnpikhN8kghOsCPhBN+JcILvTOgEuwA6wafa/vpM7wSfCpzgswRwgggbiqs7dm8QJ9iF0Ak+JTwwPiN0gr1BnCDl+D0HdYLPTXKCL3xMBH5hghN86eZOUNX9EsQJPtNYqZ0g5Tp6ZZITfJUITrAt4QTfjnCCb0/oBDsAOkGL7+snL19LXNenvqB3gmqS1eLZUFzdsfuCOMEOhE5Q3Z6oxs/Ll05jXxAnSDl+3r6YTtDbl3ZCdDyS+JoIrHZO3W9Swo3BLN1Jfd8MMFG/pjhBL42V2glSrqNkxBu+Y0JX+01oJ9iScIJvRTjBtyZ0gm0AnWBybX9NoXeCyQVOMEUCOEGEDcXVHbs/iBNsQ+gEkxMeGFMQOsH+IE6QcvxSgjrBlCY5wVS+JgKnMsEJpnZzJ6jqTu37ZoCJ+jXFCabQWKmdIOU6SmOSE0yTCE6wKeEE34xwgm9O6ARbADrBtNr+mk7vBNMKnGC6BHCCCBuKqzv2QBAn2ILQCaYlPDCmI3SCA0GcIOX4pQd1gulNcoIZfE0EzmCCE8zo5k5Q1Z3R980AE/VrihNMp7FSO0HKdZTJJCeYKRGcYCPCCb4x4QQfS+gEmwA6wXe0/fVdvRN8R+AE300AJ4iwobi6Yw8GcYJNCJ3gO4QHxncJneBgECdIOX6ZQZ1gZpOcYBZfE4GzmOAE33NzJ6jqfs/3zQAT9WuKE3xXY6V2gpTr6H2TnOD7mhNUlzNb4k7y/Ec//AlB/mti/MUD6vIDbvkWt3yFWz7HLZ/glg9xy3u45W3c8gZueRW3vIRbrs8tN+CWG3LLjbjlxtxyLLfchFtuqi1/wHR/yOIjFh+z+IRFVhbZWGT3fe2o02jj+++26tiwdI+iROvT06+nX0+/nn49/Xr69fTr6dfTr6dfT7+efj39evr19Ovp19Ovp19Pv55+Pf26R7/U51pyWN2fcUV292dcCcC4CoBxNQDjGgDGtQCM6wAY1wMwbgBg3AjAuAmAcTMA4xYAxq0AjNsAGLcDMO4AYNwJwLgLgHE3AOMeAMa9AIz7ABj3AzAeAGA8CMB4CIDxMADjEQDGowCMxwAYJ6d1f8YpAIxTARinATBOB2CcAcA4E4BxFgDjbADGOQCMcwEY5wEwzgdgXADAuBCAcREA42IAxiUAjEsBGJcBMC4HYFwBwLgSgHEVAONqAMY1AIxrARjXATCuB2DcAMC4EYBxEwDjZgDGLQCMWwEYtwEwbgdg3AHAuBOAcRcA424Axj0AjHsBGPcBMO4HYDwAwHgQgPEQAGPdTO7PWA+AsT4AYwMAxoYAjI0AGBsDMMYCMDYBYGwKwNgMgLE5AGMLAMaWAIytABhbAzC2AWBsC8DYDoCxPQBjBwDGjgCMnQAYOwMwdgFg7ArA2A2AsTsAYw8Axp4AjL0AGHsDMPYBYOwLwNgPgLE/AOMAAMaBAIyDABgHAzAOAWAcCsA4DIBxOADjCADGkQCMowAYRyOci8vq/oyNARhjARibADA2BWBsBsDYHICxBQBjSwDGVgCMrQEY2wAwtgVgbAfA2B6AsQMAY0cAxk4AjJ0BGLsAMHYFYOwGwNgdgLEHAGNPAMZeAIy9ARj7ADD2BWDsB8DYH4BxAADjQADGQQCMgwEYhwAwDgVgHAbAOByAcQQA40gAxlEAjKMBGMcAMI4FYPwDgHEcAOOfAIzjARj/AmCcAMD4NwDjRADGSQCMkwEYpwAwTgVgnAbAOB2AcQYA40wAxlkAjLMBGOcAMM4FYJwHwDgfgHEBAONCAMZFAIyLARiXADAuBWBcBsC4HIBxBQDjSgDGVQCMqwEY1wAwrgVgXAfAuB6AcQMA40YAxk0AjJsBGLcAMG4FYNwGwLgdgHEHAONOAMZdAIy7ARj3ADDuBWDcB8C4H4DxAADjQQDGQwCMhwEYjwAwHgVgPAbAeByA8QQA40kAxlMAjKcBGM8AMJ4FYDwHwHgegPECAONFAMZLAIyXARivADBeBWC8BsB4HYDxBgDjTQDGWwCMtwEY7wAw3gVgvAfAeB+A8QEA40MAxkcAjI8BGJ8AMD4FYHwGwPgcgPEFAONLAMZXAIyWbO7P6AXAODGz+zNOAmCcDMA4BYBxKgDjNADG6QCMMwAYZwIwzgJgnA3AOAeAcS4A4zwAxvkAjAsAGBcCMC4CYFwMwLgEgHEpAOMyAMblAIwrABhXAjCuAmBcDcC4BoBxLQDjOgDG9QCMGwAYNwIwbgJg3AzAuAWAcSsA4zYAxu0AjDsAGHcCMO4CYNwNwLgHgHEvAOM+AMb9AIwHABgPAjAeAmA8DMB4BIDxKADjMQDG4wCMJwAYTwIwngJgPA3AeAaA8SwA4zkAxvMAjBcAGC8CMF4CYLwMwHgFgPEqAOM1AMbrAIw3ABhvAjDeAmC8DcB4B4DxLgDjPQDG+wCMDwAYHwIwPgJgfAzA+ASA8SkA4zMAxucAjC8AGF8CML4CYLRkcX9GLwBGbwDGJACMSQEYkwEwJgdgTAHAmBKAMRUAY2oAxjQAjGkBGNMBMKYHYMwAwJgRgDETAOM7AIzvAjBmBmDMAsD4HgDj+wCMHwAwfgjA+BEA48cAjJ8AMGYFYMwGwJgdgNEKwOgDwOgLwOgHwOgPwJgDgDEnAOOnAIy5ABhzAzDmAWDMC8CYD4AxPwBjAQDGzwAYbQCMCgBjAABjIABjEABjMABjCABjKACjHYAxDICxIADj5wCMhQAYvwBgLAzAWASAsSgAYzEAxuIAjF8CMJYAYCwJwFgKgLE0AGMZAMayAIzlABjLAzBWAGCsCMBYCYCxMgBjFQDGqgCM1QAYqwMw1gBg/MoERv5B0neAiX0rNps3N7aOPq2+FosPC18Wfiz8WeRgkZPFpyxyscjNIg+LvCzyscjPogCLz1jYWCgsAlgEsghiEcwihEUoCzuLMBYFWXzOohCLL1gUZlGERVEWxVgUZ/ElixIsSrIoxaI0izIsyrIox6I8iwosKrKoxKIyiyosqrKoxqI6ixosvmLxNYtvWHzL4jsW37P4gcWPLH5iUZPFz76vx+AXX21QkmjP6qCk1LX5CNp8BW1+gjZ/QVsOQVtOQdungrZcgrbcgrY8gra8grZ8grb8grYCgrbPBG02QZsiaAsQtAUK2oIEbcGCthBBW6igzS5oCxO0FRS0fS5oKyRo+0LQVljQVkTQVlTQVkzQVlzQ9qWgrYSgraSgrZSgrbSgrYygraygrZygrbygrYKgraKgrZKgrbKgrYqgraqgrZqgrbqgrYag7StB29eCtm8Ebd8K2r4TtH0vaPtB0PajoO0nQVtNQdvPgjb1gGi1xH14a89FtedAW0hQUHRoQLQSqITbAsIi7MG2oOCIELtiV4LtwVEB9sDAaHuQPTQsIizUFqYEBUYrMcFhgTHafDSX7oeZFfV4TdSXzUzN8wg1+4Bonk+o2RdE8wJCzX4gmhcSavYH0byIUHMOEM2LCTXnBNG8hFDzpyCalxJqzgWieRmh5twgmpcTas4DonkFoea8IJpXEmrOB6J5FaHm/CCaVxNqLgCieQ2h5s9ANK8l1GwD0byOULMConk9oeYAEM0bCDUHgmjeSKg5CETzJkLNwSCaNxNqDgHRvIVQcyiI5q2Emu0gmrcRag4D0bydUHNBEM07CDV/DqJ5J6HmQiCadxFq/gJE825CzYVBNO8h1FwERPNeQs1FQTTvI9RcDETzfkLNxUE0HyDU/CWI5oOEmkuAaD5EqLkkiObDhJpLgWg+Qqi5NIjmo4Say4BoPkaouSyI5uOEmsuBaD5BqLk8iOaThJorgGg+Rai5Iojm04SaK4FoPkOouTKI5rOEmquAaD5HqLkqiObzhJqrgWi+QKi5Oojmi4Saa4BovkSo+SsQzZcJNX8NovkKoeZvQDRfJdT8LYjma4SavwPRfJ1Q8/cgmm8Qav4BRPNNQs0/gmi+Raj5JxDNtwk11wTRfIdQ88+EmpOxPtJxevlHUt0Y2GQfyusnov37n97I9huFdnskXM9m3ChFcSzw6zvc9/VzhPrMXySvvnBS16YmWS2eDcXVA8LQXOZsKGTr4vUjzgYtqTlA06yE+9KNXwTdQVAxa114E68LyvGLFPQVYYuMClYiQqJClejwYHtkZFigogSEh4SHRATYY6IjghV7sJ31GRkeYGdvFxAeqUTbwkOi1UkkveX18UH/8CIeg0jCyY/njfI1EVjtnLrfaMKNwSzd0b5vBpioXyErxcFEZaXaYR39Uq6jGOIN3zGhq/36sOeEdIJXCSf4a4QTPOUnDTcAneCv2v5aS+8EfxU4wVoJ4AQRNhRXd+zhIE7wBqET/JXwwFiL0AkOB3GClONXG9QJ1jbJCf7mayLwbyY4wd/d3Amqun/3fTPARP2a4gRraazUTpByHdUxyQnWSQQneJFwgr9EOMFTnkO+AugE62r7az29E6wrcIL1EsAJImworu7YI0Gc4BVCJ1iX8MBYj9AJjgRxgpTjVx/UCdY3yQk28DURuIEJTrChmztBVXdD3zcDTNSvKU6wnsZK7QQp11Ejk5xgo0RwgmcJJ/hzhBM85beDLwA6wcba/hqrd4KNBU4wNgGcIMKG4uqOPRrECV4gdIKNCQ+MsYROcDSIE6QcvyagTrCJSU6wqa+JwE1NcILN3NwJqrqb+b4ZYKJ+TXGCsRortROkXEfNTXKCzRPBCZ4knOBPEU7wlNd9ngF0gi20/bWl3gm2EDjBlgngBBE2FFd37LEgTvAMoRNsQXhgbEnoBMeCOEHK8WsF6gRbmeQEW/uaCNzaBCfYxs2doKq7je+bASbq1xQn2FJjpXaClOuorUlOsG0iOMGjhBP8McIJnvKOPicAnWA7bX9tr3eC7QROsH0COEGEDcXVHXsciBM8QegE2xEeGNsTOsFxIE6Qcvw6gDrBDiY5wY6+JgJ3NMEJdnJzJ6jq7uT7ZoCJ+jXFCbbXWKmdIOU66mySE+ycCE7wIOEEf4hwgqe8V+sRQCfYRdtfu+qdYBeBE+yaAE4QYUNxdcceD+IEjxA6wS6EB8auhE5wPIgTpBy/bqBOsJtJTrC7r4nA3U1wgj3c3Amqunv4vhlgon5NcYJdNVZqJ0i5jnqa5AR7JoIT3Es4we8jnOApf4XjAKAT7KXtr731TrCXwAn2TgAniLChuLpjTwBxggcInWAvwgNjb0InOAHECVKOXx9QJ9jHJCfY19dE4L4mOMF+bu4EVd39fN8MMFG/pjjB3hortROkXEf9TXKC/RPBCe4knOB3EU7wlL+vuAfQCQ7Q9teBeic4QOAEByaAE0TYUFzdsSeCOME9hE5wAOGBcSChE5wI4gQpx28QqBMcZJITHOxrIvBgE5zgEDd3gqruIb5vBpioX1Oc4ECNldoJUq6joSY5waGJ4AS3Ek7w2wgn+O2ETnAHoBMcpu2vw/VOcJjACQ5PACeIsKG4umNPBnGCOwid4DDCA+NwQic4GcQJUo7fCFAnOMIkJzjS10TgkSY4wVFu7gRV3aN83wwwUb+mOMHhGiu1E6RcR6NNcoKjE8EJbiSc4DcRTvCbCZ3gFkAnOEbbX8fqneAYgRMcmwBOEGFDcXXHngriBLcQOsExhAfGsYROcCqIE6Qcvz9AneAfJjnBcb4mAo8zwQn+6eZOUNX9p++bASbq1xQnOFZjpXaClOtovElOcHwiOMG1hBP8OsIJfj2hE9wA6AT/0vbXCXon+JfACU5IACeIsKG4umNPB3GCGwid4F+EB8YJhE5wOogTpBy/v0Gd4N8mOcGJviYCTzTBCU5ycyeo6p7k+2aAifo1xQlO0FipnSDlOppskhOcnAhOcCXhBL+KcIJfTegE1wA6wSna/jpV7wSnCJzg1ARwgggbiqs79kwQJ7iG0AlOITwwTiV0gjNBnCDl+E0DdYLTTHKC031NBJ5ughOc4eZOUNU9w/fNABP1a4oTnKqxUjtBynU00yQnODMRnOBSwgl+GeEEv5zQCa4AdIKztP11tt4JzhI4wdkJ4AQRNhRXd+zZIE5wBaETnEV4YJxN6ARngzhByvGbA+oE55jkBOf6mgg81wQnOM/NnaCqe57vmwEm6tcUJzhbY6V2gpTraL5JTnB+IjjBhYQT/CLCCX4xoRNcAugEF2j760K9E1wgcIILE8AJImworu7Yc0Gc4BJCJ7iA8MC4kNAJzgVxgpTjtwjUCS4yyQku9jUReLEJTnCJmztBVfcS3zcDTNSvKU5wocZK7QQp19FSk5zg0kRwgnMJJ/h5hBP8fEInuADQCS7T9tfleie4TOAElyeAE0TYUFz+Ew/ECS4gdILLCA+Mywmd4HwQJ0g5fitAneAKk5zgSl8TgVea4ARXubkTVHWv8n0zwET9muIEl2us1E6Qch2tNskJrtacoLqc2RJ3kuc/+uFPCPJfE+MvHuAvKeVvNKIuD+SWe3PLXbnl9txyS245lluuxy3X4pYjuOUPuOUPueWPuOWPueVPuOWs3HI2bjm7tryGPa9lsY7FehYbWGxksYnFZt/XjjqNNr7/bquODUv3KEq0Pj39evr19Ovp19Ovp19Pv55+Pf16+vX06+nX06+nX0+/nn49/Xr69fTr6dfTr3v0S32uJYfV/RlXZHd/xpUAjKsAGFcDMK4BYFwLwLgOgHE9AOMGAMaNAIybABg3AzBuAWDcCsC4DYBxOwDjDgDGnQCMuwAYdwMw7gFg3AvAuA+AcT8A4wEAxoMAjIcAGA8DMB4BYDwKwHgMgHFyWvdnnALAOBWAcRoA43QAxhkAjDMBGGcBMM4GYJwDwDgXgHEeAON8AMYFAIwLARgXATAuBmBcAsC4FIBxGQDjcgDGFQCMKwEYVwEwrgZgXAPAuBaAcR0A43oAxg0AjBsBGDcBMG4GYNwCwLgVgHEbAON2AMYdAIw7ARh3ATDuBmDcA8C4F4BxHwDjfgDGAwCMBwEYDwEw1s3k/oz1ABjrAzA2AGBsCMDYCICxMQBjLABjEwDGpgCMzQAYmwMwtgBgbAnA2AqAsTUAYxsAxrYAjO0AGNsDMHYAYOwIwNgJgLEzAGMXAMauAIzdABi7AzD2AGDsCcDYC4CxNwBjHwDGvgCM/QAY+wMwDgBgHAjAOAiAcTAA4xAAxqEAjMMAGIcDMI4AYBwJwDgKgHE0wrm4rO7P2BiAMRaAsQkAY1MAxmYAjM0BGFsAMLYEYGwFwNgagLENAGNbAMZ2AIztARg7ADB2BGDsBMDYGYCxCwBjVwDGbgCM3QEYewAw9gRg7AXA2BuAsQ8AY18Axn4AjP0BGAcAMA4EYBwEwDgYgHEIAONQAMZhAIzDARhHADCOBGAcBcA4GoBxDADjWADGPwAYxwEw/gnAOB6A8S8AxgkAjH8DME4EYJwEwDgZgHEKAONUAMZpAIzTARhnADDOBGCcBcA4G4BxDgDjXADGeQCM8wEYFwAwLgRgXATAuBiAcQkA41IAxmUAjMsBGFcAMK4EYFwFwLgagHENAONaAMZ1AIzrARg3ADBuBGDcBMC4GYBxCwDjVgDGbQCM2wEYdwAw7gRg3AXAuBuAcQ8A414Axn0AjPsBGA8AMB4EYDwEwHgYgPEIAONRAMZjAIzHARhPADCeBGA8BcB4GoDxDADjWQDGcwCM5wEYLwAwXgRgvATAeBmA8QoA41UAxmsAjNcBGG8AMN4EYLwFwHgbgPEOAONdAMZ7AIz3ARgfADA+BGB8BMD4GIDxCQDjUwDGZwCMzwEYXwAwvgRgfAXAaMnm/oxeAIwTM7s/4yQAxskAjFMAGKcCME4DYJwOwDgDgHEmAOMsAMbZAIxzABjnAjDOA2CcD8C4AIBxIQDjIgDGxQCMSwAYlwIwLgNgXA7AuAKAcSUA4yoAxtUAjGsAGNcCMK4DYFwPwLgBgHEjAOMmAMbNAIxbABi3AjBuA2DcDsC4A4BxJwDjLgDG3QCMewAY9wIw7gNg3A/AeACA8SAA4yEAxsMAjEcAGI8CMB4DYDwOwHgCgPEkAOMpAMbTAIxnABjPAjCeA2A8D8B4AYDxIgDjJQDGywCMVwAYrwIwXgNgvA7AeAOA8SYA4y0AxtsAjHcAGO8CMN4DYLwPwPgAgPEhAOMjAMbHAIxPABifAjA+A2B8DsD4AoDxJQDjKwBGSxb3Z/QCYPQGYEwCwJgUgDEZAGNyAMYUAIwpARhTATCmBmBMA8CYFoAxHQBjegDGDACMGQEYMwEwvgPA+C4AY2YAxiwAjO8BML4PwPgBAOOHAIwfATB+DMD4CQBjVgDGbACM2QEYrQCMPgCMvgCMfgCM/gCMOQAYcwIwfgrAmAuAMTcAYx4AxrwAjPkAGPMDMBYAYPwMgNEGwKgAMAYAMAYCMAYBMAYDMIYAMIYCMNoBGMMAGAsCMH4OwFgIgPELAMbCAIxFABiLAjAWA2AsDsD4JQBjCQDGkgCMpQAYSwMwlgFgLAvAWA6AsTwAYwUAxooAjJUAGCsDMFYBYKwKwFgNgLE6AGMNAMavTGDkHyR9B5jYtxJk8+bG1tHnFl+LZSuLbSy2s9jBYieLXSx2s9jDYi+LfSz2szjA4iCLQywOszjC4iiLYyyOszjB4iSLUyxOszjD4iyLcyzOs7jA4iKLSywus7jC4iqLayyus7jB4iaLWyxus7jD4i6Leyzus3jA4iGLRywes3jC4imLZyyes3jB4iWLVywsfkwrC28WSVgkZZGMRXIWKVik9Hs9Bqn8tEFJoj2rg5JS17ZV0LZN0LZd0LZD0LZT0LZL0LZb0LZH0LZX0LZP0LZf0HZA0HZQ0HZI0HZY0HZE0HZU0HZM0HZc0HZC0HZS0HZK0HZa0HZG0HZW0HZO0HZe0HZB0HZR0HZJ0HZZ0HZF0HZV0HZN0HZd0HZD0HZT0HZL0HZb0HZH0HZX0HZP0HZf0PZA0PZQ0PZI0PZY0PZE0PZU0PZM0PZc0PZC0PZS0PZK0KYehPRtXoI2b0FbEkFbUkFbMkFbckFbCkFbSkGbekC0WuI+vLXnotpzoC0kKCg6NCBaCVTCbQFhEfZgW1BwRIhdsSvB9uCoAHtgYLQ9yB4aFhEWagtTggKjlZjgsMAYbT66S/fDzIp6vCbqy2am5nuEmreCaL5PqHkbiOYHhJq3g2h+SKh5B4jmR4Sad4JofkyoeReI5ieEmneDaH5KqHkPiOZnhJr3gmh+Tqh5H4jmF4Sa94Nofkmo+QCI5leEmg+CaLZko9N8CESzF6HmwyCaJ9Ld6E05AqJ5EqHmoyCaJxNqPgaieQqh5uMgmqcSaj4BonkaoeaTIJqnE2o+BaJ5BqHm0yCaZxJqPgOieRah5rMgmmcTaj4HonkOoebzIJrnEmq+AKJ5HqHmiyCa5xNqvgSieQGh5ssgmhcSar4ConkRoearIJoXE2q+BqJ5CaHm6yCalxJqvgGieRmh5psgmpcTar4FonkFoebbIJpXEmq+A6J5FaHmuyCaVxNqvgeieQ2h5vsgmtcSan4AonkdoeaHIJrXE2p+BKJ5A6HmxyCaNxJqfgKieROh5qcgmjcTan4GonkLoebnIJq3Emp+AaJ5G6HmlyCatxNqfgWieQehZvV6LgTNOwk1e4Fo3kWo2RtE825CzUlANO8h1JwURPNeQs3JQDTvI9ScHETzfkLNKUA0HyDUnJJQczLWRzpOL/9IqhsDm+xDef1EtH//0xvZfqPQbo+E69mMG6UojgV+faf2e/2cRn3mL5JXXzipa0sjuHD+/+KG4vKXM3KZs6GQrYvXjzgbtKTmAE2zktqPbvzS0B0EFbPWhTfxuqAcv7SCviJskVHBSkRIVKgSHR5sj4wMC1SUgPCQ8JCIAHtMdESwYg+2sz4jwwPs7O0CwiOVaFt4SLQ6iaS3aDcD0T28iMcgLeHkx/Om8zMRWO2cut/0hBuDWbrT+70ZYKJ+hawUBxOVlWqHdfRLuY4yEG/4jgld7deHPSekE9xJOMHvIpzgKT9p2APoBDNq+2smvRPMKHCCmRLACSJsKC5/fRPECe4hdIIZCQ+MmQid4GIQJ0g5fu+AOsF3THKC7/qZCPyuCU4ws5s7QVV3ZhAnmEljpXaClOsoi0lOMEsiOMGthBP8NsIJnvIc8g5AJ/ietr++r3eC7wmc4PsJ4AQRNhSXL/AAcYI7CJ3ge4QHxvcJneBSECdIOX4fgDrBD0xygh/6mQj8oQlO8CM3d4Kq7o9AnOD7Giu1E6RcRx+b5AQ/TgQnuJFwgt9EOMFTfjt4C6AT/ETbX7PqneAnAieYNQGcIMKG4vIloCBOcAuhE/yE8MCYldAJLgdxgpTjlw3UCWYzyQlm9zMROLsJTtDq5k5Q1W0FcYJZNVZqJ0i5jnxMcoI+ieAE1xJO8OsIJ3jK6z43ADpBX21/9dM7QV+BE/RLACeIsKG4fJMIECe4gdAJ+hIeGP0IneBKECdIOX7+oE7Q3yQnmMPPROAcJjjBnG7uBFXdOUGcoJ/GSu0EKdfRpyY5wU8TwQmuJJzgVxFO8JR39FkD6ARzaftrbr0TzCVwgrkTwAkibCgu30YKxAmuIXSCuQgPjLkJneBqECdIOX55QJ1gHpOcYF4/E4HzmuAE87m5E1R15wNxgrk1VmonSLmO8pvkBPMnghNcSjjBLyOc4Cnv1boC0AkW0PbXz/ROsIDACX6WAE4QYUNx+UaTIE5wBaETLEB4YPyM0AmuBXGClONnA3WCNpOcoOJnIrBighMMcHMnqOoOAHGCn2ms1E6Qch0FmuQEAxPBCS4knOAXEU7wlL/CsQTQCQZp+2uw3gkGCZxgcAI4QYQNxeVbUYM4wSWETjCI8MAYTOgE14M4QcrxCwF1giEmOcFQPxOBQ01wgnY3d4KqbjuIEwzWWKmdIOU6CjPJCYYlghOcSzjBzyOc4Cl/X3EBoBMsqO2vn+udYEGBE/w8AZwgwobi8o9VgDjBBYROsCDhgfFzQie4EcQJUo5fIVAnWMgkJ/iFn4nAX5jgBAu7uRNUdRcGcYKfa6zUTpByHRUxyQkWSQQnOJNwgp9FOMHPJnSCcwCdYFFtfy2md4JFBU6wWAI4QYQNxeWfswJxgnMInWBRwgNjMUInuBnECVKOX3FQJ1jcJCf4pZ+JwF+a4ARLuLkTVHWXAHGCxTRWaidIuY5KmuQESyaCE5xKOMFPI5zgpxM6wRmATrCUtr+W1jvBUgInWDoBnCDChuLyD16COMEZhE6wFOGBsTShE9wK4gQpx68MqBMsY5ITLOtnInBZE5xgOTd3gqruciBOsLTGSu0EKddReZOcYPlEcIITCSf4SYQT/GRCJzgF0AlW0PbXinonWEHgBCsmgBNE2FBc/klsECc4hdAJViA8MFYkdILbQZwg5fhVAnWClUxygpX9TASubIITrOLmTlDVXQXECVbUWKmdIOU6qmqSE6yaCE7wZVa6Cf5VVroJ3pKNbvv3ymbOpEK0PwmdYDVtf62ud4LVBE6wegI4QYQNxdUdeyeIE/TKRucEqxEeGKsTOsGdIE6QcvxqgDrBGiY5wa/8TAT+ygQn+LWbO0FV99cgTrC6xkrtBCnX0TcmOcFvEsEJPiWc4J8RTvDPs9Jt/y+ymjOpEO1PQif4rba/fqd3gt8KnOB3CeAEETYUV3fs3SBO8EVWOif4LeGB8TtCJ7gbxAlSjt/3oE7we5Oc4A9+JgL/YIIT/NHNnaCq+0cQJ/idxkrtBCnX0U8mOcGfEsEJPiSc4B8RTvCPCZ3gE0AnWFPbX3/WO8GaAif4cwI4QYQNxdUdey+IE3xC6ARrEh4YfyZ0gntBnCDl+P0C6gR/MckJhvuZCBxughOMcHMnqOqOAHGCP2us1E6Qch1FmuQEIxPBCd4lnODvEU7w9wmd4ANAJxil7a/ReicYJXCC0QngBBE2FFd37P0gTvABoROMIjwwRhM6wf0gTpBy/GJAnWCMSU7wVz8TgX81wQnWcnMnqOquBeIEozVWaidIuY5qm+QEa2tOUF3ObIk7yfMf/fAnBPmvifEXD/CXlPI3GlGXP+eWg7nlz7jl3NyyH7eclVt+n1vOxC2n4ZbX+L5ZXsstr+OW13PLG7jljdzyJm55s7b8G3uf31nUYVGXRT0W9Vk0YNHQ77WjTqON77/bqsheW8yZdDz9evr19Ovp19Ovp19Pv55+Pf16+vX06+nX06+nX0+/nn49/Xr69fTr6dfTb+L1S32uJYfV/RlXZHd/xpUAjKsAGFcDMK4BYFwLwLgOgHE9AOMGAMaNAIybABg3AzBuAWDcCsC4DYBxOwDjDgDGnQCMuwAYdwMw7gFg3AvAuA+AcT8A4wEAxoMAjIcAGA8DMB4BYDwKwHgMgHFyWvdnnALAOBWAcRoA43QAxhkAjDMBGGcBMM4GYJwDwDgXgHEeAON8AMYFAIwLARgXATAuBmBcAsC4FIBxGQDjcgDGFQCMKwEYVwEwrgZgXAPAuBaAcR0A43oAxg0AjBsBGDcBMG4GYNwCwLgVgHEbAON2AMYdAIw7ARh3ATDuBmDcA8C4F4BxHwDjfgDGAwCMBwEYDwEw1s3k/oz1ABjrAzA2AGBsCMDYCICxMQBjLABjEwDGpgCMzQAYmwMwtgBgbAnA2AqAsTUAYxsAxrYAjO0AGNsDMHYAYOwIwNgJgLEzAGMXAMauAIzdABi7AzD2AGDsCcDYC4CxNwBjHwDGvgCM/QAY+wMwDgBgHAjAOAiAcTAA4xAAxqEAjMMAGIcDMI4AYBwJwDgKgHE0wrm4rO7P2BiAMRaAsQkAY1MAxmYAjM0BGFsAMLYEYGwFwNgagLENAGNbAMZ2AIztARg7ADB2BGDsBMDYGYCxCwBjVwDGbgCM3QEYewAw9gRg7AXA2BuAsQ8AY18Axn4AjP0BGAcAMA4EYBwEwDgYgHEIAONQAMZhAIzDARhHADCOBGAcBcA4GoBxDADjWADGPwAYxwEw/gnAOB6A8S8AxgkAjH8DME4EYJwEwDgZgHEKAONUAMZpAIzTARhnADDOBGCcBcA4G4BxDgDjXADGeQCM8wEYFwAwLgRgXATAuBiAcQkA41IAxmUAjMsBGFcAMK4EYFwFwLgagHENAONaAMZ1AIzrARg3ADBuBGDcBMC4GYBxCwDjVgDGbQCM2wEYdwAw7gRg3AXAuBuAcQ8A496s7s+4D4BxPwDjAQDGgwCMhwAYDwMwHgFgPArAeAyA8TgA4wkAxpMAjKcAGE8DMJ4BYDwLwHgOgPE8AOMFAMaLAIyXABgvAzBeAWC8CsB4DYDxOgDjDQDGmwCMtwAYbwMw3gFgvAvAeA+A8T4A4wMAxocAjI8AGB8DMD4BYHwKwPgMgPE5AOMLAMaXAIyvABgt2dyf0QuAcWJm92ecBMA4GYBxCgDjVADGaQCM0wEYZwAwzgRgnAXAOBuAcQ4A41wAxnkAjPMBGBcAMC4EYFwEwLgYgHEJAONSAMZlAIzLARhXADCuBGBcBcC4GoBxDQDjWgDGdQCM6wEYNwAwbgRg3ATAuBmAcQsA41YAxm0AjNsBGHcAMO4EYNwFwLgbgHEPAONeAMZ9AIz7ARgPADAeBGA8BMB4GIDxCADjUQDGYwCMxwEYTwAwngRgPAXAeBqA8QwA41kAxnMAjOcBGC8AMF4EYLwEwHgZgPEKAONVAMZrAIzXARhvADDeBGC8BcB4G4DxDgDjXQDGewCM9wEYHwAwPgRgfATA+BiA8QkA41MAxmcAjM8BGF8AML4EYHwFwGjJ4v6MXgCM3gCMSQAYkwIwJgNgTA7AmAKAMSUAYyoAxtQAjGkAGNMCMKYDYEwPwJgBgDEjAGMmAMZ3ABjfBWDMDMCYBYDxPQDG9wEYPwBg/BCA8SMAxo8BGD8BYMwKwJgNgDE7AKMVgNEHgNEXgNEPgNEfgDEHAGNOAMZPARhzATDmBmDMA8CYF4AxHwBjfgDGAgCMnwEw2gAYFQDGAADGQADGIADGYADGEADGUABGOwBjGABjQQDGzwEYCwEwfgHAWBiAsQgAY1EAxmIAjMUBGL8EYCwBwFgSgLEUAGNpAMYyAIxlARjLATCWB2CsAMBYEYCxEgBjZQDGKgCMVQEYqwEwVgdgrAHA+JUJjPyDpO8AE/tW7DZvbmwdfTbys1gas4hl0YRFUxbNWDRn0YJFSxatWLRm0YZFWxbtWLRn0YFFRxadWHRm0YVFVxbdWHRn0YNFTxa9WPRm0YdFXxb9WPRnMYDFQBaDWAxmMYTFUBbDWAxnMYLFSBajWIxmMYbFWBZ/sBjH4k8W41n8xWICi79ZTGQxicVkFlNYTGUxjcV0FjNYzGQxi8VsFnP8Xo/BXD9tUJJoz+qgpNS1NRa0xQramgjamgramgnamgvaWgjaWgraWgnaWgva2gja2gra2gna2gvaOgjaOgraOgnaOgvaugjaugraugnaugvaegjaegraegnaegva+gja+gra+gna+gvaBgjaBgraBgnaBgvahgjahgrahgnahgvaRgjaRgraRgnaRgvaxgjaxgra/hC0jRO0/SloGy9o+0vQNkHQ9regbaKgbZKgbbKgbYqgbaqgbZqgbbqgbYagbaagbZagbbagbY6gTT0gWi1xH47Jo6j2HGgLCQqKDg2IVgKVcFtAWIQ92BYUHBFiV+xKsD04KsAeGBhtD7KHhkWEhdrClKDAaCUmOCwwRpuPCG92rKjHa6K+bGZqJrx5stIYRDPhzZiVWBDNhDd3VpqAaCa8WbTSFEQz4c2nlWYgmglvZq00B9FMeHNspQWIZsKbbSstQTQT3rxbaQWimfBm4EprEM2ENxdX2oBoJrxZudIWRDPhzc+VdiCaCW+mrrQH0Ux4c3alA4hmwpu9Kx1BNBPePF7pBKKZ8Gb0SmcQzYQ3t1e6gGgmvFm+0hVEM+HN95VuIJoJb+avdAfRTPjjAEoPEM2EPzag9ATRTPjjBUovEM2EP4ag9AbRTPjjCkofEM2EP9ag9AXRTPjjD0o/EM2EPyah9AfRTPjjFMoAEM2EP3ahDATRTPjjGcogEM2EP8ahDAbRTPjjHsoQEM2EPxaiDAXRTPjjI8owEM2EP2aiDAfRTPjjKMoIEM2EP7aijATRTPjjLcooEM2EPwajjAbRTPjjMsoYEM2EP1ajjAXRTPjjN8ofIJoJf0xHGQeimfDHeZQ/QTQT/tiPMh5EM+GPByl/gWgm/DEiZQKIZsIfN1L+BtFM+GNJykQQzYQ/vqRMAtFM+GNOymQQzYQ/DqVMAdFM+GNTylQQzYQ/XqVMA9FM+GNYynQQzYQ/rqXMANFM+GNdykwQzYQ//qXMAtFM+GNiymwQzYQ/TqbMIdScjPWRjtPLP5LqxsAm+1BePxHt3//0RrbfKLTboxk/Qsc/XOxbcSzw63ue3+vn+eozf5G8+sJJXdt8wYXz/xc3FJdvDpDLnA2FbF28fsTZoCU1B2ialXl+dOM3n+4gqJi1LryJ1wXl+C0Q9BVhi4wKViJCokKV6PBge2RkWKCiBISHhIdEBNhjoiOCFXuwnfUZGR5gZ28XEB6pRNvCQ6LVSSS95fXxQf/wIh6DBYSTH8+70M9EYLVz6n4XEW4MZule5PdmgIn6FbJSHExUVqod1tEv5TpaTLzhOyZ0tV8f9pyQTjA94QSfgXCCp/ykIROgE1yi7a9L9U5wicAJLk0AJ4iwobh8+yAQJ5iJ0AkuITwwLiV0godBnCDl+C0DdYLLTHKCy/1MBF5ughNc4eZOUNW9AsQJLtVYqZ0g5TpaaZITXJkITjA14QSfhnCCpzyHnA7QCa7S9tfVeie4SuAEVyeAE0TYUFy+wSCIE0xH6ARXER4YVxM6waMgTpBy/NaAOsE1JjnBtX4mAq81wQmuc3MnqOpeB+IEV2us1E6Qch2tN8kJrk8EJ5iccIJPQTjBU347OBWgE9yg7a8b9U5wg8AJbkwAJ4iwobh8C2IQJ5iK0AluIDwwbiR0gsdBnCDl+G0CdYKbTHKCm/1MBN5sghPc4uZOUNW9BcQJbtRYqZ0g5TraapIT3JoITtCbcIJPQjjBU173mQzQCW7T9tfteie4TeAEtyeAE0TYUFz+kQIQJ5iM0AluIzwwbid0gidBnCDl+O0AdYI7THKCO/1MBN5pghPc5eZOUNW9C8QJbtdYqXZYR7+U62i3SU5wdyI4QaI7JP3TG9mdhxTaO/p4ATrBPdr+ulfvBPcInODeBHCCCBuKyz9jBOIEvQid4B7CA+NeQid4GsQJUo7fPlAnuM8kJ7jfz0Tg/SY4wQNu7gRV3QdAnOBejZXaCVKuo4MmOcGDieAEnxJO8M8IJ3jKe7US3gM1wZzgIW1/Pax3gocETvBwAjhBhA3F5R86BHGCLzLTOcFDhAfGw4RO8CyIE6QcvyOgTvCISU7wqJ+JwEdNcILH3NwJqrqPgTjBwxortROkXEfHTXKCxxPBCT4knOAfEU7wlL/C8QTQCZ7Q9teTeid4QuAETyaAE0TYUFz+KWQQJ/iE0AmeIDwwniR0gudBnCDl+J0CdYKnTHKCp/1MBD5tghM84+ZOUNV9BsQJntRYqZ0g5To6a5ITPJsITvAu4QR/j3CCp/x9xQeATvCctr+e1zvBcwIneD4BnCDChuLqjn0RxAk+IHSC5wgPjOcJneBFECdIOX4XQJ3gBZOc4EU/E4EvmuAEL7m5E1R1XwJxguc1VmonSLmOLpvkBC8nghO8STjB3yKc4G8TOsE7gE7wira/XtU7wSsCJ3g1AZwgwobi8o4N4gTvEDrBK4QHxquETvAyiBOkHL9roE7wmklO8LqficDXTXCCN9zcCaq6b4A4wasaK7UTpFxHN01ygjcTwQleJZzgrxFO8NcJneANQCd4S9tfb+ud4C2BE7ydAE4QYUNx+eAD4gRvEDrBW4QHxtuETvAqiBOkHL87oE7wjklO8K6ficB3TXCC99zcCaq674E4wdsaK7UTpFxH901ygvcTwQleJJzgLxFO8JcJneAVQCf4QNtfH+qd4AOBE3yYAE4QYUNxdce+DuIErxA6wQeEB8aHhE7wOogTpBy/R6BO8JFJTvCxn4nAj01wgk/c3Amqup+AOMGHGiu1E6RcR09NcoJPE8EJniWc4M8RTvDnCZ3gBUAn+EzbX5/rneAzgRN8ngBOEGFDcfnDfhAneIHQCT4jPDA+J3SCN0GcIOX4vQB1gi9McoIv/UwEfmmCE3zl5k5Q1f0KxAk+11ipnSDpOvI3xwmq/Sa0EzxJOMGfIpzgTxM6wTOATtDL//Wzt78lrutTX9A7QTXJavFsKC6fkABxgmcInaCXP934edMdGJXbIE6QcvyS+GM6wSTEE+K/+42/icBq59T9JiPcGMzSncz/zQAT9WuKE/TWWKmdIOU6Sm6SE0yeCE7wKOEEf4xwgj9O6ARPADrBFNr+mlLvBFMInGDKBHCCCBuKqzv2XRAneILQCaYgPDCmJHSCd0GcIOX4pQJ1gqlMcoKp/U0ETm2CE0zj5k5Q1Z0GxAmm1FipnSDlOkprkhNMmwhO8CDhBH+IcII/TOgEjwA6wXTa/ppe7wTTCZxg+gRwgggbistfAAZxgkcInWA6wgNjekIneB/ECVKOXwZQJ5jBJCeY0d9E4IwmOMFMbu4EVd2ZQJxgeo2V2glSrqN3THKC72hOUF3ObIk7yfMf/fAnBPmvifEXD/CXlPI3GlGXz3PLJ7nlw9zyXm55O7e8kVtezS0v5Zbnc8u/ccu/c8t1uOW63HI9brk+t9yAW26oLb/LxiAziyws3mPxPosPWHzI4iP/1446jTa+/26rInttMWfS8fTr6dfTr6dfT7+efj39evr19Ovp19Ovp19Pv55+Pf16+vX06+nX06+nX0+/idcv9bmWHFb3Z1yR3f0ZVwIwrgJgXA3AuAaAcS0A4zoAxvUAjBsAGDcCMG4CYNwMwLgFgHErAOM2AMbtAIw7ABh3AjDuAmDcDcC4B4BxLwDjPgDG/QCMBwAYDwIwHgJgPAzAeASA8SgA4zEAxslp3Z9xCgDjVADGaQCM0wEYZwAwzgRgnAXAOBuAcQ4A41wAxnkAjPMBGBcAMC4EYFwEwLgYgHEJAONSAMZlAIzLARhXADCuBGBcBcC4GoBxDQDjWgDGdQCM6wEYNwAwbgRg3ATAuBmAcQsA41YAxm0AjNsBGHcAMO4EYNwFwLgbgHEPAONeAMZ9AIz7ARgPADAeBGA8BMBYN5P7M9YDYKwPwNgAgLEhAGMjAMbGAIyxAIxNABibAjA2A2BsDsDYAoCxJQBjKwDG1gCMbQAY2wIwtgNgbA/A2AGAsSMAYycAxs4AjF0AGLsCMHYDYOwOwNgDgLEnAGMvAMbeAIx9ABj7AjD2A2DsD8A4AIBxIADjIADGwQCMQwAYhwIwDgNgHA7AOAKAcSQA4ygAxtEI5+KyApyLA2CMBWBsAsDYFICxGQBjcwDGFgCMLQEYWwEwtgZgbAPA2BaAsR0AY3sAxg4AjB0BGDsBMHYGYOwCwNgVgLEbAGN3AMYeAIw9ARh7ATD2BmDsA8DYF4CxHwBjfwDGAQCMAwEYBwEwDgZgHALAOBSAcRgA43AAxhEAjCMBGEcBMI4GYBwDwDgWgPEPAMZxAIx/AjCOB2D8C4BxAgDj3wCMEwEYJwEwTgZgnALAOBWAcRoA43QAxhkAjDMBGGcBMM4GYJwDwDgXgHEeAON8AMYFAIwLARgXATAuBmBcAsC4FIBxGQDjcgDGFQCMKwEYVwEwrgZgXAPAuBaAcR0A43oAxg0AjBsBGDcBMG4GYNwCwLgVgHEbAON2AMYdAIw7ARh3ATDuBmDcA8C4F4BxHwDjfgDGAwCMBwEYDwEwHgZgPALAeBSA8RgA43EAxhMAjCcBGE8BMJ4GYDwDwHgWgPEcAON5AMYLAIwXARgvATBeBmC8AsB4FYDxGgDjdQDGGwCMNwEYbwEw3gZgvAPAeBeA8R4A430AxgcAjA8BGB8BMD4GYHwCwPgUgPEZAONzAMYXAIwvARhfATBasrk/oxcA48TM7s84CYBxMgDjFADGqQCM0wAYpwMwzgBgnAnAOAuAcTYA4xwAxrkAjPMAGOcDMC4AYFwIwLgIgHExAOMSAMalAIzLABiXAzCuAGBcCcC4CoBxNQDjGgDGtQCM6wAY1wMwbgBg3AjAuAmAcTMA4xYAxq0AjNsAGLcDMO4AYNwJwLgLgHE3AOMeAMa9AIz7ABj3AzAeAGA8CMB4CIDxMADjEQDGowCMxwAYjwMwngBgPAnAeAqA8TQA4xkAxrMAjOcAGM8DMF4AYLwIwHgJgPEyAOMVAMarAIzXABivAzDeAGC8CcB4C4DxNgDjHQDGuwCM9wAY7wMwPgBgfAjA+AiA8TEA4xMAxqcAjM8AGJ8DML4AYHwJwPgKgNGSxf0ZvQAYvQEYkwAwJgVgTAbAmByAMQUAY0oAxlQAjKkBGNMAMKYFYEwHwJgegDEDAGNGAMZMAIzvADC+C8CYGYAxCwDjewCM7wMwfgDA+CEA40cAjB8DMH4CwJgVgDEbAGN2AEYrAKMPAKMvAKMfAKM/AGMOAMacAIyfAjDmAmDMDcCYB4AxLwBjPgDG/ACMBQAYPwNgtAEwKgCMAQCMgQCMQQCMwQCMIQCMoQCMdgDGMADGggCMnwMwFgJg/AKAsTAAYxEAxqIAjMUAGIsDMH4JwFgCgLEkAGMpAMbSAIxlABjLAjCWA2AsD8BYAYCxIgBjJQDGygCMVQAYqwIwVgNgrA7AWAOA8SsTGPkHSd8BJvatRNq8ubF19Pmxv8XyCYusLLKxyM7CysKHhS8LPxb+LHKwyMniUxa5WORmkYdFXhb5WORnUYDFZyxsLBQWASwCWQSxCGYRwiKUhZ1FGIuCLD5nUYjFFywKsyjCoiiLYiyKs/iSRQkWJVmUYlGaRRkWZVmUY1GeRQUWFVlUYlGZRRUWVVlUY1GdRQ0WX7H4msU3LL5l8R2L7/1fj8EP/tqgJNGe1UFJqWv7RNCWVdCWTdCWXdBmFbT5CNp8BW1+gjZ/QVsOQVtOQdungrZcgrbcgrY8gra8grZ8grb8grYCgrbPBG02QZsiaAsQtAUK2oIEbcGCthBBW6igzS5oCxO0FRS0fS5oKyRo+0LQVljQVkTQVlTQVkzQVlzQ9qWgrYSgraSgrZSgrbSgrYygraygrZygrbygrYKgraKgrZKgrbKgrYqgraqgrZqgrbqgrYag7StB29eCtm8Ebd8K2r4TtH0vaFMPiFZL3Idj8iiqPQfaQoKCokMDopVAJdwWEBZhD7YFBUeE2BW7EmwPjgqwBwZG24PsoWERYaG2MCUoMFqJCQ4LjNHmI8Iv+yvq8ZqoL5uZmgkvHlA+AdFMeDGCkhVEM+HFDUo2EM2EF0so2UE0E158oVhBNBNezKH4gGgmvDhE8QXRTHixieIHopnw4hXFH0Qz4cUwSg4QzYQX1yg5QTQTXqyjfAqimfDiHyUXiGbCi4mU3CCaCS9OUvKAaCa82EnJC6KZ8OIpJR+IZsKLsZT8IJoJL+5SCoBoJrxYTPkMRDPhxWeKDUQz4cVsigKimfDiOCUARDPhxXZKIIhmwov3lCAQzYQXAyrBIJoJLy5UQkA0E16sqISCaCa8+FGxg2gmvJhSCQPRTHhxplIQRDPhxZ7K5yCaCS8eVQqBaCa8GFX5AkQz4cWtSmEQzYQXyypFQDQTXnyrFAXRTHgxr1IMRDPhxcFKcRDNhBcbK1+CaCa8eFkpAaKZ8GJopSSIZsKLq5VSIJoJL9ZWSoNoJrz4WykDopnwYnKlLIhmwovTlXIgmgkvdlfKg2gmvHheqQCimfBifKUiiGbCi/uVSiCaCW8WoFQG0Ux48wGlCohmwpsZKFVBNBPeHEGpBqKZ8GYLSnUQzYQ3b1BqgGgmvBmE8hWIZsKbSyhfg2gmvFmF8g2IZsKbXyjfgmgmvJmG8h2IZsKbcyjfE2pOxvpIx+nlH0l1Y2CTfSivn4j27396I9tvFNrt0c1vwqI4Fvj1/aP/6+ef1Gf+Inn1hZO6tp8EF87/X9xQXD0gPMxlzoZCti5eP+Js0JKaAzTNyo/+dOP3E91BUDFrXXgTrwvK8asp6CvCFhkVrESERIUq0eHB9sjIsEBFCQgPCQ+JCLDHREcEK/ZgO+szMjzAzt4uIDxSibaFh0Srk0h6y+vjg/7hRTwGNQknP573Z38TgdXOqfv9hXBjMEv3L/5vBpioXyErxcFEZaXaYR39Uq6jcOIN3zGhq/36sOeEdIKVCCf4yoQTPOUnDVUBnWCEtr9G6p1ghMAJRiaAE0TYUFzdsR+DOMGqhE4wgvDAGEnoBB+DOEHK8YsCdYJRJjnBaH8TgaNNcIIxbu4EVd0xIE4wUmOldoKU6+hXk5zgr4ngBMsRTvDlCSd4ynPIFQGdYC1tf62td4K1BE6wdgI4QYQNxdUd+ymIE6xI6ARrER4YaxM6wacgTpBy/H4DdYK/meQEf/c3Efh3E5xgHTd3gqruOiBOsLbGSu0EKddRXZOcYN1EcIKlCCf40oQTPOW3g8sCOsF62v5aX+8E6wmcYP0EcIIIG4qrO/ZzECdYltAJ1iM8MNYndILPQZwg5fg1AHWCDUxygg39TQRuaIITbOTmTlDV3QjECdbXWKmdIOU6amySE2ycCE6wOOEE/yXhBE953WdJQCcYq+2vTfROMFbgBJskgBNE2FBc3bFfgjjBkoROMJbwwNiE0Am+BHGClOPXFNQJNjXJCTbzNxG4mQlOsLmbO0FVd3MQJ9hEY6V2gpTrqIVJTrBFIjjBwoQTfBHCCZ7yjj7FAJ1gS21/baV3gi0FTrBVAjhBhA3F5YNvbgwnWIzQCbYkPDC2InSCZq0LaidIOX6tQZ1ga5OcYBt/E4HbmOAE27q5E1R1twVxgq00VmonSLmO2pnkBNslghMsSDjBf044wVPeq/ULQCfYXttfO+idYHuBE+yQAE4QYUNxdcf2BnGCXxA6wfaEB8YOhE7QG8QJUo5fR1An2NEkJ9jJ30TgTiY4wc5u7gRV3Z1BnGAHjZXaCVKuoy4mOcEuieAEQwgn+FDCCZ7yVzjCAJ1gV21/7aZ3gl0FTrBbAjhBhA3F1R07KYgTDCN0gl0JD4zdCJ1gUhAnSDl+3UGdYHeTnGAPfxOBe5jgBHu6uRNUdfcEcYLdNFZqJ0i5jnqZ5AR7JYITDCCc4AMJJ3jK31cMBnSCvbX9tY/eCfYWOME+CeAEETYUV3fs5CBOMJjQCfYmPDD2IXSCyUGcIOX49QV1gn1NcoL9/E0E7meCE+zv5k5Q1d0fxAn20VipnSDlOhpgkhMckAhOsADhBP8Z4QRvI3SCCqATHKjtr4P0TnCgwAkOSgAniLChuLpjpwRxggqhExxIeGAcROgEU4I4QcrxGwzqBAeb5ASH+JsIPMQEJzjUzZ2gqnsoiBMcpLFSO0HKdTTMJCc4LBGcYB7CCT4v4QSfj9AJ5gd0gsO1/XWE3gkOFzjBEQngBBE2FFd37NQgTjA/oRMcTnhgHEHoBFODOEHK8RsJ6gRHmuQER/mbCDzKBCc42s2doKp7NIgTHKGxUjtBynU0xiQnOCYRnGBOwgn+U8IJPhehE8wN6ATHavvrH3onOFbgBP9IACeIsKG4umOnBXGCuQmd4FjCA+MfhE4wLYgTpBy/caBOcJxJTvBPfxOB/zTBCY53cyeo6h4P4gT/0FipnSDlOvrLJCf4VyI4QV/CCd6PcIL3J3SCOQCd4ARtf/1b7wQnCJzg3wngBBE2FFd37PQgTjAHoROcQHhg/JvQCaYHcYKU4zcR1AlONMkJTvI3EXiSCU5wsps7QVX3ZBAn+LfGSu0EKdfRFJOc4JREcILZCCf47IQTvJXQCfoAOsGp2v46Te8Epwqc4LQEcIIIG4qrO3ZGECfoQ+gEpxIeGKcROsGMIE6QcvymgzrB6SY5wRn+JgLPMMEJznRzJ6jqngniBKdprNROkHIdzTLJCc5KBCf4EeEE/zHhBP8JoRPMCugEZ2v76xy9E5wtcIJzEsAJImworu7Y74A4wayETnA24YFxDqETfAfECVKO31xQJzjXJCc4z99E4HkmOMH5bu4EVd3zQZzgHI2V2glSrqMFJjnBBYngBN8jnODfJ5zgPyB0gh8COsGF2v66SO8EFwqc4KIEcIIIG4qrO3ZmECf4IaETXEh4YFxE6AQzgzhByvFbDOoEF5vkBJf4mwi8xAQnuNTNnaCqeymIE1yksVI7Qcp1tMwkJ7hMc4LqcmZL3Eme/+iHPyHIf02Mv3iAv6SUv9GIutyHW+7GLXfglltxy0245frccm1uOZJb/olbfpdbzswtZ+GW3+OW3+eWP+CWP+SWP9KWl7PnFSxWsljFYjWLNSzWsljn/9pRp7K82Za8uO1J/yhKsj7t/0461Pvw+ya4WWrGDwAYPwRg/AiA8WMAxk8AGLMCMGYDYMwOwGgFYPQBYPQFYPQDYPQHYMwBwJgTgPFTAMZcAIy5ARjzADDmBWDMB8CYH4CxAADjZwCMNgBGBYAxAIAxEIAxCIAxGIAxBIAxFIDRDsAYBsBYEIDxcwDGQgCMXwAwFgZgLALAWBSAsRgAY3EAxi8BGEsAMJYEYCwFwFgagLEMAGNZAMZyAIzlARgrADBWBGCsBMBYGYCxCgBjVQDGagCM1QEYawAwfuXeV6H8y+nN6Xf0ud7fYtnAYiOLTSw2s9jCYiuLbSy2s9jBYieLXSx2s9jDYi+LfSz2szjA4iCLQywOszjC4iiLYyyOszihXtjC4hSL0yzOsDjL4hyL8ywusLjI4hKLyyyusLjK4hqL6yxusLjJ4haL2yzusLjL4h6L+ywesHjI4hGLxyyesHjK4hmL5yxesHjJ4pX6/egcTD8LbxZJcrweg6Q5LHGvulEHJKWubaOgbZOgbbOgbYugbaugbZugbbugbYegbaegbZegbbegbY+gba+gbZ+gbb+g7YCg7aCg7ZCg7bCg7Yig7aig7Zig7big7YSg7aSg7ZSg7bSg7Yyg7ayg7Zyg7byg7YKg7aKg7ZKg7bKg7Yqg7aqg7Zqg7bqg7Yag7aag7Zag7bag7Y6g7a6g7Z6g7b6g7YGg7aGg7ZGg7bGg7Ymg7amg7Zmg7bmg7YWg7aWg7ZWgTT2A6du8BG3egrYkgjb14Ge1xH14ac9FtWebaw9FnWQcfclemBEdoz7sCs/preN09aIPwi/gKxv8zTEF1JopL8fdCKKZ8AIBZROIZsILDpTNIJoJL2BQtoBoprzR0lYQzYQXWCjbQDQTXrChbAfRTHgBiLIDRDPlLXR3gmgmvEBF2QWimfCCF2U3iGbCC2iUPSCaKX8cZS+IZsILfJR9IJoJLxhS9oNoJrwASTkAopnyZy8PgmgmvEBKOQSimfCCK+UwiGbCC7iUIyCaCS8IU46CaCa8wEw5BqKZ8II15TiIZsIL4JQTIJoJL6hTToJoJrxATzkFopnwgj/lNIhmwgsIlTMgmgkvSFTOgmgmvMBROQeimfCCSeU8iGbCCzCVCyCaCS/oVC6CaCa8QFS5BKKZ8IJT5TKIZsILWJUrIJoJL4hVroJoJrzAVrkGopnwgl3lOohmwguAlRsgmgkvKFZugmgmvEBZuQWimfCCZ+U2iGbCC6iVOyCaCS/IVu6CaCa8wFu5B6KZ8IJx5T6IZsIL0JUHIJoJL2hXHoJoJrxAXnkEopnwgnvlMYhmwgv4lScgmglvCKA8BdFMeIMB5RmIZsIbFijPQTQT3gBBeQGimfCGCspLEM2EN2hQXoFoJrzhg6Je44mgmfAGEooXiGbCG1Io3iCaCW9woSQh1Kz++Fdqy+trmdWHF6dZ/6B5T8+Pf7k7o+fHv2gYPT/+RcPo+fEvGkbPj3/RMHp+/IuG0fPjXzSMnh//omH0/PgXDaPnx79oGD0//kXD6PnxLxpGz49/0TB6fvyLhtHz4180jJ4f/6Jh9Pz4Fw2j58e/aBg9P/5Fw+j58S8aRs+Pf9Ewen78i4bR8+NfNIyeH/+iYfT8+BcNo+fHv2gYPT/+RcPo+fEvGkbPj3/RMHp+/IuG0fPjXzSMKD/+ZVrfATabFze2jj6T5bBYkrNIof7mDItULFKzSMMiLYt0LNKzyMAiI4tMLN5h8S6LzCyysHiPxfssPmDxIYuPWHzM4hMWWVlkY5Fd/f0aFj4sfFn4sfBnkYNFThafssjFIjeLPCzyssjHIj+LAiw+Y2FjobAIYBHIIohFMIsQFqEs7CzCWBRk8TmLQiy+YFGYRRH1+6wsirEozuJLFiX0Pyj2heCHdwoL2ooI2ooK2ooJ2ooL2r4UtJXQ2vgH9U6RjPuSL+UP/lBzJjfpC9jUnClAOFOCcKYC4UwNwpkGhDMtCGc6EM70IJwZQDgzgnBmAuF8B4TzXRDOzCCcWUA43wPhfB+E8wMQzg9BOD8C4fwYhPMTEM6sIJzZQDizg3BaQTh9QDh9QTj9QDj9QThzgHDmBOH8FIQzFwhnbhDOPCCceUE484Fw5gfhLADC+RkIpw2EUwHhDADhDAThDALhDAbhDAHhDAXhtINwhoFwFgTh/ByEs5BJnEld5VTi/vML1zjj9FbYVc1cb0UIvlfluKnje7nddF3Y4qouSrHNaL0Vo9n+/umtOOG6eN+914XNofpLuv1XKUHYF+G2rPDrwqXvLqrfg2R9pLO8uSGrKevG5G3b5srDfbcZM75s/e8xi1/fJXO8fi6l/1Kw+sJJXZuaZLV4NhRXD6gfIRxQdRu0pOYATbNSknD8ShHutGatC2/idUE5fqUFfUXYIqOClYiQqFAlOjzYHhkZFqgoAeEh4SERAfaY6IhgxR5sZ31GhgfY2dsFhEcq0bbwkGh1EklveWPG+Qf5VbyEB1iet0wOE4HVzskvwyXcGMzSXTbHmwEm6lfISnEwUVmpdth/fwaKcB2VI97wHRO62q8Pe05IJ/gF4QRfmHCCL0I4qRTNYc6kQrQ/CZ1geW1/raB3guUFTrCCmU5QgyxK6D7KE+6MFbi+AqKCo21h9gh7QER4YGhEUGBEWFg46zdEUewxUQG2qKCAmGAlJCQyLDosRgmMiQiODg8JDg8Lifpn9ox6D8R9UI5fRVD3UdEk91Eph4nAlUxwH5Xd3H2ouiuDuI8KGiu1+6BcR1VMch9VNPfBP6jHtyoBu51jz6wxVtUmQHV5Uir3Xa7AcZbilpf7v1lewS2v5JZXccurueU13PJabnmdtlyNvU91FjVYfMXiaxbfsPiWxXc5/tdlUu//3xFurw5T8z3r8wcWP7L4SXNI/Lasvq6/lv0HQduPgrafcvzvNe/UZuo7wuPB9wR9vb5+3qb8QMj1iUlmKoluXbiiWV0XP5KM3+v1+hPhXy2U42f2Pv6tCft4Tdbnzyx+YREu2MdrCvbdnwVtvwjawhNgH/+WcF+qSbiP/0zIlQ1kH/+FcB8PJ9zHswHt49+YsI9HsD4jWUSxiBbs4xGCfTdS0BYlaItOgH38G8J9KYJwH48k5LKC7ONRhPt4NOE+bgXax782YR+PYX3+yqIWi9qCfTxGsO/+KmirJWirnQD7+NeE+1IM4T7+KyGXL8g+XotwH69NuI/7Au3jX5mwj//G+vydRR0WdQX7+G+Cffd3QVsdQVvdBNjHvyLcl34j3Md/J+TyB9nH6xDu43UJ93F/oH28hgn7eD3WZ30WDVg0FOzj9QT7bn1BWwNBW8ME2MdrEO5L9Qj38fqEXDlB9vEGhPt4Q8J9PCfQPl7dhH28EeuzMYtYFk0E+3gjwb7bWNAWK2hrkgD7eHXCfakR4T7emJArF8g+Hku4jzch3MdzAe3j1UzYx5uyPpuxaM6ihWAfbyrYd5sJ2poL2lokwD5ejXBfakq4jzcj5MoDso83J9zHWxDu43lAvsiVNwndNtOScPz4fbql9j2FZCzSctsQ/6A+7vkkIf5yl7dF+KB6D0+/nn49/Xr69fTr6dfTr6dfT7+efj39evr19Ovp19Ovp19Pv55+Pf16+vX06x79Un9encPq/owrsrs/40oAxlUAjKsBGNcAMK4FYFwHwLgegHEDAONGAMZNAIybARi3ADBuBWDcBsC4HYBxBwDjTgDGXQCMuwEY9wAw7gVg3AfAuB+A8QAA40EAxkMAjIcBGI8AMB4FYDwGwDg5rfszTgFgnArAOA2AcToA4wwAxpkAjLMAGGcDMM4BYJwLwDgPgHE+AOMCAMaFAIyLABgXAzAuAWBcCsC4DIBxOQDjCgDGlQCMqwAYVwMwrgFgXAvAuA6AcT0A4wYAxo0AjJsAGDcDMG4BYNwKwLgNgHE7AOMOAMadAIy7ABh3AzDuAWDcC8C4D4BxPwDjAQDGgwCMhwAY62Zyf8Z6AIz1ARgbADA2BGBsBMDYGIAxFoCxCQBjUwDGZgCMzQEYWwAwtgRgbAXA2BqAsQ0AY1sAxnYAjO0BGDsAMHYEYOwEwNgZgLELAGNXAMZuAIzdARh7ADD2BGDsBcDYG4CxDwBjXwDGfgCM/QEYBwAwDgRgHATAOBiAcQgA41AAxmEAjMMBGEcAMI4EYBwFwDga4VxcVoBzcQCMsQCMTQAYmwIwNgNgbA7A2AKAsSUAYysAxtYAjG0AGNsCMLYDYGwPwNgBgLEjAGMnAMbOAIxdABi7AjB2A2DsDsDYA4CxJwBjLwDG3gCMfQAY+wIw9gNg7A/AOACAcSAA4yAAxsEAjEMAGIcCMA4DYBwOwDgCgHEkAOMoAMbRAIxjABjHAjD+AcA4DoDxTwDG8QCMfwEwTgBg/BuAcSIA4yQAxskAjFMAGKcCME4DYJwOwDgDgHEmAOMsAMbZAIxzABjnAjDOA2CcD8C4AIBxIQDjIgDGxQCMSwAYlwIwLgNgXA7AuAKAcSUA4yoAxtUAjGsAGNcCMK4DYFwPwLgBgHEjAOMmAMbNAIxbABi3AjBuA2DcDsC4A4BxJwDjLgDG3QCMewAY9wIw7gNg3A/AeACA8SAA4yEAxsMAjEcAGI8CMB4DYDwOwHgCgPEkAOMpAMbTAIxnABjPAjCeA2A8D8B4AYDxIgDjJQDGywCMVwAYrwIwXgNgvA7AeAOA8SYA4y0AxtsAjHcAGO8CMN4DYLwPwPgAgPEhAOMjAMbHAIxPABifAjA+A2B8DsD4AoDxJQDjKwBGSzb3Z/QCYJyY2f0ZJwEwTgZgnALAOBWAcRoA43QAxhkAjDMBGGcBMM4GYJwDwDgXgHEeAON8AMYFAIwLARgXATAuBmBcAsC4FIBxGQDjcgDGFQCMKwEYVwEwrgZgXAPAuBaAcR0A43oAxg0AjBsBGDcBMG4GYNwCwLgVgHEbAON2AMYdAIw7ARh3ATDuBmDcA8C4F4BxHwDjfgDGAwCMBwEYDwEwHgZgPALAeBSA8RgA43EAxhMAjCcBGE8BMJ4GYDwDwHgWgPEcAON5AMYLAIwXARgvATBeBmC8AsB4FYDxGgDjdQDGGwCMNwEYbwEw3gZgvAPAeBeA8R4A430AxgcAjA8BGB8BMD4GYHwCwPgUgPEZAONzAMYXAIwvARhfATBasrg/oxcAozcAYxIAxqQAjMkAGJMDMKYAYEwJwJgKgDE1AGMaAMa0AIzpABjTAzBmAGDMCMCYCYDxHQDGdwEYMwMwZgFgfA+A8X0Axg8AGD8EYPwIgPFjAMZPABizAjBmA2DMDsBoBWD0AWD0BWD0A2D0B2DMAcCYE4DxUwDGXACMuQEY8wAw5gVgzAfAmB+AsQAA42cAjDYARgWAMQCAMRCAMQiAMRiAMQSAMRSA0Q7AGAbAWBCA8XMAxkIAjF8AMBYGYCwCwFgUgLEYAGNxAMYvARhLADCWBGAsBcBYGoCxDABjWQDGcgCM5QEYKwAwVgRgrATAWBmAsQoAY1UAxmoAjNUBGGsAMH5lAqMZnHmTmMP578ObGLhljjd9BdpCgoKiQwOilUAl3BYQFmEPtgUFR4TYFbsSbA+OCrAHBkbbg+yhYRFhobYwJSgwWokJDguM0TprlYOOS10xSbQVpPZr/Y9xcJWdckxzW8zZCKg1exFqzgOi2ZtQc14QzUkINecD0ZyUUHP+BNJsc+2hFCAcv/LeGBPuZxYMThsIpwLCGQDCGQjCGQTCGQzCGQLCGQrCaQfhDAPhLAjC+TkIZyEQzi9AOAuDcBYB4SwKwlkMhLM4COeXIJwlQDhLgnCWAuEsDcJZBoSzLAhnORDO8iCcFUA4K4JwVgLhrAzCWQWEsyoIZzUQzuognDVAOL8C4fwahPMbEM5vQTi/A+H8HoTzBxDOH0E4fwLhrAnC+TMI5y8gnOEgnBEgnJEgnFEgnNEgnDEgnL+CcNYC4awNwvkbCOfvIJx1QDjrgnDWA+GsD8LZAISzIQhnIxDOxsSc5N+jTWKxBCah/y56LNeXq99FD0zi/mMYZMIYNiEcwyCAMQw2YQybEo5hMMAYhpgwhs0IxzDEpAskqTU3J+srMCAgievjFx2jPiJjeM3U208LC8ac2hKEsxUIZ2sQzjYgnG1BONuBcLYH4ewAwtkRhLMTCGdnEM4uIJxdQTi7gXB2B+HsAcLZE4SzFwhnbxDOPiCcfUE4+4Fw9gfhHADCORCEcxAI52AQziEgnENBOIeBcA4H4RwBwjkShHMUCOdoEM4xIJxjQTj/AOEcB8L5JwjneBDOv0A4J4Bw/g3CORGEcxII52QQzikgnFNBOKeBcE4H4ZwBwjkThHMWCOdsEM45IJxzQTjngXDOB+FcAMK5EIRzEQjnYhDOJSCcS0E4l4FwLgfhXAHCuRKEcxUI52oQzjUgnGtBONeZxOlNzLme68vV62NygVwfs4FQs08SjO1xowWDcxMI52YQzi0gnFtBOLeBcG4H4dwBwrkThHMXCOduEM49IJx7QTj3gXDuB+E8AMJ5EITzEAjnYRDOIyCcR0E4j4FwHgfhPAHCeRKE8xQI52kQzjMgnGdBOM+BcJ7n+lLCIgKDQiKjY8ICQ4KCg0PZvyNDoiLtSkRUSHhkRGBoRFSE3W6PjoiIio6MCAgJiLard1QKDA8Kjw6NiAjmOak/S71gofsstbI3xrq5aDGHU79uXB1PL0LNlxJIs821h3KZcPxa5sDYHq9YMDivgnBeA+G8DsJ5A4TzJgjnLRDO2yCcd0A474Jw3gPhvA/C+QCE8yEI5yMQzscgnE9AOJ+CcD4D4XwOwvkChPMlCOcrEE61QwROLxBObxDOJCCcSUE4k4FwJgfhTAHCmRKEMxUIZ2oQzjQgnGlBONOBcKYH4cwAwpkRhDMTCOc7IJzvgnBmBuHMAsL5Hgjn+yCcH4BwfgjC+REI58cgnJ+AcGYF4cwGwpkdhNMKwukDwukLwukHwukPwpkDhDMnCOenIJy5QDhzg3DmAeHMC8KZD4QzPwhnARDOz0A4bSCcCghnAAhnIAhnEAhnMAhnCAhnKAinHYQzDISzIAjn5yCchUA4vwDhLAzCWQSEsygIZzEQzuIgnF+CcJYA4SwJwlkKhLM0CGcZEM6yIJzlQDjLg3BWAOGsCMJZCYSzMghnFRDOqiCc1UA4q4Nw1gDh/AqE82sQzm9AOL8F4fwOhPN7EM4fQDh/BOH8CYSzJgjnzyCcv4BwhoNwRoBwRoJwRoFwRoNwxoBw/grCWQuEszYI528gnL+DcNYB4awLwlkPhLM+CGcDEM6GIJyNQDgbg3DGgnA2AeFsCsLZDISzOQhnCxDOliCcrUA4W4NwtgHhbAvC2Q6Esz0IZwcQzo4gnJ1AODuDcHYB4ewKwtkNhLM7CGcPEM6eIJy9QDh7g3D2AeHsC8LZD4SzPwjnABDOgSCcg0A4B4NwDgHhHArCOQyEczgI5wgQzpEgnKNAOEeDcI4B4RwLwvkHCOc4EM4/QTjHg3D+BcI5AYTzbxDOiSCck0A4J4NwTgHhnArCOQ2EczoI5wwQzpkgnLNAOGeDcM4B4ZwLwjkPhHM+COcCEM6FIJyLQDgXg3AuAeFcCsK5DIRzOQjnChDOlSCcq0A4V4NwrgHhXAvCuQ6Ecz0I5wYQzo0gnJtAODeDcG4xidNbxxloCwkKig4NiFYClXBbQFiEPdgWFBwRYlfsSrA9OCrAHhgYbQ+yh4ZFhIXawpSgwGglJjgsMEbrOyeh5q0JpNnm2kPZ5kU3fq1ymKM5KfF6/iGH631Fx6gPm/IjUV/quvgpB53GfLnde11EvwZVarquOUDTrPzsal9B/46f8gvhusjvvuvCxnEq4a5oDoijWYmQ78umGz8lknBdFHDDdRES8z+cSpScZrtAsxIt05ddOH5KDOG6+My91kWoAafyq7OaQw01K7Wc6ysgnvFTahOuC5u7rIvQeDmV395ec+R/aFZ+f9u+Qv9z/JQ6hOtCSfx1YXsLTqXu22i2vZVmpd5/9xX8luOn1CdcFwGJuS6C3ppTaRCv5qAYJzQrDePrK9Sp8VMaEa6LwMRZF3YnOZXGBprDYpzWrMSK+7JJjJ/ShHBdBCX0urBJcSpN/1ezIqlZaabvK0p6/JTmhOsiOOHWRaALnEoLus8HFMK/bxX+7zNX10VIAq0Lm2sPhfDvIIXQxys2wnURCrIuCP2eQuhXlEDCdWEHWReE85pCeFxWQgjXRRjIuthO9xm6QngsUAi3ZcWsdUF9nmAH4XmCvEkwzlvtJND8z3mCqJio+NaNq+O5gVDzLpBzirtBOPeAcO4F4dwHwrkfhPMACOdBEM5DIJyHQTiPgHAeBeE8BsJ5HITzBAjnSRDOUyCcp0E4z4BwngXhPAfCeR6E8wII50UQzksgnJdBOK+AcF4F4bwGwnkdhPMGCOdNEM5bIJy3QTjvgHDeBeG8B8J5H4TzAQjnQxDORyCcj0E4n4BwPgXhfAbC+RyE8wUI50sQzlcgnOqXGBA4vUA4vUE4k4BwJgXhTAbCmRyEMwUIZ0oQzlQgnKlBONOAcKYF4UwHwpkehDMDCGdGEM5MIJzvgHC+C8KZGYQzCwjneyCc74NwfgDC+SEI50cgnB+DcH4CwpkVhDMbCGd2EE4rCKcPCKcvCKcfCKc/CGcOEM6cIJyfmsTpreN09ZrVZISac4FoTk6oOTeI5hSEmvOAaE5JqDkviOZUhJrzgWhOTag5P4jmNISaC4BoTkuo+TMQzekINdtANKcn1KyAaM5AqDkARHNGQs2BIJozEWoOAtH8DqHmYBDN7xJqDgHRnJlQcyiI5iyEmu0gmt8j1BwGovl9Qs0FQTR/QKj5cxDNHxJqLgSi+SNCzV+AaP6YUHNhEM2fEGouAqI5K6HmoiCasxFqLgaiOTuh5uIgmq2Emr8E0exDqLkEiGZfQs0lQTT7EWouBaLZn1BzaRDNOQg1lyHUrN5DXf1OgFUTnJtFHhZ5WeRjkZ9FARafqe/FQmERoI4HiyAWwSxCWISysLMIY1GQxecsCrH4gkVhFkU0/cVYFGfxJYsSLEqyKMWiNIsyLMqyKMeiPIsKLCqyqMSiMosqLKqyqMaiOosaLL5i8TWLb1h8y+I7Ft+z+IHFjyx+YlGTxc8sfmERziKCRSQL9SbZ0SxiWPzKohaL2ix+Y/E7izos6rKox6I+iwYsGrJoxKIxi1gWTVg0ZdGMRXMWLVi0ZNGKRWsWbVi0ZdGORXsWHVh0ZNGJRWcWXVh0ZdGNRXcWPVj0ZNGLRW8WfVj0ZdGPRX8WA1gMZDGIxWAWQ1gMZTGMxXAWI1iMZDGKxWgWY1iMZfEHi3Es/mQxnsVfLCaw+JvFRBaTWExmMYXFVBbTWExnMYPFTBazWMxmMYfFXBbzWMxnsYDFQhaLWCxmsYTFUhbLWCxnsYLFSharWKxmsYbFWhbrWKxnod5LfCOLTSw2s9jCYiuLbSy2s9jBYieLXSx2s9jDYi+LfSz2szjA4iCLQywOszjC4iiLYyyOszjB4iSLUyxOszjD4iyLcyzOs7jA4iKLSywus7jC4iqLayyus7jB4iaLWyxus7jD4i6Leyzus3jA4iGLRywes3jC4imLZyyes3jB4iWLVyzUHc2LhTeLJCySskjGIjmLFCxSskjFIjWLNCzSskjHIj2LDCwyssjE4h0W77LIzCILi/dYvM/iAxYfsviIxccsPmGRlUU2FtlZWFn4sPBl4cfCn0UOFjlZfMoiF4vcLPKwyMsiH4v8LAqw+IyFjYXCIoBFIIsgFsEsQliEsrCzCGNRkMXnLAqx+IJFYRZF1OvMWRRjUZzFlyxKsCjJohSL0izKsCjLohyL8iwqsKjIohKLyiyqsKjKohqL6ixqsPiKxdcsvmHxLYvvWHzP4gcWP7L4iUVNFj+z+IVFOIsIFpEsolhEs4hh8SuLWixqs/iNxe8s6rCoy6Iei/osGrBoyKIRi8YsYlk0YdGURTMWzVm0YNGSRSsWrVm0YdGWRTsW7Vl0YNGRRScWnVl0YdGVRTcW3Vn0YNGTRS8WvVn0YdGXRT8W/VkMYDGQxSAWg1kMYTGUxTAWw1mMYDGSxSgWo1mMYTGWxR8sxrH4k8V4Fn+xmMDibxYTWUxiMZnFFBZTWUxjMZ3FDBYzWcxiMZvFHBZzWcxjMZ/FAhYLWSxisZjFEhZLWSxjsZzFChYrWaxisZrFGhZrWaxjof7evfpb8urvtKu/ga7+vrj6293qb1mrvxOt/h6H+jsQ6u8iqL8ToN6DX72/vXrvePW+7Oo9z9X7iav36lbvg63eY1q9f7N6b2T1vsPqPX3V++Wq96JV7/N6moV6f1L13p/qfTXVe1aq94NU77Wo3sdQvUegev899d526n3j1Huyqfc7U+8lpt6nS70Hlnp/KfXeTep9kdR7Dqn381HvlaPeh0a9x4t6/xT13iTqfT/Ue2qo96tQ7wWh3mdBNRXq/QHUa+/V69rVa8bV67HVa53V64jVa3TV61/Va0vV6zbVayLV6w3Va/nU6+TUa9DU67vUa6fU65LUa37U62nUa1XU60DUayzU6xfUawPU792r32lXvy+ufhdb/Z6zOser389Vv/uqfq9U/c6m+n1I9buG6vf41O+1qd/zUr/3pH4PSP1ejPo9EfV7E+r3CNTz6up5ZvW8q3oeUj0vp56nUs/bqOcx1M/11c+51c991c9B1c8F1c/J1M+N/vkchYX6d7b6d6f6d5j6d4nq01Xfqvo41dd4vz5M/vvbLrktbx7aEFqSaK+r3+lTv+OmfudL/Q6U+p0g9Tsy6ndG1O9QqN8pUM+xq+ec1XOw6jlJ9Rydes5KPYejntNQP+NXP/NWPwNWPxNVPyNUPzNTP0NSP1NRP2NQ/+a2svBh4ctC9eyqh1U9nfob7p+yyGX538ezpG+W3+HaP9Gew2Njo+s2iLXG1reGR0VZm9WOrWWt3zS6UUyd+qqd+Mc/OB6+2nPZerVja4fXqd0yPLZ2/XrWWuGNa1mj6kc3ttarH2utGx4bqZqYf5yF42HTV0Y3Ut+uUXTjxtbar+tia0VbI+vXi20UHhlrjYpuUKd+i2jV5Pwzezse/v/205T1EmVt0CSiTu1I6+/RLRpba9WuF2uNqf9vx2reagnFWyVq1NnM2Rp/iZogiZoQiZpSEjVlJGq+laj5XqLmN4maOhI1rSVq2krU9JWo6S9RM06iZrxEzVyJmvkSNeslajZK1ByUqDksUXNZouaqRM1TiZrnEjVpvZ2vSS9Rk02ixipRY5OoCZCoKS5RU0KipoZEzdcSNTESNbUkappL1LSUqOkpUdNboma0RM1YiZqZEjWzJWpWS9SslajZK1GzX6LmvETNRYmahxI1jyVqUiZxvia1RM27EjWfSNT4czU+/1tTt0md2NoN6rT438I8Em/WVKKmuURNd4manhI1IyVqRkvUTJeomSlRs1KiZrVEzW6Jmr0SNWclas5L1NyXqHkoUZM8qfM1KSVqPpCo+UiiJo9ETT6JmkISNYUlaipJ1FSRqPlFoiZCoqaRRE2sRE1niZquEjVDJWqGS9RMlqiZKlGzVKJmuUTNdomanRI1JyVqTkvU3JaouStR453M+ZqkEjWZJWrek6jJKVGTS6LGLlFTUKKmnERNBYmaHyVqakrU/CpR00CipjlX49QfDW0l3myrRM12iZrjEjUnJWpuStTclqj55ySdkzXeEjXvSNRklqjxl6jJKVETIlFjl6gpI1FTTqLme4maHyVq6kjU1JOoaStR016ipr9EzUCJmvESNRMkauZL1CyUqNkoUbNZouawRM1RiZqrEjXXJWqeS9S8lKhJn8L5mowSNVaJGl+JmgCJmiCJmhISNaUkar6WqPlWoqaWRM1vEjUtJWpaS9T0lqjpK1EzVqJmnETNbImauRI1yyRq1kvUbOdqnPqjYa/Em13navJpz1+G11O/dtU4utHrL2RZG9RXv0AVHmutXS+mdr3asS2s4Y2tES1ioxur3723hKZ0/n3DJGrKStSUl6j5QaLmJ4mauhI19SVq2knUdJCoGSBRM0ii5i+Jmr8lahZI1CySqNkkUbNFouaIRM0xiZprEjU3JGpeSNS8kqjJkMr5mkwSNT4SNX4SNYESNcESNSUlakpL1HwjUfOdRE1tiZrfJWpaSdS0kajpI1HTT6LmD4maPyVq5kjUzJOoWSdRs0Gi5oBEzSGJmksSNVckap5I1DyTqEmT2vmadBI1WSVqskvU5JKoUSRqwrgap/7wKCLxZmW5mo+158jwOnX+KWjM/vaI/bluePOfI2rH/tyY/Q2ivlze+ZKKzpdUdr6kuvMlXzlfUtP5kl+cL4l2vuRX50t+d76krvMlTZ0vae58SUvnS1o7X9LW+ZL2zpd0cb6km/MlvSSOF4NlD07DZQtHS1B+nM75mqwSNfklaj6TqCkiUVNMoqaqRE11iZpIiZpoiZomEjXNJGq6SdT0kKgZIVEzSqJmmkTNDImaFRI1qyRqdknU7JGoOSNRc06i5p5EzQOJmmTpna9JIVHzvkTNhxI1uSVq8krUfC5R84VETUWJmsoSNT9L1IRL1DSUqGksUdNJoqaLRM0QiZphEjWTJGqmSNQskahZJlGzTaJmh0TNCYmaUxI1tyRq7kjUeGVwviaJRE1aiZosEjVZuRqn/mjwk3gzhauRPQfbWuJ920rU9JWo6S9RM06iZrxEzVyJmvkSNeslajZK1ByUqDksUXNZouaqRM1TiZrnMgeWjM7XpJeoySZRY5WosUnUBEjUFJeoKSFRU0Oi5muJmhiJmloSNc0lalpK1PSUqOktUTNaomasRM1MiZrZEjWrJWrWStTslajZL1FzXqLmokTNQ4maxxI1KTM5X5NaouYjiZpPJGrySdQUkKgpLFFTVKKmikRNNYmaCImaKImauhI1TSVq2nI1Tv3h0VnizfpyNW956qa/8yUDnS8Z7HzJcOdLRjpf8pfzJX87XzLV+ZLpzpfMdr5krvMly5wvWeF8ySrnS9Y4X7LO+ZINzpdsdb5ku/MluyWOF4dlD07HZQtPS1AWzOx8TSGJmgoSNZUkampK1PwiUdNAoqaRRE1HiZrOEjWDJWqGStRMlKiZLFGzWKJmqUTNVoma7RI1xyVqTkrU3JSouS1R888Nm52s8ZaoeUeiJrNEjb9ETU6JmhCJGrtETRmJmnISNd9L1PwoUVNHoqaeRE1biZr2EjX9JWoGStSMl6iZIFEzX6JmoUTNRomazRI1hyVqjkrUXJWouS5R81yi5qVETfr3nK/JKFFjlajxlajJK1ETJFFTiKtx6o+G4hJvVoWrkT0HO0rifcdI1MyQqJklUbNKomaNRM0eiZp9EjXnJGouSNQ8kKh5JFGT4n3na1JJ1HwoUfOxRE1eiZr8EjVfSNQUkaipLFFTVaImXKImUqKmsURNE4maLhI13SRqhknUjJComSJRM02iZplEzQqJmh0SNbskak5J1JyRqLkjUXNPoibJB87XJJOoySJR875EzacSNbklasIkaj6XqCkvUVNRouYniZqfJWrqS9Q0lKjpIFHTSaKmt0TNEImaMVyNU394/CXxZjO4mrc8dTPL+ZI5zpfMc75kkfMlS5wvWet8yXrnS7Y4X7LN+ZJdzpfscb7kqPMlx50vOel8yWnnS846X3Le+ZIrzpdcc77klsTx4pHswemZbOErCcp3PnZ6MN51vuQD50s+cr4k6mPn9cdI1DSVqGkuUdNdoqanRM1IiZrREjXTJWpmStSslKhZLVGzW6Jmr0TNWYma8xI19yVqHkrUJP/E+ZqUEjUfSNR8JFGTR6Imn0RNIYmawhI1lSRqqkjU/CJREyFR00iiJlaiprNETVeJmqESNcMlaiZL1EyVqFkqUbNcoma7RM1OiZqTEjWnJWpuS9Tclajxzup8TVKJmswSNe9J1OSUqMklUWOXqCkoUVNOoqaCRM1XEjU1JWpiuBqn/gCqI/FmiyVqlkrUbJWo2S5Rc1yi5qREzU2JmtsSNZZsztd4S9S8I1GTWaLGX6Imp0RNiESNXaKmjERNOYma7yVqfpSoqSNRU0+ipq1ETXuJmv4SNQMlasZL1EyQqJkvUbNQomajRM1miZrDEjVHJWquStRcl6h5LlHzUqImfXbnazJK1FglanwlagIkaoIkakpI1JSSqPlaouZbiZpaEjW/SdS0lKhpLVHTW6Kmr0TNWImacRI1UyRq5krULOVqnPqjYbXEm6W1Ol+TXqImm0SNVaLGJlETIFFTXKKmhERNDYmaryVqYiRqaknUNJeoaSlR01OiprdEzWiJmrESNTMlamZL1KyWqFkrUbNXoma/RM15iZqLEjUPJWoeS9Sk9HG+JrVEzUcSNZ9I1OSTqCkgUVNYoqaoRE0ViZpqEjUREjVREjWxEjVNJWq6StR0l6gZLlEzUqJmqkTNdIma5RI1KyVqdkrU7JaoOS1Rc1ai5q5EzX2JmhcSNcl9na9Jz9U49UdDZok3e5+rkb1yLULifaMkamIlappK1HSVqOkuUTNcomakRM1UiZrpEjXLJWpWStTslKjZLVFzWqLmrETNXYma+xI1Sf2cr0kuUfOeRM0HEjW5JGrySNQUlKgpJFFTQaKmkkRNTYmaXyRqGkjUNJKo6ShR01miZrBEzVCJmokSNZMlahZL1CyVqNkqUbNdoua4RM1JiZqbEjW3JWos/s7XeEvUvCNRk1mixl+iJqdETYhEjV2ipoxETTmJmuoSNT9K1ERxNU794fGbxJvFcjVv+4N8zpc0d76kpfMlbZ0vae98SQ/nS3o5X9Lf+ZKBzpcMdb5kuPMlfzpf8pfzJX87XzLJ+ZIpzpdMc75ktvMlc50vWShxvFgpe3BaK1u4UYKyYA7nawpJ1FSQqKkkUVNTouYXiZoGEjWNJGo6StR0lqgZLFEzVKJmokTNZImaxRI1SyVqtkrUbJeoOS5Rc1Ki5qZEzW2JGktO52u8JWrekajJLFHjL1GTU6ImRKLGLlFTRqKmnETN9xI1P0rU1JGoqSdR01aipr1ETX+JmoESNeMlaiZI1MyXqFkoUbNRomazRM1hiZqjEjVXJWquS9Q8l6h5KVGT/lPnazJK1FglanwlavJK1ARJ1BTiapy7e6jEm5XmamTPwQ6UeN/BEjUTJGomStQslKhZLFGzWaJmq0TNUYma4xI11yVqbkrUvJSoseRyviajRM07EjW+EjX+EjVBEjUhEjWlJGrKSNR8K1HzvUTNbxI1dSRqWkvUtJWo6StR01+iZpxEzXiJmrkSNfMlatZL1GyUqDkoUXNYouayRM1ViZqnEjXPJWrS5na+Jr1ETTaJGqtEjU2iJkCiprhETQmJmhoSNV9L1MRI1NSSqGkuUdNSoqaTRE1viZrBXI1Tf3iMlHizCVzNW566meh8yWTnS6Y6XzLT+ZLZzpcscb5kmfMlq50vWet8yUbnSzY7X7LH+ZJ9zpcccL7kkPMlR5wvOeZ8yWnnS846X3JR4nhxU/bgdFe28KEE5eFA52uOOVnjxV5/V8vj/hK2pNeeq8eGR/7OKutbo6KjG6jZXbRX6r1V9hodS/zZ65zK3uBU9mbtlbxvlb1be8X2VtkHUrx+JcNbZR9M4Qx3qdSvX/nYqewSXLZgQ23cJCK2UXhk7P9uDI4OyrjaQQWugw+152KNGoW3YB/8RUU3t9ZvEmutH2ONqN+kXlRjvrC6bGEEV/i2236V1HHz4x/d77VsP6eyK8gOpaODKq52UMPi5JA6Cn+QLfyNK3zbdRHu1OiGuzq64a6Obrjs6IbLjm64C6Nby6ktvZFT66KRq+uikavropHsumgkuy4aubAuOjg1uh1cHd0Oro5uB9nR7SA7uh1cGN0TWm2MC7WNZYfK0UE3F968l7Oj5SgcKFs4xgXaCVyt8UZcJM3rV/o6i+goHCGB6Kgd91aIq7TsDlz2W5t8voOxEqiO2vHOjo+jcIps4QIXaJfLvukmF950J1drvDZ7ZXr9ysdOZUv7ZkcHZVztwGnf7CisLlso45uHZIqbH//o/qFl+zmVLT3fOTqo4moHTs93jsIfZAtl5ruJTo3uRFdHd6KroztRdnQnyo7uRBdGd4ZTW/oip9bFIlfXxSJX18Ui2XWxSHZdLHJhXWx0anQ3ujq6G10d3Y2yo7tRdnQ3ujC6yd55nRfjQq20b3Z0IOObHbVO+2ZH4UDZQhnf7Kh9O9/8q5bttG92FMr4ZkftuLdCvKRld+CynfLNjg5kfLOj1mnf7CicIlso45sdtU77ZkehjG921L6db56q/c7Zx05lS/tmRwdlXO3Aad/sKKwuWyjjm+d/EDc//tFdqWX7OZUtPd85OqjiagdOz3eOwh9kC2Xmuw1Oje4GV0d3g6uju0F2dDfIju4GF0Z3u1Nb+kGn1sVBV9fFQVfXxUHZdXFQdl0cdGFdXHBqdC+4OroXXB3dC7Kje0F2dC+4MLr+2jvEuFAr7ZsdHcj4Zket077ZUThQtlDGNztq3843d9WynfbNjkIZ3+yoHfdWiMk/ev1KBy7bKd/s6EDGNztqnfbNjsIpsoUyvtlR67RvdhTK+GZH7dv55kwfx+09/uwsWrafU9nSR2RHB1Vc7cDpI7Kj8AfZQpkjckPtjhdv9zeMI1v6bxhHB2Vc7cDpv2EchdVlC2X+hmnlHzc//tHtomX7OZUtvaU7OqjiagdOb+mOwh9kC2W29N5OjW5vV0e3t6uj21t2dHvLjm5vF0Z3kFNb+hin1sUYV9fFGFfXxRjZdTFGdl2McWFdTHdqdKe7OrrTXR3d6bKjO112dKe7MLp/at9PfrsZ05EtPWM6OijjagdOz5iOwuqyhTIz5rTccfPjH90FWrafU9nSW7qjgyquduD0lu4o/EG2UGZLX+7U6C53dXSXuzq6y2VHd7ns6C53YXTXObWl73BqXexwdV3scHVd7JBdFztk18UOF9bFcadG97iro3vc1dE9Lju6x2VH97gLo/txntd5Jb3la6t5Sw6Vo4MYF978N28nR8tR2FC2sLULtJ24WuONuKYLK6WmqyulpgsrpabsSqkpu1JqurBSajq1UgbklV8pjlrpleLoIMaFN3d6pTgKG8oWtnaB9u1Wyvp88ivFUSu9UhwdxLjw5k6vFEdhQ9nC1i7Qvt1KeZTfIr1SHLXSK8XRQYwLb+70SnEUNpQtbO0C7dutlDyfWaRXiqNWeqU4Oohx4c2dXimOwoayha1doH27lfKTTX6lOGqlV4qjgxgX3tzpleIobChb2NoF2rdbKf0Vi/RKcdRKrxRHBzEuvLnTK8VR2FC2sLULtG+3UtYFvH7F6RPhjsIRFucRHbXjLG+DWEK7aUEHLluw7o1PhDs6kDkR7qgd7+z4OAqnyBbKnAh31C6XfVOZE+GO2rc7EX5Ey87zn5vnv/dLcNwcI5X27KhUu0vCoqj2b5trDyUV1y91/3ZbcFAqS9wHMX9gKq1PM8fH0acJ/du0G19Yvmz/pn+9FvWRTvu3FzeWjpqULDJyNXwfFq0Pfa3jdTP12W1BQY7+k5rQP1s9tnQOje3/d/wcryVtH/e9+deSca85GNXxdBxB1DvBlNByMnKv+3P96MfbKwHGlmlXvHTvZ9G9l0X3/qkt5u4rXrr3c/Dox8exnNby5k47v0bHflm/3j9Gpmy9xrHh9SKjeQl8txkFEvkhEOXo8/T56QSvOzDVa2wdh7EU7d+8TnkYcLxvSq3/ZJY3eh3v+U+7tuyty9cvJ9O1+XG61EcqLtfxPkm4Nsd7Oqaj5Nxrjtr4+koq6CujID+5rq8Ugr74Nofu5Cy076LFWT9Juf6o1k+o/c36cYwRv374R1LudT7fcbvNdyzih6qhgbYMPuUrnik//gfVlP8el6c+SnD9eeleKyl4L8drpdqL31t9lOZeS6p7rQz3WjLda2W515LrXivHvZZC91p57rWUutcqcK+l0r1WkXstte61StxraXSvVeZeS6t7rQr3mqONtwOONpXzd642ceyALfr/BzuQTVtmdqBKk4g6tSPLR7doXKxeVJXwRrG1w+sUi4pqFN24sZEzSCdQK5rpLZa3dwapBK9Tz/z83vVfo+TITybIT6rLUR8ZLP+71SVLGG1KfKzxaUsuyE8WjzZed/KE0RYQH2t82lII8pPHo43XnSKeOj6Pz/ESjA3/umhc9Ucsk8YwML4xiW8MUwryUwh0ZBCMU8qE0RYUH2t82lIJ8lPGo43XnSphtAXHxxqfttSC/FTxaON1p46njs/jc7wEY8O/LhrXBNr2Q+Ibk/jGMI0gP7VARwbBOKVJGG2h8bHGpy2tID9NPNp43WkTRps9Ptb4tKUT5KeNRxuvO108dXwen+MlGBv+ddG4JtC2HxbfmMQ3hukF+ekEOjIIxil9wmgLj481Pm0ZBPnp49HG686QMNoi4mONT1tGQX6GeLTxujPGU8fn8TlegrHhXxeNawJt+5HxjUl8Y5hJkJ9RoCODYJwctfq/TtXlpLrXRF46ne7f/NyZTvdv/ricTvdvfp9MZzHeR0Wfxuo/FRH9PZNO9291OYXuNZFfSqf7N398TKf7N7/vpbMY74sIn0rW1/4d36eSjr/IsT+VDArxfCoZ/4PqU0n9J2wluP68dK+VFLwX/wnbv2c5LG9OyCURjAO/zSS1/O/xlM+3CNq8BP3oT5DyeotqzzbnHoq+gWf+L22iv9eTGugWHRstgjYvQT9JdLlJ43l/L4N+vePR8V+1/NjHN18hHF+zav+O7/iaX1sGP76GJ9TxNbk5/Yc6+k9hTv/C4yuvhf9sT304zqDwyw6m+I7BojMQJbTXTP6yR7DJYxio96EWy//69pTmvHeQl+79LLpxtOjeP7XF1O3138/WRZ8v8uOjP9vHf1Emie61pO3/V4foizKO9cvPyyJfrv/7gT/H4Th7qPfs6sOxvfNftFF9gePMoePh+VbGm9fc8VsZ6vpzfPPBsb2KzkHwcyp/NtDxd2u9+rG1Y1p82Sg6PDY6qlL92Gi9eeAPOPwjmS5PX2d04snIBDn+nUzQvyWe99L3yeep7QhmRrtsJ14zo33HGd3MhCWUmTHpj7kAc791KTYzvBb9h0rOGhX1wMF/GKQ++D8WvXSv8V9h0U94pQWMoq+wOJjf5d6L/0Zofp0m/TFCfZg87sFva0Ic75/aYup2puj/gHTwxHdQf19b/jU6tnx0i6/D69SOCo+tXb9eteiGTaIbx/Iy+K6TCmTqD7FJdW8nyuM3EW+L+JGY3/kQDZsj39nvfPD17vCdj/i0oX/nIz5tnu98/PuI9zsf8Y0hxXc+3ubcAa/7bT6Hiu+8CYKt066ci9fWOXw4uK1LsIuRzJo3TD7HILR1ov0hpeV/v4ErqnlX1+6odZzzU58dNo/ZgWrh9aLq1y1VO7pOlCNbRBHfA2GPc/zFHd8e5zgz5znrFu/D84eU5b//kNKfkSvJvRe/p/LtjlrtHvAmf3c94N8jWzJT+reFiD45tujGVuQmRN9u0LuCVDpmi0V8nNIfI3i9av9ZuX71eXpWfnvUf8OB35eRzpY5rr2O77go2ibNOiOk3y74h2i7iG+OEq17B7faRzTXrz5P/578PpLSTcfCW8Bvxlh4CcYivmtwROtItM/qz/4n1+UU1Z5tLj4yWv53vPRnTVIQ6Mho+d9jXPJ4NFJ7DP32YTGh/1Tm8NtEx1zHe6ljZufa+dccxz+Rf3C8zud/wfX5ubacwWIxdOFpLOJveTvWseNbGKkF3Pz7O14vxr3/zwaavCwW4bdM9J9mpOb6En1ykcSAoaT2bDQHeAk0JREw6j8VSyPgEa3PZLr8sv/Bk0qXT+2LHPxpOb4kgjFIo+N35Ff8D379+Fgs//spkfrQfxrzX98od7CJtk/9N/X5b4CaMXb/nsG2iMeOH1s+33HT1f8aO9FYiI7Beh4+nx8D/diJvnmq3w+SWsT7ahqOweh91Id+u3HcN1Z0LEitqzF6T9Hcllr3Gj8fpYznPUVX74g+cYvv+BPf/u7Ij9Sejdb5284FIp9qyt/wypv5KeFPSAW89S1I3PWEVCYtvCziOZbvy+ooju/r6erG30xb9nx4E+/D8+GNxdwPb6xcnzxPMovxBp9Ml+v49Qv14Ka/zMisezq56x/2og989B8GpRaMt5fgff7rj+AcXL/6PD2r6AOB+E51qe/DX9ah3xbUR1Ht2ebaQxFxeAk4/uuY6u4fXjm+pvhfH15ZtX////ThVV2uX32e/j3/f//wypmx8BKMhefDq//V4fnwSv7xX3+wFOXa+dec/fCqJNfnl9pyQn54VZZ7/18NNHlZzP3w6m0/bEmoD6+q/gePu3949dV/8OvHx2LxfHjlyP9Re/6/+OFVpPYsOhYkxIdXRscf9WHmh1e/a8+yH14V1ZZFPtXz4dX/kQ+vlmnL2B9ehYcm1IdXJm2cgSZ/I0b44RWv5d8/cHV5+hp++ynB5ZQwyCnJ5ZQ0yCnF5ZQyyCnN5ZQ2yCnD5ZQxyDG6zpbP4a87LGeQU57LKW+QU4HLqWCQU5HLqWiQU4nLqWSQU5nLqWyQU4XLqWKQU5XLqWqQU43LqWaQU53LqW6QU4PLqWGQ8xWX85VBztdcztcGOd9wOd8Y5HzL5XxrkPMdl/OdQc73XM73Bjk/cDk/GOT8yOX8aJDzE5fzk0FOTS6npkHOz1zOzwY5v3A5vxjkhHM54QY5EVxOhEFOJJcTaZATxeVEcTlJuJxoLidalyP6MJTwhIrJx/QARXSdtd5MmfNBSUCAl+79LBaxmXK8f2qLmfPnGzMluv6FHx/+A/x/ctq/4fHSvZa0/f/qEF0fz3+rsxiXp9+29CeI+A/9otrHfY03gI7tVu2/giUuL58X3x90ZvoXuy0kxNxtPcjm7P0M9Hcvf5v1pT4mcnmOsVNPuMVo7cW48VQfKdqbodf8exGUt7zh/kcPl+t4H7R7ERTXlh0nX/7U/q0/GRGH1WLmcTLorf/o1B8nTfo7IN7jpOhDNNE9XrzoeGyiD9wpjxteuv55vSkF4y866Wv0gQ3/IR2fn5IbQz6fX3bU822OD/EyCvrUj7/oQya+jd8vvtaWRddK6q8NFW0XovvLZBTUG90/0vG66NnxPvo2/fuImM2ecxxjEt+1q6Ix5D8cFOU7+kumy3d8kPhfH+Km5Ood/XsL+hftu5RzlJ6/Lqdb/wsZos8a1LyWTmpLYjB2Tbk+Gxj06fUffer3LaP1p//yjCM/Vnv+rw9kRSfF1fdqHk9einjy/mtsTf5sSdH7WT1vG65dv/2L1of+i0uO/E5cn+21ZdFJR/1xSNQ3f0JSdKI5vnlDtC287baTUqfNkd9de/6vk3f6k4lFtX/bXHoE/OsL+JNzonlSf0LFkd/7P/j1c6fFEv/fK3oePp8fAwfb29z/3pyxezNPiMZOdEJJP3aDtOf4jhv/6G//pi/+GK8+krY3RZuiju9EjkO/TyTj3tdo/fL5zq5fvQ/gTzCm0vUV3++KiOZp0b4qOobp91XHj+warS+RZzH6wo/RsdLdvwD3tyX+MXAcX//R1f5NO78Nqw/H33KO+9nq8/m5ls+f6shlMV1b1v+tz7+fmrc0njwvg+d/+hC0JdVqHeuJ/xvYjM8BUrd/Mw5JdO/J83jr8vXLyXRti3Xa0rT/X9385wCO93SsW/4zBkdtfH0lE/SVUZCfUteX6DMFvo3/e2eWtpxa957UvoffptTtfZGDS8dE/b7mnkuNDMa+ECBIcZcLATznUj3nUi26ZX2O51xq3GV9judcatxlfY7Z51L5nGguJ9ogJ4bLiTHI+ZXL+dUgpxaXU8sgpzaXU9sg5zcu5zeDnN+5nN8NcupwOXUMcupyOXUNcupxOfUMcupzOfUNchpwOQ0MchpyOQ0NchpxOY0MchpzOY0NcmK5nFiDnCZcThODnKZcTlODnGZcTjODnOZcTnODnBZcTguDnJZcTkuDnFZcTiuDnNZcTmuDnDZcThuDnLZcTluDnHZcTjuDnPZcTnuDnA5cTgeDnI5cTkeDnE5cTicuR309ob6DYY4XDHqrL7SadH7irc8t/vs3n46Vlsf5e8E6+x2MZLrXknGv8bdursnlibYt/jX+OxiObVPto7YlLlMSgSYvgSZzv2dhD0L9nkVNXd56Lo//nkVnrb2Y5c14qo8U7c3Qa/73LGpZ3nD/o4fLFX2+4nhPd/6eheNuHY7vWYzR/h3f9yze5ljFv4/o/LIjT3Qe20u37Ox5bL4+YS42DPz3d1H/63xYco5Zz8N/5p1M97rjPKH67ybacnwXaIvOJ/LrvbNuXEw6r6yY/Z0Q0UWYXnT8tnSC9cSPo/58KP8ZdxJBrf6coSO/J9dne205vnvBi9a9t+61pIL35de9qH8vAz1elv/dni2W+Pc9Pc/bzN08dxrL290P35yLIIPivQiSX6dGF0H2056dORfIew/1kbS9Kdr+ORc4nuNQ+4/zfSbufXmNFsv/ntuzWJy/UNMxfhl1+aJ92VvQl+i4qWc1ughY/50PR/5I7fm/zgXy85j+93L/6zjh7ucC/7TEPwZmnwt0nJ9Wx2yytvxf5wIXxpPnrGdJqtWinwucr9P2/8O5wGnackKcC3RsU+r2/tjBpWMywys5+qXuPyHPBZr0+UyA57rKuMv6nNJcTmmDHM+5wLjL+hzPucC4y/ocz7nAuMv6HM+5wLjL+hzPucC4y/ocz7nAuMv6HM+5wLjL+hx3ORfoyOnM5XTW5WBfsx1kS7xrtuWvRfz//Zrtn7k8/bYV3zXbju1XdA64c/s3/f9micsr+myKXyf6c4n8OqLb1u3BCXFu/B+N7d/0r1+XSdvHfW/+NX598ed3HetLPV/YRcspyo2Z+kjR3gxN5p8v5M87/6OHyxV9BuN4T3c+X/iLtuw4X7hN+7fnfKEzj0A79rXYNuW/zi821ekSnRcT3UhPf15sMddnC926MWkus3vp1o23AXMSHY8516S9+c3pf88dWP73HAzPo7/GqaMl7rpwnGtJwvWTQtCPIz+N4H358zX6azzT6N7X6FxCEsH78efATT03zd3AkP9cVO/fTFqnYW/r3xzvn1rHapZ/E13zJ7oXAX8DQ9H64/v695pBc0/Y2uwik8KfoFMfSbnX0nCAu3WMZhg19SE64e14L/UgN4Br1+/USQS1+p3PkT+S63OwthzfyfQMFvHOL2LxsvzvzmuxxD+x8oZQ/5qjLo0Bh94I/NePsutPRv/XXaH1F4c68v/QnhPnLsxvJiLRFxB4jUZfQPjrP/j1B3iLJf6dXs/D5/Nj4Mh3rEvRXY/NvQtzULx3YU4h4NHfhdlxUaozX97gDYH6SNreFG3/fHnjHMehX4fJuPf9r/WlPvTrN50gn19PjvHLqMvn17XIxKfRvU8SwfvwLPpfueAvrhbl6w2QI99xMve/bubxX8fkt/kyUmLcmIA3pUY3JljxFmOgPhLry0j67TnOLwZw78trtFje7nj1XzcmcIyf6MYE+j/QRB/4iL5oF9/cI/qjST/3bNaenfkykmMM3vaPM3f/MtIuS/xjwP+6UHITNLDHvzfHdGyD/IfbDm7+/R37Ef/BkCPPXb5U5NDi7JeKzlrecPMa+eMlr9tbl+/sl5D4D8De5ktIfF8pdX2lcKGv+L7QlMLJvlLG05f+gzlnvhy139Gfxdwv6F3i3vOKtvxfX9B7FE+el8HzP30I2pJqtehf0Hug0/b/wxf0rmvLCfEFPcc2pW7vIzUI6C/oBdgT7Fc7TfngNMDm+YKeblmfU5rLKW2Q4/mCXtxlfY7nC3pxl/U5ni/oxV3W53i+oBd3WZ/j+YJe3GV9jucLenGX9TmeL+jFXdbnuMMX9PiczlxOZ4OcLlxOF4OcrlxOV4OcblxON4Oc7lxOd4OcHlxOD4OcnlxOT4OcXlxOL4Oc3lxOb4OcPlxOH4OcvlxOX4OcflxOP4Oc/lxOf4OcAVzOAIOcgVzOQIOcQVzOIIOcwVzOYIOcIVzOEIOcoVzOUIOcYVzOMIOc4VzOcIOcEVzOCIOckVzOSIOcUVzOKIOc0VzOaIOcMVzOGIOcsVzOWIOcP7icPwxyxnE54wxy/uRy/jTIGc/ljDfI+YvL+csgZwKXM8Eg528u52+DnIlczkSDnElcziSDnMlczmSDnClczhSDnKlczlSDnGlczjSDnOlcznSDnBlczgyDnJlczkyDnFlcziyDnNlczmyDnDlczhyDnLlczlyDnHlczjyDnPlcznyDnAVczgKDnIVczkKDnEVcziKDnMVczmKDnCVczhKDnKVczlKDnGVczjKDnOVcznKDnBVczgqDnJVczkqDnFVcziqDnNVczmqDnDVczhqDnLVczlqDnHVczjqDnPVcznqDnA1czgaDnI1czkaDnE1cziaDnM1czmaDnC1czhaDnK1czlaDnG1czjaDnO1cznaDnB1czg6DnJ1czk6DnF1czi6DnN1czm6DnD1czh6DnL1czl6DnH1czj6DnP1czn6DnANczgGDnINczkGDnENcziGDnMNczmGDnCNczhGDnKNczlGDnGNczjGDnONcznGDnBNczgmDnJNczkmDnFNczimDnNNczmmDnDNczhmDnLNczlmDnHNczjmDnPNcznmDnAtczgWDnItczkWDnEtcziWDnMtczmWDnCtczhWDnKtczlWDnGtczjWDnOtcznWDnBtczg2DnJtczk2DnFtczi2DnNtczm2DnDtczh2DnLtczl2DnHtczj2DnPtczn2DnAdczgODnIdczkODnEdcziODnMdczmODnCdczhODnKdczlODnGdczjODnOdcznODnBdczguDnJdczkuDnFdcziuDHEuHNzmOZX2OF5fjZZDjzeV4G+Qk4XKSGOQk5XKSGuQk43KSGeQk53KSG+Sk4HJSGOSk5HJSGuSk4nJSGeSk5nJSG+Sk4XLSGOSk5XLSGuSk43LSGeSk53LSG+Rk4HIyGORk5HIyGuRk4nIyGeS8w+W8Y5DzLpfzrkFOZi4ns0FOFi4ni0HOe1zOewY573M57xvkfMDlfGCQ8yGX86FBzkdczkcGOR9zOR8b5HzC5XxikJOVy8lqkJONy8lmkJOdy8lukGPlcqwGOT5cjo9Bji+X42uQ48fl+Bnk+HM5/gY5ObicHAY5ObmcnAY5n3I5nxrk5OJychnk5OZychvk5OFy8hjk5OVy8hrk5ONy8hnk5Ody8hvkFOByChjkfMblfGaQY+NybAY5CpejGOQEcDkBBjmBXE6gQU4QlxNkkBPM5QQb5IRwOSEGOaFcTqhBjp3LsRvkhHE5YQY5BbmcggY5n3M5nxvkFOJyChnkfMHlfGGQU5jLKWyQU4TLKWKQU5TLKWqQU4zLKWaQU5zLKW6Q8yWX86VBTgkup4RBTkkup6RBTikup5RBTmkup7RBThkup4xBTlkup6xBTjkup5xBTnkup7xBTgUup4JBTkUup6JBTiUup5JBTmUup7JBThUup4pBTlUup6pBTjUup5pBTnUup7pBTg0up4ZBzldczlcGOV9zOV8b5HzD5XxjkPMtl/OtQc53XM53BjnfcznfG+T8wOX8YJDzI5fzo0HOT1zOTwY5NbmcmgY5P3M5Pxvk/MLl/GKQE87lhBvkRHA5EQY5kVxOpEFOFJcTZZATzeVEG+TEcDkxBjm/cjm/GuTU4nJqGeTU5nJqG+T8xuX8ZpDzO5fzu0FOHS6njkFOXS6nrkFOPS6nnkFOfS6nvkFOAy6ngUFOQy6noUFOIy6nkUFOYy6nsUFOLJcTa5DThMtpYpDTlMtpapDTjMtpZpDTnMtpbpDTgstpYZDTkstpaZDTistpZZDTmstpbZDThstpY5DTlstpa5DTjstpZ5DTnstpb5DTgcvpYJDTkcvpaJDTicvpZJDTmcvpbJDThcvpYpDTlcvpapDTjcvpZpDTncvpbpDTg8vpYZDTk8vpaZDTi8vpZZDTm8vpbZDTh8vpY5DTl8vpa5DTj8vpZ5DTn8vpb5AzgMsZYJAzkMsZaJAziMsZZJAzmMsZbJAzhMsZYpAzlMsZapAzjMsZZpAznMsZbpAzgssZYZAzkssZaZAzissZZZAzmssZbZAzhssZY5AzlssZa5DzB5fzh0HOOC5nnEHOn1zOnwY547mc8QY5f3E5fxnkTOByJhjk/M3l/G2QM5HLmWiQM4nLmWSQM5nLmWyQM4XLmWKQM5XLmWqQM43LmWaQM53LmW6QM4PLmWGQM5PLmWmQM4vLmWWQM5vLmW2QM4fLmWOQM5fLmWuQM4/LmWeQM5/LmW+Qs4DLWWCQs5DLWWiQs4jLWWSQs5jLWWyQs4TLWWKQs5TLWWqQs4zLWWaQs5zLWW6Qs4LLWWGQs5LLWWmQs4rLWWWQs5rLWW2Qs4bLWWOQs5bLWWuQs47LWWeQs57LWW+Qs4HL2WCQs5HL2WiQs4nL2WSQs5nL2WyQs4XL2WKQs5XL2WqQs43L2WaQs53L2W6Qs4PL2WGQs5PL2WmQs4vL2WWQs5vL2W2Qs4fL2WOQs5fL2WuQs4/L2WeQs5/L2W+Qc4DLOWCQc5DLOWiQc4jLOWSQc5jLOWyQc4TLOWKQc5TLOWqQc4zLOWaQc5zLOW6Qc4LLOWGQc5LLOWmQc4rLOWWQc5rLOW2Qc4bLOWOQc5bLOWuQc47LOWeQc57LOW+Qc4HLuWCQc5HLuWiQc4nLuWSQc5nLuWyQc4XLuWKQc5XLuWqQc43LuWaQc53LuW6Qc4PLuWGQc5PLuWmQc4vLuWWQc5vLuW2Qc4fLuWOQc5fLuWuQc4/LuWeQc5/LuW+Q84DLeWCQ85DLeWiQ84jLeWSQ85jLeWyQ84TLeWKQ85TLeWqQ84zL+X/t3ctvE1cYBXB77MROSCCQBBKeeQCBJIBjEgiERwJJkCrULqqqqlSpUtsIVVVLhbLpopIXZVFV6rbiby2PYsfXPt/xPXaiZsCuvpGQP49/c2funfE4NtI9/wjzGsxrYd6AeSPMWzBvhXkH5p0wjVkxoWaTBZMVJgGTCJMDkxMmDyYvTB+YPmH6wfQLUwBTEKYIpijMAJgBYQbBDApzBMwRYYbADAkzDGZYmKNgjgpzDMwxYUbAjAhzHMxxYU6AOSHMKJhRYcbAjAkzDmZcmJNgTgpzCswpYSbATAgzCWZSmNNgTgtzBswZYc6COSvMOTDnhDkP5rwwF8BcEGYKzJQw02CmhZkBMyPMLJhZYS6CuSjMJTCXhLkM5rIwc2DmhLkC5oowV8FcFWYezLwwC2AWhFkEsyjMNTDXhLkO5rowN8DcEKYEpiTMEpglYcpgysLcBHNTmGUwy8KsgFkR5haYW8LcBnNbmFUwq8LcAXNHmLtg7gqzBmZNmHtg7glzH8x9YR6AeSDMQzAPhVkHsy7MBpgNYR6BeSTMYzCPweTAbILZJNPTATXl0scLqCmXPKAGXsOAmqmk6fjaahdQE67fWEBNuG6r7S8k9njR5WifmUxrQE0a479aXl75EGFMtT5WbPthzKpLvhIf6+qyn/NVXV7CPSKMXTW8Zqu+fgPGs7oUKmn0N/3wmnm4jmr9Adv4fgnrwj67Obxmuv4khNdU6L0YC6/p1iCvlObYa3ufxPHh+0ZvBtk059UuRvpbjIw/z0/N10Y2Y+fgzkV8EcYQPdZhe1y3Vh/0kUibPP4Dkf7E5siuHvtK/UksXImzFw4aroTb8xjidlnxGPbD63g/sWNO+zMnjEksjyIXOR6+1vqF5zyK4Lfrne6U51CE7UP7SaT9VAN23i98/E+TZr8/oXtvbB7PqvsqOVjfcpn42H0B+/5MtJnt0Ca/t9T5S+gYgv+8w/njzyG+Vr5MtCu0cZ3GNuV5W5di+Qp4vF/T+cDrP3Y+OPMm+G/hHH9D97TYZ+lwm7Yxi6YQ2bbd50bsWtjvtVOkvgX/rMO1k2r+RLnUNn8C3z8qf+LHfd67YtkOWVjH49kp2yEcWziX+JkZtv2Y2R3YHzV2L/Zx36j1v9JsC+/x1SVfSaVvteyOl3S/wfdEH+xXnV/0Bz2//HcAZncMUFuxz2ncH39Ox96rsXsYv1d/63C+Yn+zhDHY772y27M7fu8wBmnnFPwBnwV/0nf4vsj+qu5VG5cVj7U2Iuvy9W17Pafgb/od4P+QU/BX/cmHyCl4Bb85LNJ7l//GPKz9pptTsPdbHi6HfPyeUwDH1Ph/CjCbYLJgtsBsCbMNZluYJ2CeCOM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZuM5BbZm4zkFtmbjOQW2ZtMNOQVo2uUU8FzytXYqe49hrqMkY7dZrz8v/YdltbS87BkGvZVhwK/lK6396DQn/kTSdHxtcYZB4/tExuYUzNY3wrnzw9Lrc+fPJM3jrvUHbOM7D6wL++zmufMn60/C3Plz0Ee+/sI1mWRa2xp6/2+sXu/89MPu1s/fvfj1l92d7z99vrvz9PmzDC14/eA9rmW/iXU5sX0u03qvbDyPtFHtb7fPtRkyP9rNtRnmFw19SWeu27259cI+U2i/VIj0b5D6iks4pfnIdlnxPKHHdpbX47rhyGuhzdHIugF6HIP2DvNzJLQ/nk770XM0BvU49RPHef2QjiG01/htKNO6JPRa47cdOr7s4R/fUoaWXGRfYcFrJbz+L8HPWOUSzzkA","debug_symbols":"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Lbf6ynX2WY3FlltiseWWWGy5JZYBS4WFyy2xcLklFi63xMLlllhsuRUWZ5/VWGy5JRZbbonFk8QqsbDfs8+eY+FySyxcbonFllt+5dpySyy23AqLs89qLLbcEostt8TC5ZZYBiwVFi63xMLlllhsuSUWW26JxZZbYXH2WY3Fk8QqsbDfs8+eY+FySywDlgqLLbf8yrXlllhsuSUWW26JxZZbYXH2WY2Fyy2xcLklFi63xDJgqbDYckssttwSiy23xGLLLbF4klghFi77PfvsORYut8TC5ZZYbLnFV+7lMGCpsNhySyy23BKLLbfEYsstsXC5FZb9nn32HAuXW2LhckssttwSy4ClwmLLLbHYckssniRWiYX9nn32HAuXW2HZ79lnz7HYcquvXGef1VhsuSWWAUuFxZZbYrHllli43BILl1ti4XIrLPs9++w5FltuicWWW2Kx5ZZYBiwVFk8Sq8TCfs8+e46Fyy2xcLklFltu9ZXr7LMaiy23xGLLLbHYckssA5YKC5dbYuFySyxcbomFyy2x2HIrLM4+q7HYckssttwSiyeJVWJhv2efPcfC5ZZYuNwSiy23/Mq15ZZYbLkVFmef1VhsuSUWW26JhcstsQxYKixcbomFyy2x2HJLLLbcEostt8Li7LMaiyeJVWJhv2efPcfC5ZZYBiwVFltu+ZVryy2x2HJLLLbcEostt8Li7LMaC5dbYuFySyxcbollwFJhseWWWGy5JRZbbonFllti8SSxSizs9+yz51i43BILl1tiseVWX7nOPqux2HJLLLbcEostt8Riyy2xcLkFlut+zz57joXLLbFwuSUWW26JZcBSYbHlllhsuSUWTxIrxMJ1v2efPcfC5VZY9nv22XMsttzqK9fZZzUWW26JZcBSYbHlllhsuSUWLrfEwuWWWLjcCst+zz57jsWWW2Kx5ZZYbLkllgFLhcWTxCqxsN+zz55j4XJLLFxuicWWW33lOvusxmLLLbHYckssttwSy4ClwsLllli43BILl1ti4XJLLLbcCouzz2osttwSiy23xOJJYpVY2O/ZZ8+xcLklFi63xGLLLb9ybbklFltuhcXZZzUWW26JxZZbYuFySywDlgoLl1ti4XJLLLbcEostt8Riy62wOPusxuJJYpVY2O/ZZ8+xcLkllgFLhcWWW37l2nJLLLbcEostt8Riy62wOPus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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block_iter","pad_msg_block","attach_len_to_msg_block","build_msg_block_iter","emit_encrypted_note_log_oracle_wrapper","directive_integer_quotient","directive_invert"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"}]}},"file_map":{"103":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests : BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() });\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.private_call_requests.push(\n PrivateCallRequest {\n contract_address,\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter\n }\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n let call_request = PublicCallRequest { contract_address, call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n is_delegate_call\n );\n\n let function_selector = comptime {\n FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR)\n };\n let call_context = self.generate_call_context(\n contract_address,\n function_selector,\n is_static_call,\n is_delegate_call\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n contract_address,\n call_context,\n args_hash,\n counter,\n };\n }\n\n fn generate_call_context(\n self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> CallContext {\n let msg_sender = if is_delegate_call {\n self.msg_sender()\n } else {\n self.this_address()\n };\n let storage_contract_address = if is_delegate_call {\n self.this_address()\n } else {\n contract_address\n };\n CallContext { msg_sender, storage_contract_address, function_selector, is_static_call, is_delegate_call }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"},"109":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{execution::{get_chain_id, get_version, get_contract_address, get_block_number}, storage::storage_read};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(\n self,\n storage_slot: Field\n ) -> T where T: Deserialize<N> {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"122":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field = 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122, 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115\n ];\n\n assert_eq(expected_compressed_point_positive_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_positive_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_positive_sign[i]);\n }\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169, 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181\n ];\n\n assert_eq(expected_compressed_point_negative_sign.len(), compressed_point.len());\n for i in 0..expected_compressed_point_negative_sign.len() {\n assert_eq(compressed_point[i], expected_compressed_point_negative_sign[i]);\n }\n }\n}\n"},"124":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator, constants::GENERATOR_INDEX__CONSTRUCTOR,\n abis::function_selector::FunctionSelector\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()), \"Initializer address is not the contract deployer\"\n );\n}\n\npub fn compute_initialization_hash(init_selector: FunctionSelector, init_args_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n"},"125":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note\n) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field\n) where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_nullify = compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"126":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n note: Note\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"135":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}}\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage\n},\n utils::arr_copy_slice\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field\n) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field where Note: NoteInterface<N> + NullifiableNote {\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S]\n) -> [Field; 4] where T: NoteInterface<N> + NullifiableNote {\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"136":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::{constants::{MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH}};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(\n context: PrivateContext,\n storage_slot: Field,\n note: Note\n) where Note: NoteInterface<N> {\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field = extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()), \"Mismatch return note field.\"\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field\n) -> (Note, Field) where Note: NoteInterface<N> + NullifiableNote {\n let note = unsafe {\n get_note_internal(storage_slot)\n };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n let opt_notes = unsafe {\n get_notes_internal(storage_slot, options)\n };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>) where Note: NoteInterface<N> + NullifiableNote + Eq {\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note where Note: NoteInterface<N> {\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length\n )[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] where Note: NoteInterface<N> {\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE> where Note: NoteInterface<N> {\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) = flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order\n )\n}\n"},"138":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator = arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158, 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\nuse crate::{\n oracle::{keys::get_public_keys_and_partial_address, key_validation_request::get_key_validation_request},\n keys::{constants::{NULLIFIER_INDEX, OUTGOING_INDEX}}\n};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) = unsafe {\n get_public_keys_and_partial_address(account)\n };\n assert_eq(\n account, AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address), \"Invalid public keys hint for address\"\n );\n\n hinted_canonical_public_keys\n}\n"},"143":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH\n )\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_low_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_nullifier_membership_witness(block_number: u32, nullifier: Field) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"144":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, PartialAddress}, public_keys::{PublicKeys, NpkM, IvpkM, OvpkM, TpkM},\n point::Point\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(address: AztecAddress) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool } }\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"146":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::{function_selector::FunctionSelector}, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe {\n notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter)\n };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"148":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"149":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"151":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(storage_slot, note_type_id, serialized_note, note_hash, counter)\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter)\n };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_created_note_oracle(storage_slot, note_type_id, serialized_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S]\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S]\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields\n )\n}\n\npub unconstrained fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N] // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S] where Note: NoteInterface<N> {\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"153":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(_address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\npub unconstrained fn get_contract_instance_internal_avm(address: AztecAddress) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance = unsafe {\n ContractInstance::deserialize(get_contract_instance_internal(address))\n };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"},"155":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"156":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(contract_address: AztecAddress, randomness: Field, encrypted_event: [u8; M], counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(contract_address, randomness, encrypted_event, counter)\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(note_hash_counter: u32, encrypted_note: [u8; M], counter: u32) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(contract_address: AztecAddress, message: T, counter: u32) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32\n) -> Field {}\n"},"158":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n"},"159":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe {\n pack_returns_oracle_wrapper(returns)\n };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"},"162":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, public_keys::{OvpkM, IvpkM},\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash_with_separator\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes, encrypted_logs::{header::EncryptedLogHeader},\n keys::{point_to_symmetric_key::point_to_symmetric_key}\n};\n\npub fn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P]\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] = compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe {\n random()\n };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(plaintext: [u8; P], eph_sk: Scalar, ivpk: IvpkM) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field\n ).to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::{encrypted_logs::payload::{compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext}};\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{address::AztecAddress, public_keys::{OvpkM, IvpkM}, point::Point, scalar::Scalar};\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04);\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false\n }\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false\n }\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41, 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239, 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118, 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183, 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78, 101, 153, 0, 0, 16, 39\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2);\n\n let log: [u8; 448] = compute_encrypted_log(contract_address, ovsk_app, ovpk_m, ivpk_m, recipient, plaintext);\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235, 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79, 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171, 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203, 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211, 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205, 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248, 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110, 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173, 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4, 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194, 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219, 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18, 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167, 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239, 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25, 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91, 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76, 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178, 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189, 117, 147, 101, 230, 132\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160, 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157, 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93, 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130, 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95, 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234, 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162, 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185, 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236, 23, 206, 229, 108\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(recipient, recipient_ivpk, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238, 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248, 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31, 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151, 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58, 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25, 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224, 30, 168, 177, 26, 144, 5, 124, 128, 6\n ];\n\n for i in 0..outgoing_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], outgoing_body_ciphertext_from_typescript[i]);\n }\n assert_eq(outgoing_body_ciphertext_from_typescript.len(), ciphertext.len());\n }\n}\n"},"163":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::getters::get_ovsk_app, encrypted_logs::payload::compute_encrypted_log\n};\nuse dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, OvpkM, IvpkM}, hash::sha256_to_field,\n abis::note_hash::NoteHash\n};\n\nfn compute_raw_note_log<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] = compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> (u32, [u8; 416 + N * 32], Field) where Note: NoteInterface<N> {\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) = compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> () where Note: NoteInterface<N> {\n | e: NoteEmission<Note> | {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) = unsafe {\n compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient)\n };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log<let M: u32>(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::{PublicKeys, IvpkM, ToPoint}, scalar::Scalar, point::Point};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48] where T: ToPoint {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false\n }\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131, 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171, 176, 218, 48, 209, 73, 89, 200, 209\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"184":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, GENERATOR_INDEX__FUNCTION_ARGS},\n point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice}\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(contract_address: AztecAddress, log: [u8; N]) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub struct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"193":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl <let N: u32> Deserialize<N> for str<N> {\n fn deserialize(fields: [Field; N]) -> Self {\n str<N>::from(fields.map(|value| value as u8))\n }\n}\n"},"216":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash\n},\n constants::{AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\npub struct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1\n )\n )\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys_hash: PublicKeysHash\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(contract_class_id, salted_initialization_hash);\n\n AztecAddress::compute(public_keys_hash, partial_address)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"218":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::{aztec_address::AztecAddress}, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(\n poseidon2_hash_with_separator(\n [\n salt,\n initialization_hash,\n deployer.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"221":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n poseidon2_hash_with_separator(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"227":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a,b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset+31 - i] as Field) * v;\n hi = hi + (bytes[offset+15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the \n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N]\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\nfn multi_scalar_mul_array_return<let N: u32>(points: [EmbeddedCurvePoint; N], scalars: [EmbeddedCurveScalar; N]) -> [Field; 3] {}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_slice(points: [EmbeddedCurvePoint], scalars: [EmbeddedCurveScalar]) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint { x: 1, y: 17631683881184975370165255887551781615748388533673675138860, is_infinite: false };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint { x: point1.x + (x_coordinates_match as Field), y: point1.y, is_infinite: x_coordinates_match };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result= point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(_point1: EmbeddedCurvePoint, _point2: EmbeddedCurvePoint) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(point1: EmbeddedCurvePoint, point2: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"246":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; 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 // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"253":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n debug_log_oracle_wrapper(msg, args)\n };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"254":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash, constants::GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n hash::poseidon2_hash_with_separator, point::POINT_LENGTH,\n traits::{Deserialize, Serialize, Empty, is_empty, Hash}\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Empty for PublicKeys {\n fn empty() -> Self {\n PublicKeys {\n npk_m: NpkM { inner: Point::empty() },\n ivpk_m: IvpkM { inner: Point::empty() },\n ovpk_m: OvpkM { inner: Point::empty() },\n tpk_m: TpkM { inner: Point::empty() }\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(\n if is_empty(self) {\n 0\n } else {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field)\n }\n )\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM { inner: Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool } },\n ivpk_m: IvpkM { inner: Point { x: serialized[3], y: serialized[4], is_infinite: serialized[5] as bool } },\n ovpk_m: OvpkM { inner: Point { x: serialized[6], y: serialized[7], is_infinite: serialized[8] as bool } },\n tpk_m: TpkM { inner: Point { x: serialized[9], y: serialized[10], is_infinite: serialized[11] as bool } }\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash = 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_empty_hash() {\n let keys = PublicKeys::empty();\n\n let actual = keys.hash();\n let test_data_empty_hash = 0x0000000000000000000000000000000000000000000000000000000000000000;\n\n assert(actual.to_field() == test_data_empty_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } }\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n assert(BIT_SIZE < modulus_num_bits() as u32);\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n /// \n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self', \n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N-1-i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"260":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"288":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash}\n};\n\npub struct NullifierLeafPreimage {\n nullifier : Field,\n next_nullifier :Field,\n next_index : u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.nullifier, siloed_value, \"Value of the nullifier leaf does not match read request\");\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::collections::vec::Vec;\nuse crate::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_slice};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator<let N: u32>(input: [Field; N], separator: u32) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: Vec<EmbeddedCurveScalar> = Vec::from_slice([EmbeddedCurveScalar { lo: 0, hi: 0 }; N].as_slice()); //Vec::new();\n\n for i in 0..N {\n scalars.set(i, from_field_unsafe(input[i]));\n }\n scalars.push(EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field });\n let domain_generators :[EmbeddedCurvePoint; N]= derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n let mut vec_generators = Vec::new();\n for i in 0..N {\n vec_generators.push(domain_generators[i]);\n }\n let length_generator : [EmbeddedCurvePoint; 1] = derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n vec_generators.push(length_generator[0]);\n multi_scalar_mul_slice(vec_generators.slice, scalars.slice)[0]\n}\n\n#[field(bn254)]\npub fn derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(domain_separator_bytes: [u8; M], starting_index: u32) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe {\n crate::field::bn254::decompose_hint(scalar)\n };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, |fields| fields)\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H> where H: Hasher {\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default {\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H) where H: Hasher {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T] where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B) where A: Hash, B: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C) where A: Hash, B: Hash, C: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D) where A: Hash, B: Hash, C: Hash, D: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E) where A: Hash, B: Hash, C: Hash, D: Hash, E: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1), 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1), EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false\n }\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2), 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2), EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3), 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3), EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4), 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4), EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5), 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5), EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6), 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6), EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7), 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7), EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8), EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9), EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false\n }\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10), EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false\n }\n );\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n /// \n /// ```noir\n /// fn len(self) -> Field\n /// ```\n /// \n /// example\n /// \n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n /// \n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let first_elem = f(self[0]);\n let mut ret = [first_elem; N];\n\n for i in 1..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n /// \n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n /// \n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n /// \n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n /// \n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Ord + Eq {\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N] where T: Eq {\n /// Returns a new sorted array by sorting it with a custom comparison function. \n /// The original array remains untouched. \n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n /// \n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n /// \n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]), \"Array has not been sorted correctly according to `ordering`.\"\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n /// \n /// Example:\n /// \n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n"},"318":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.pk_m.is_infinite as Field,\n self.sk_app\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self { pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool }, sk_app: fields[3] }\n }\n}\n"},"338":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256([log_hash.contract_address.to_field(), log_hash.log_hash.value])\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(\n poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0\n )\n )\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk<let N: u32>(_vk: VerificationKey<N>) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(\n inputs: [Field; N],\n separator: T\n) -> Field where T: ToField {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field where T: ToField {\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3)\n },\n version,\n chainId\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"339":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n public_keys::PublicKeys, contract_class_id::ContractClassId, constants::CONTRACT_INSTANCE_LENGTH,\n traits::{Deserialize, Hash, Serialize}\n};\n\npub struct ContractInstance {\n salt : Field,\n deployer: AztecAddress,\n contract_class_id : ContractClassId,\n initialization_hash : Field,\n public_keys : PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11]\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize(\n [\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15]\n ]\n )\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys.hash(),\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer\n )\n )\n }\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(input: [Field; N], in_len: u32, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: [u32; 16], _state: [u32; 8]) -> [u32; 8] {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> [u8; 32] {\n sha256_var(msg, N as u64)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: [u8; 64]) -> [u32; 16] {\n let mut msg32: [u32; 16] = [0; 16];\n\n for i in 0..16 {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4*(i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\nunconstrained fn build_msg_block_iter<let N: u32>(msg: [u8; N], message_size: u32, msg_start: u32) -> ([u8; 64], u32) {\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n for k in 0..block_input {\n msg_block[k] = msg[msg_start + k];\n }\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: [u8; 64],\n msg_start: u32\n) -> u32 {\n let mut msg_byte_ptr: u32 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n\n for k in msg_start..msg_end {\n if k < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\nglobal BLOCK_SIZE = 64;\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> [u8; 32] {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: [u8; BLOCK_SIZE] = [0; BLOCK_SIZE];\n let mut h: [u32; 8] = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) = unsafe {\n build_msg_block_iter(msg, message_size, msg_start)\n };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n unsafe {\n let (new_msg_block, new_msg_byte_ptr) = pad_msg_block(msg_block, msg_byte_ptr);\n msg_block = new_msg_block;\n if crate::runtime::is_unconstrained() {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..BLOCK_SIZE {\n assert_eq(msg_block[i], last_block[i]);\n }\n\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n // Not enough bits (64) to store length. Fill up with zeros.\n for _i in 57..BLOCK_SIZE {\n if msg_byte_ptr <= 63 & msg_byte_ptr >= 57 {\n assert_eq(msg_block[msg_byte_ptr], zero);\n msg_byte_ptr += 1;\n }\n }\n }\n\n if msg_byte_ptr >= 57 {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe {\n attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size)\n };\n\n if !crate::runtime::is_unconstrained() {\n for i in 0..56 {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in 56..64 {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n }\n\n hash_final_block(msg_block, h)\n}\n\nunconstrained fn pad_msg_block(\n mut msg_block: [u8; 64],\n mut msg_byte_ptr: u32\n) -> ([u8; BLOCK_SIZE], u32) {\n // If i >= 57, there aren't enough bits in the current message block to accomplish this, so\n // the 1 and 0s fill up the current block, which we then compress accordingly.\n if msg_byte_ptr >= 57 {\n // Not enough bits (64) to store length. Fill up with zeros.\n for i in msg_byte_ptr..BLOCK_SIZE {\n msg_block[i] = 0;\n }\n (msg_block, BLOCK_SIZE)\n } else {\n (msg_block, msg_byte_ptr)\n }\n}\n\nunconstrained fn attach_len_to_msg_block(mut msg_block: [u8; BLOCK_SIZE], msg_byte_ptr: u32, message_size: u32) -> [u8; BLOCK_SIZE] {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n\n for i in msg_byte_ptr..56 {\n msg_block[i] = 0;\n }\n\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..8 {\n msg_block[56 + i] = len_bytes[i];\n }\n msg_block\n}\n\nfn hash_final_block(msg_block: [u8; BLOCK_SIZE], mut state: [u32; 8]) -> [u8; 32] {\n let mut out_h: [u8; 32] = [0; 32]; // Digest as sequence of bytes\n\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4*j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d, 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 0x8f, 0xfe, 0x73, 0x2b\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94, 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154, 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213, 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117, 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112, 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115, 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49, 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46, 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115, 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97, 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45, 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55, 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32, 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32, 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64, 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103, 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115, 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101, 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56, 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48, 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75, 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101, 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97, 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186, 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17, 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12, 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48, 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6, 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2, 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89, 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2, 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75, 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1, 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189, 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4, 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45, 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4, 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188, 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212, 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253, 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9, 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214, 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107, 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198, 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126, 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36, 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59, 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97, 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180, 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216, 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70, 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246, 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193, 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74, 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210, 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210, 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69, 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22, 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175, 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53, 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200, 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86, 119, 30, 63, 129, 143, 32, 96\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n}\n"},"438":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"439":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness, auth::{compute_authwit_nullifier, compute_authwit_message_hash}\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{storage::storage, functions::{private, initializer, view, noinitcheck}};\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n signing_public_key: PrivateImmutable<PublicKeyNote, Context>,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n\n let mut pub_key_note = PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(&mut context, this_keys.ovpk_m, this_keys.ivpk_m, this));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe {\n get_auth_witness(outer_hash)\n };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>()\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(consumer, context.chain_id(), context.version(), inner_hash);\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>()\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit = get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n/// \n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n/// \n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n/// \n/// Example:\n/// \n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a \n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n /// \n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n /// \n /// Example:\n /// \n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n /// \n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n /// \n /// Example:\n /// \n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n /// \n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n /// \n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n /// \n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure. \n /// vec.set_unchecked(2, 42);\n /// println(vec);\n /// \n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n /// \n /// Panics if the new length of the vector will be greater than the max length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// \n /// v.push(1);\n /// v.push(2);\n /// \n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n /// \n /// v.push(100);\n /// assert(v.len() == 1);\n /// \n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n /// \n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n /// \n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n /// \n /// Note that uninitialized elements may be zeroed out!\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n /// \n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n /// \n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n /// \n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n /// \n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n /// \n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n /// \n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n /// \n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input. \n /// The maximum length of the vector is determined based on the type signature.\n /// \n /// Example:\n /// \n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n /// \n /// Panics if the vector is empty.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n /// \n /// let two = v.pop();\n /// let one = v.pop();\n /// \n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n /// \n /// Example:\n /// \n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n /// \n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector. \n /// \n /// Example:\n /// \n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n /// \n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier = poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER, GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n CANONICAL_AUTH_REGISTRY_ADDRESS\n},\n hash::poseidon2_hash_with_separator\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context.static_call_private_function(\n on_behalf_of,\n comptime {\n FunctionSelector::from_signature(\"verify_private_authwit(Field)\")\n },\n [inner_hash]\n ).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress\n) {\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(context: &mut PublicContext, on_behalf_of: AztecAddress, inner_hash: Field) {\n let result: Field = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"consume((Field),Field)\")\n },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(consumer: AztecAddress, chain_id: Field, version: Field, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_authorized(Field,bool)\")\n },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime {\n FunctionSelector::from_signature(\"set_reject_all(bool)\")\n },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default()\n ).assert_empty();\n}\n"},"77":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize}\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"81":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"83":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(\n self,\n note: &mut Note\n ) -> NoteEmission<Note> where Note: NoteInterface<N> + NullifiableNote {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note<let N: u32>(self) -> Note where Note: NoteInterface<N> + NullifiableNote {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.36.0+1094f036be7b102252a3a5c0d4b8c621779cf4bd-x8664","name":"SchnorrAccount","functions":[{"name":"lookup_validity","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"parameters":[{"name":"consumer","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"kind":"boolean"},"visibility":"public"}},"bytecode":"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","debug_symbols":"5Z3djhvH0YbvRcc+6Oqq/vOtfPgQyIkTCBDkwFYCBIbvPVztzpAyh2yoQu08tXNiSNbUzvtym89bHE71/P7ubz//9K9//OXDp7//8tu7H//v93cff/nr+88ffvl0+tvvf/zw7qdfP3z8+OEff7n83+/S038kfzn+t3++//T0198+v//187sfpY70w7ufP/3t9MeW0ukn/P3Dx5/f/Wha/vjh6uie7OXgnvN6rHTbOLbk8nJsKeefK6n/8f8/vBN9gJiynKC3NhFjOl6OtdqvxNj/Lmak/HLwkDoRU9MivOZ6JaY8QIwtB4+iMzF9Ofby5y5i6reKeSpqnqLuKRqOopw8ReIpyp4i9RSZp6h4ijwrIntWRN5cEdqlvhRpL3nyRtBSZTm6ygWxNG+9bXpZKDF6u3jjiH0RNGCCNNEECU1QpglSmiCjCSo0QZUmqNEE0UitNFIbjdRGI7XRSG00UhuN1EYjtdFIbTRSG43URiN1oZG60EhdaKQuNFIXGqkLjdSFRupCI3WhkbrQSF1ppK40UlcaqSuN1JVG6kojdaWRutJIXWmkrjRSNxqpG43UjUbqRiN1o5G60UjdaKRuNFI3GqkbjdSdRupOI3WnkbrTSN1ppO40UncaqTuN1J1G6k4j9aCRetBIPWikHjRSDxqpB43Ug0bqQSP1oJF60EgtiYZqSTRWS6LBWhKN1pJouJZE47UkGrAl0YgtiYZsSThmC47ZgmO24JgtOGYLjtmCY7bgmC04ZguO2YJjdsYxO+OYnXHMzjhmZxyzM47ZGcfsjGM2boBRcBOMghthFNwMo+CGGAU3xSi4MUbBzTEKbpBRcJOMghtlFNwso+CGGQU3zSi4cUbBzTMKbqBRcBONghtpFNxMo+CGGgU31Si4sUbBzTUKbrBRcJONghttFNxso+CGGwU33Si48UbBzTcKbsBRcBOOghtxFNyMo+CGHAU35Si4MUfBzTkKbtBRcJOOght1FNyso+CGHQU37Si4cUfBzTsKbuBRcBOPght5FNzMo+CGHgU39Si4sUfBzT0KbvBRcJOPght9FNzso+CGHwU3/Si48UfBzT8KbgBScBOQghuBFNwMpOCGIAU3BSm4MUh5/TlISSm3l8Ml2ZCvNF0fn5suz0E5/fH8IJT2pD+//tTkg/VLcP05uH4Nrt+C6y90/daSvhxeUhvno5NuaTFNq3L5+ugvfuvB/LaD+e0H84vvHx7rV/D9xoP94vuTB/vF9zMP9ovvfx7s1w7m92D9lRysv5KD9VdysP5KDtZf5YP1V/lg/VU+WH+VD9Zfvf6uCDv7PVh/lQ/WX+WD9Vf5YP1VPlh/pQfrr/Rg/ZUerL/Sg/VXr7+Dyc5+D9Zf6cH6Kz1Yf6UH66/0YP2VHay/soP1V3aw/soO1l+9/m5DO/s9WH9lB+uv7GD9lR2sv7KD9VflYP1VOVh/VQ7WX5WD9VevvzPYzn4P1l+Vg/VX5WD9VTlYf1UO1l/Vg/VX9WD9VcX3V0XS8tOLSLp2gO+Ypg4svAN8V/O1g3btAN+nTB3gO4+pA3wvUaSdHfSN9wG+O5g5aPi8nzoI8DsYyx4MJed65aDzM3nU5fAyLo9eHPAzeeaAn8kzB/xMnjnYIZOL2Oqg6NcOvmhqQE0dqGnwNI0E1CRATRmoSYGaDKipADUBOT6AHB9Ajg8exzXxOK6Jx3FNPI5r4nFcE4/jmngc18TjuCYexzXxOK4JyHEBclyAHBcgxwXIcQFyXIAcFyDHBchxAXJcgBzPQI5nIMczkOMZyPEM5HgGcjwDOZ6BHM9AjmcgxxXIcQVyXIEcVyDHFchxBXJcgRxXIMcVyHEFctyAHDcgxw3IcQNy3IAcNyDHDchxA3LcgBw3IMcLkOMFyPEC5HgBcrwAOV6AHC9AjhcgxwuQ4wXI8QrkeAVyvAI5XoEcr0COVyDHK5DjFcjxCuR4BXK8ATnegBxvQI43IMcbkOMNyPEG5HgDcrwBOd6AHO9AjncgxzuQ4x3I8Q7keAdyHDjPqcB5TgXOcypwnlOB85wKnOdU4DynAuc5FTjPqcB5TgXOcypwnlOB85wKnOc04DynAec5DTjPacB5Tks8jhtwntOA85wGnOc04DynAec5DTjPacB5TgPOcxpwntOA85wGnOc04DynAec5DTjPacB5TgPOcxpwntOA85wGnOc04DynAec5DTjPacB5TgPOcxpwntOA85wGnOc04DynAec5DTjPacB5TgPOcxpwntOA85wGnOe0XWbdbJw11XqtaYffXZWzpprHtabB0/T4Ga460aS5rD87t/PPbs96BKYnw/Toq+vRddN0VSsXeq6PPV1+WnScrrCUP2u3wNpLYO01sPYWWHsPrP2bs+qp6sYk2bC+VI1q11U3mN+XtuP0Le7sdcqp9uWxYzn1fO5Smm4Go4120dScH/Zzwu+zqEwUpURRRhRViKIqUVQjiupEUQMo6tbQ176iiERvRKI3ItEbkeiNSPRGJHojEr0Rid6IRO9Eonci0TuR6J1I9E4keicSvROJ3olE70SidyLRxx5EL6ZnUaVeixKiqEwUpURRRhRViKIqUVQjiupEUYMnqiQg0UvahVMX2VfTuBa1x7uvlgtRTa5FNaKoThQ1gKIkEUUJUVQmilKiKCOKKkRRm0S31NIiSlKaiDpdOH05+LQazoJeTtC+9wn69z7B+M4n2B6BeeQJ5HufYJNMJibrCezqBoOyPT4yrTJXVXFVVVdVc1V1V9XwVG3frD+tEleVa22oa22oa22oa22oa22oa22oa22oa22Ya22Ya23YjVe+jrXqIrPWqhuvRj/fAjX6ddX2q6FtPdcpf2cQzGucWm7no3PdOPj0Sq7ItGyXBz/p2b5Zd0c9AtOTYXoUpsdgegpMT4XpaTA9HaYHxuft218t17VptnydaNu3v06rsqtKXVXmqiququ33YC1lqWoXt0Hf+sib1vuUcxLT2UfeyRd4Zfseyb1FdaKoARS1fY/k3qKEKCoTRSlRlBFFFaIoItEbkeiNSPRGJHonEr0Tid6JRO9Eonci0TuR6J1I9E4keicSvROJPohEH0SiDyLRB5Hog0j0sQfRZ7eOjUoU1YiiOlHU4ImqKRFFCVFUJopSoigjigISvaZdOHX/ZuAqe7z7JvezVclEUUoUZURRhSiqEkU1oqhOFDWAonIiitomelu3Z7Q2bCJKkywWVDR9dQ7HJ6x649bSfTUpUJMBNRWgpgrU1ICaOlDT4Gm6cSv1vpqAHFcgxxXIcQVyXIEcVyDHFchxBXJcgRw3IMcNyHEDctyAHDcgxw3IcQNy3IAcNyDHbQeOzy6VlwTUJEBNGahJgZoMqKkANVWgpgbU1IGagByve/Bp8o1n3eF9N7tmXytQUwNq6kBNg6epJaAmAWrKQE0K1GRATd/M8S9V26TtmpeqIbNddKSkxYmUiwHlp/13vpyjvcI5+iucY3z/c9wYG3rsOeQVzpEfcY51TF5qrl+d4/roMpaDa5XJsU83FrwcnNPFey+X8axeQ6u30OpLaPU1tPoWWf1IZPV1va2p5vNGTrnbs3Y0cU5fbi3HXjyzb9WO5s1EO5o2E+1o1ky0vzppmi4NSxsz7TLq+kDpcbnlzkKaHlr9CKy+pVenfJdlv79Rk/vYL9olsPYcWLsG1m6BtZfA2mtg7S2w9h5Y+4irXQLnqgTOVQmcqxI4VyVwrkrgXJXAuSqBc1UC56oEztWMZuTdq5Ito9+rd68wtYx+r060o9+rE+3b79WxXgKy0a8eZNBuTJzNqjb7Pjl9E7A4b396BsyXqsDvSEV3LbXk9fpwvtaO7lom2tkkvK+dTcL72tkktL5q12vt6K7lvnZDXw2YaEdfDZhoR18NmGhn5+p97excva+dnat3u0UL/AnDAn/CsMCfMIydq3e1F3au3tfOztX72tm5el87O1fva2fn6n3tgXO1BM7VEjhXS+BcLYFztQbO1cq+9/fu9chqaO13ry1V9r2/97Wz7/29rx09ZTDR3tHa714nqCOu9sae7bivXQJrR8/xTbSzc/W+dnau3tced6amtbgzNa2xc/W+dnau3tfOztW72js7V+9rZ+fqfe3sXL2vPe6samPPxk+0B85V9lz8RPseOxrpOgSZ6sVDMF52e2kjATUJUFMGalKgJgNqKkBNFaipATV1oCYex3vicbwnHsd74nG8Jx7He+JxvKc9OJ7TWZNuaKpATQ2oqQM1DZ4mSUBNAtSUgZoUqMmAmoAcFyDHBchxAXI87/Ks5UmzkjNRlBJFGVFUIYqqRFGNKKoTRQ2gKE1EUUSiK5HoSiS6EomuRKIrkei6C9EnTZ52oqgBFGWJKEqIojJRlBJFGVFUIYqqRFFEohuR6EYkeiES/cY0qdT1SpBcPF3oZc+kfmOO86RoqcqyUVVcVdVV1VxV3VU1PFU3ZtRmVTKvatdV2VWlrqrttSG9ritq9Ouq4qqqrqrmquququGpujHfMqsSV1V2VamryrU2mmttNNfaaK610Vxro7nWxva9wtr78nHQkuZpjNSua4ycLr3/rx82t28C3luUEUUVoqhKFNWIojpR1ACK2r4neW9RQhRFJPogEn0QiT6IRB9Eog8i0QeR6ANI9JGARB8JSPSRdiH6/Us9IylRlBFFFaKoShTViKI6UdQAipJEFCVEUUSiC5HoQiS6EIkuNzi1fsOjvcxEaanL1Xitcj5anuxsaCr9rKlc3OMrYs+aBk9TTkBNAtSUgZoUqMmAmgpQUwVqakBNQI5nIMcVyHEFclyBHNcd+FT1on+yDU0VqKkBNXWgpsHTZAmoSYCaMlCTAjUZUBOQ4wbkuAE5bkCOG5DjBcjxAuR4AXK8ADlegBwvQI4XIMcLkOMFyPEC5HgFcrwCOV6BHK9AjlcgxyuQ4xXI8QrkeAVyvAI53oAcb0CONyDHG5DjDcjxBuR4A3K8ATnegBxvQI53IMc7kOMdyPEO5HgHcrwDOd6BHO9AjncgxzuQ4wPI8QHk+AByfAA5PoAcH0CODyDHB5DjA8jxweO4pMQD+UkUj+QnUTyUn0TxWH4SxYP5SRSP5idRPJyfRPF4fhLFA/pJFJHoQiS6EIkuRKILkehCJLoQiS5EoguR6EIkuhCJvsfwYpVxFpXHV6K+9fhnE0I3Ubsszw6u/eLo9mIgRzeg0Q1YdAMluoEa3UDjG6i6GujlykCPbmAEN6D4NJ4ZCJDE9w0ESOL7BgIk8X0DAZL4voEASXzfQIAkvm8gehJr9CTW6Els0ZPYoiexRU9ii57EuwyIP9RA9CS26Els0ZPYoiexRU/iEj2JS/QkLtGTuERP4l1G/B9qIHoSl+hJXKIncYmexCV6EtfoSVyjJ3GNnsQ1ehLvsknDQw1ET+IaPYlr9CSu0ZO4Rk/iFj2JW/QkbtGTuEVP4l222XiogehJ3KIncYuexC16ErfoSdyjJ3GPnsQ9ehL36Em8y0YpDzUQPYl79CTu0ZO4R0/iHj2JR/QkHtGTeERP4hE9iXfZ6uahBqIn8YiexCN6Eo/oSTyCJ7Gk4EksKXgSSwqexJKCJ7Gk4EksKXgSSwqexJKCJ7Gk4EksKXoSS/QkluhJLNGTWKIn8S77Sz3UQPQkluhJLNGTWPhJPNK6t8qQawP8JL5vgL/P1swAP4knBvhJPDHAT+KJAViQPYuChdOzKFjgPIuChcgXUXtsOJRyW0XZkMmbomRb9mAsuej56KQvFgxvoeTVQimyYaHEt1DjW2jxLfT4FkZ4C3tsfvNoC/xcmFrIeAs22n0LGt8CP52nFvjpPLUQIJ3b2cKoGxYCpPPMQoB0nlkIkM4TCyVAOs8sBEjnmQV+Ok8t8NO52vLTSy1bFvjpPLXAT+epBX46Ty3w07mqnS20DQv8dJ5a4KfzzELlp/PUAj+dpxb46Ty1ECCdZxYCpPOFhWobFgKk88xCgHSeWeCnc8/LN1Wl25YFfjpPLfDTeWah8dN5aoGfzm30s4XylYWNn26rltMfz1r0pOvZMD/LH2yYn/wPNmxHM8zvKh5smN+DPNgwPyu/yXBdhdfc12Nzf7kNp78xRlddQrheHHu2+8YIPbP7xvg8s/vG6Dyzy2dzb+vnwyF1YtfqItxautBdX+wG+Cz5SLsBPnc+0m6Az6gPtDsCfJ59pF3+Z9+H2uV3VQ+1y++qHmrXjmWX31UNXe/IHH/qqp4t8DulUdd7PsbYuJFu8LufqQV+RzO1wO9SJhZy4nceUwv8bmJqgd8hTC3wU39qgZ/kUwsB0nlmIXw65xQ+nXMKn845xU9niZ/OEj+dJX46S/x03mMDoEdbiJ/OEj+dJX46S/x0lvjpnOOnc46fzjl+Ouf46Zzjp3OOn845fjrn+Omc46dzjp/OGj+dA+yKNbUQP501fjoH2JtsaiF+OgfYm2xqIX46B9ibbGohfjoH2JtsaiF+OgfYm2xqIX46B9ibbGohfjoH2JtsaiF+OgfYm2xqIX46B9ibbGohfjoH2JtsaiF+OgfYm2xqIX46B9ibbGohfjoH2JtsaiF+OgfYm2xqIX46B9ibbGohfjoH2JtsaiF+OgfYm2xqIX46B9ibbGohfjoH2JtsaiF+OgfYbWxqIX46B9gRbGohfjoH2LVraiF+Orf46RxgN7SZhR4/nXv8dA6wz9zUQvx0DrAf3NRC/HQOsG/b1EL8dA6wv9rUQvx0DrAP2tRC/HQOsF/Z1EL8dA6wr9jUQvx0jr9XWI6/V1iOv1dYjr9XmMbfaEvjb7Sl8Tfa0hQ+2jTAFk8PfDCABtgO6tvslrzYvXjsw9nuW3vsw327AbaZeqjdN/bopZndt/ZQD+urXd2w+9Ye6jGxy8/Sh9p9aw/1mNh9Yw9cmtl9a13VxO5b66omdt9aV3X3gTwaYHuwh9p9a13VxO6hHpWmAbYoe6hdO5bdQz0qTQNsk/ZQu2+tq5rYfWtd1cTusbqqANu6PdTusbqqANvFPdTusbqqANvQPdLu9vSD9PVTsvR6FpTTUrbZjD3tdLSU5YsyXaqqq6q5qrqraniqtm/YfprLWKtGv64SV9X2K19keZ7c6Y8bCqurqrmquqtqeKq2b8aTquvvq9Z0XSWuquyqUleVuaqKq6q6qpqrqruqhqPKUnJViasqu6rUVWWuquKqqq6q5qrqrqoba6Mv3zdKS/mqSpKrSlxV2VWlripzVRVXVXVVbf+WLa9VZnJdNTxV21e3p1XiqsquKnVVmauquKqqq6q5qlxrI7vWhrrWht5YG2Vt4C8fSLxWZVeVuqrMVVVcVdVV1VxV3VU1PFWWXFWutWGutWGutWGutWGutWGeTxxmzVXVXVWeTxy2vVugpHp+OVJtF3W5vBRuv/itre1NGxunK66q6qpqrqrtF7/35YKJjFSuq4anantXsWmVuKqyq0pdVeaqKq6q6qpqrirX2qiutdFca6O51kZzrY3mWhvNtTaaa21sX6DLaW2KctKNquaq6q6q4agq241lt+XSaC96VXOj1UvrjaxPzL+uyq4qdVWZq2p7ZZwuNi5V0vp1VXVVNVdVd1UNT9WNVm9WJa6q7KpSV5W5qlxrw1xrw1xrw1xrw1xro7jWxvaO2PdZc6upFFvfybpRVV1VzVXVXVXDU3Wjy5tVuXhdXbyuLl5XF69vdHmzquqqaq6q7qq6sTbq+u5K/eryYbnR5c2qxFWVXVXqqjJXVXFVzdfGVpVrbTTX2rjxNeyk6sbXsLMqFze6ixvdxY3u4kZ3caO7uNFda6O71kZ3rY3hWhvDtTaG67c8XL/l4fotj2/+Lf9x+tu/3//64f1PH3/+7VTz9I//+vTXzx9++fTy18//+efzv5wO/i8=","brillig_names":["lookup_validity"]},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["private","noinitcheck"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"visibility":"private"},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"},"visibility":"private"},{"name":"cancellable","type":{"kind":"boolean"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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MRKcx0lw/kmC8y8SnKFsHDhjSHBmI8GZnQRnLAnOOBKcOUhw5iTBmYsEZzwJztwkOPOQ4MxLgjMfCc78JDgLkOAsSIKzEAnOwiQ4i5DgLEqCM4EEZzESnGeR4CxOgrMECc6SJDjPBuHM5sF5pp+DjlUccymSMccpjrk0yZhzKI75HJIx51Qc87kkY86lOOYwyZjjFcdchmTMuRXHXJZkzHkUx3weyZjzKo65HMmY8ymOuTzJmPMrjrkCyZgLKI75fJIxF1Qcc0WSMRdSHHMlkjEXVhzzBSRjLqI45gtJxlxUccyVScacoDjmKiRjLqY45otIxnyW4pgvJhlzccUxJ5KMuYTimA3JmEsqjrkqyZjPVhxzNZIxl1IccxLJmEsrjjmZZMznKI65OsmYz1Uccw2SMYcVx1yTZMxlFMdci2TMZRXHfAnJmM9THPOlJGMupzjmyxTH7FwXd77H53DajQENbWtkW2PbrrGtiW1NbWtm27W2NbethW3X2Xa9bS1ta2XbDbbdaFtr29rYdpNtN9vW1rZ2tt1i2622tbetg20dbetkW2fbUmzrYttttnW1rZttt9t2h23dbethW0/betnW27Y+tvW1rZ9tqbb1t+1O2wbYNtC2QbbdZdvdtg22bYht99h2r21DbRtm23Db7rNthG0jbRtl2/22jbZtjG1jbRtn23jbJtg20bZJtk22bYptU22bZtt022bYNtO2B2ybZdts2x60bY5tc22bZ9tDtj1s23zbFtj2iG2P2rbQtkW2PWbb47Yttm2JbU/Y9qRtT9m21LanbXvGtmW2PWvbc7Y9b9ty216w7UXbXrLtZdtW2PaKba/a9pptK2173bY3bFtl22rb3rTtLdvW2LbWtrdte8e2dbatt+1d296z7X3bNtj2gW0f2vaRbRtt+9i2T2z71LZNtn1m2+e2bbZti21f2PalbVtt22bbV7Z9bdt223bY9o1t39q207Zdtu227Tvb9ti217bvbfvBtn227bftR9t+su2AbQdtO2Tbz7b9Ytth23617Tfbjth21LbfbfvDtmO2HbftT9v+ss25ASbGtmy2Zbct1rY423LYltO2XLbF25bbtjy25bUtn235bStgW0HbCtlW2LYithW1LcG2YradZVtx20rYVtK2s20rZVtp286x7VzbwraVsa2sbefZVs628rZVsO182yraVsm2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","debug_symbols":"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jXN3U41zd1ONc3dTDXw31W35+G6qDfmnvtcd+G6qDfnnvuqeu5tqnLubapy7m2rgu6luB2Z8N9WG/HPf6+K7qTbkn/uqe+5uqnHubqpx7m6qce5uqnHubqqB76bakH/ue118N9Vt+fhuqg35577qnrubapy7m2qcu5tq4LupbgdmfDfVhvxz3+viu6k25J/7qnvubqpx7m6qce5uqnHubqpx7m6qge+m2pB/7ntdfDfVhvxz3+ueu5tqnLubapy7m2qcu5tq4LupbgdmfDfVhvxz3+viu6k25J/7qnvubqpx7m6qce5uqnHubqpx7m6qge+m2pBPv+puyD/3vS6+m2pD/rmvuufuphrn7qYa5+6mGvhuqtuBGd9NtSH/3Pe6+G6qDfnnvuqeu5tqnLubapy7m2qcu5tqnLubauC7qTbkn/teF99NtSGfftXdkH/uq+65u6nGubupxrm7qQa+m+p2YMZ3U23IP/e9Lr6bakP+ua+65+6mGufuphrn7qYa5+6mGufuphr4bqqb8gXfTbUh/9T3uoLvptqQf+qrriynvurKubup5NzdVILvproZmAXfTbUh/9T3uoLvptqQf+6r7rm7qeTc3VRy7m4qOXc3lZy7m0rw3VQb8k99ryv4bqrb8vHdVBvyz33VPXc3lZy7m0rO3U0l+G6q24EZ3021If/c97r4bqoN+ee+6p67m0rO3U0l5+6mknN3U8m5u6kE3021If/c97r4bqoN+ee+1z13N5Wcu5tKzt1NJefuphJ8N9XtwIzvptqQf+57XXw31Yb8c191z91NJefuppJzd1PJubup5NzdVILvptqQT7/qbsg/970uvptqQ/65r7rn7qaSc3dTybm7qQTfTXU7MOO7qTbkn/teF99NtSH/3Ffdc3dTybm7qeTc3VRy7m4qOXc3leC7qTbkn/teF99NtSGfftXdkH/uq+65u6nk3N1Ucu5uKsF3U90OzPhuqg35577XxXdTbcg/91X33N1Ucu5uKjl3N5Wcu5tKzt1NJfhuqtvy8d1UG/LPfa+L76bakH/uq+65u6nk3N1Ucu5uKsF3U90OzPhuqg35p77XVXw31Yb8U1919dzdVHrubipdTn3V1XN3U+m5u6kU3021If/U97qK76a6LR/fTbUh/9xX3XN3U+m5u6n03N1Uiu+muh2Y8d1UG/JPfa+r+G6qDfnnvuqeu5tKz91NpefuptJzd1PpubupFN9NtSH/3Pe6+G6qDfnnvtc9dzeVnrubSs/dTaXn7qZSfDfV7cCM76bakH/ue118N9WG/HNfdc/dTaXn7qbSc3dT6bm7qfTc3VSK76bakE+/6m7IP/e9Lr6bakP+ua+65+6m0nN3U+m5u6kU3011OzDju6k25J/7Xvfc3VR67m4qPXc3lZ67m0rP3U2l5+6mUnw31W3jPHc3lZ67m0rx3VQb3/1zX3XP3U2l5+6m0nN3U+m5u6kU30112zjx3VQb8s991cV3U23IP/dV99zdVHrubio9dzeVnrubSs/dTaX4bqrb8vHdVBvyz/27Lr6bakP+ua+69G6qyHGRH6nv5R9+1R21XOX78qddvyi674X05Rh7XO1C7HoMq9tTjxxy2Tj1zcb10RItevnK6fJmiXSd5EV+nlt+nVr+Lp1QX5Jf112PMr8tf6TruA7r9qpk5Ec7l3Wjy+Ks/53jT9u/DDy6DSzdBtZuAxt64Bp23XWp+AcD+MEDiCzXNZU3/wQfD+D26ri+Pnb5YIB59gGCPcC0NwPM+mCAPPsAde4BbFnOPkCzZGBLs2RgS7NkYIt1G9i7DTy7DRzdBs5uA1ezgUezZzA2uiWtcXjSinjduPTtwC+ClCbIaILgzyREr7t2qeWD79zRv+FLzstpI1lzY9eSoZeta3lzO6by0XNsz8u4OsebrYd9sHVpXJTU+vvCDudvPNdyt7XM51rutpbwh0Zbzx1N4A+NtgcYZx/AnqfjXqfj4R1qj7yWz/iy31p2e2Yi3Z6ZSLdnJtrtmYl2e2ai3X6d2qXKbs9HIOo0QZMmCP5nE5sPiTRpK3r2O9rDa+EeOLce3lH3yGspZz+x9OwD0C6nRr9LynlNWNPkgxVl3/Vs/uGr+fNisZvB+fNisd9aHn7vtSfUYq7nlm/nlt/tb/C829/gebfnyd7tebKfPVlN9vPhivDr1rn4xr/YfDXomfJGye9h2c+Gdx6W/Vx452HZxMLOw1qnYdkp6cvDTr0Om/5uWHZC2nlYdjraeVh2Mtp5WHgq2nXYeLAEdXvYB0tQt4d9sAR1e9gHS1C3h7VOw3ZKUNEpQUWnBBWdElR0SlDZKUFlpwSVnRJUdkpQuzRgnmbYTgkqOyWo7JSgslOCyk4JCt5OuvOwnRIUvJV052E7JSh6G+m+w3ZKUNUpQVWnBFWdElQ1SlC+NEpQDm9w3XnYRgnK4c2tOw9rnYZtlKAc3ta687CNEpTDW1p3HrZTgoK3s+48bKcENTolqNEpQR3fJvuTw3ZKUKNTghqdEtTolKDGYyWoujZlzBrvhpXHSlAbwz5WgtoY9uSlMi4nL5XxXep7f/CtWy7wnv3tAeDv/tse4OTv/nNhv/tvrjnusuu5Teff5kZd2AV5+w6r7Hr4nYdlV8nvPCw7Oew8LDtlfHnYm7c2h9fY/uiw7PSy87DspLPzsOxUtPOwD5agbg/7YAnq5rD2YAnq9rAPlqBuD/tgCer2sJ0SlFmnYTslKOuUoKxTgrJOCco6JSjvlKC8U4LyTgnKOyWowxu0f3TYTgnKOyUo75SgvFOC8k4JanZKULNTgpqdEtTslKAO7+L+0WE7JajZKUHNTglqdkpQs1OCik4JKjolqOiUoKJTgjq8i/tHh+2UoKJTgopOCSo6JajolKCyU4LKTgkqOyWo7JSgDu/i/tFhOyWo7JSgslOCyk4JKjslqOqUoKpTgqpOCao6JajDu7h/dNhOCao6JajqlKCqU4KqRglqLo0S1FwaJai5NEpQc2mUoOZiDzXszTqvuTxWgtoY9rES1Maw7CbJdB2XrXN7WFk3ui7lyBx/2v5lYHab5B0GZjdK7j8wvJf7DgOzmyXvMDC7n/sOA7M7uu8wsHUbmN3VfYeB2X3ddxi4W9I6vrf7tWxvpNbbgV8EFUzQ8f3XW4IGTZDQBB1+JY543bj0vSCjCXKaoEkTFDRBSRNUMEGH9w1vCho0QUITpLBLB7z/1kWvu3ap5X2gg3fa/g0DwBv5tweAN/JvD8D+DftvGIB2D2G0ewij3UMY7R7CaFemw3tFNwXtcaWZ8/o7WQzZsImcl6cfkjU3di0Zl5+GV5N4lT9UPthaPS8ro+sziNeth32wdWlclJTmDo9hdqkWfa7ly1rGcy13W8t8ruVua1nPtdxrLXepdX2u5ctajuda7raW8lzL3dZSn2u521racy13W0uH3Ygd3qq7KQj+BGzrvawT3mb7NwzAJjO2B4C3zv4NA7AJir9hgJO/HXrCG1//hgHs7APAf4vaHgD+W9T2AAGLBpP292aT9ltR0H4rCtpvRUH7rShovxUd3l65KYh2zxS0e6agOXXQnDpoTp00p06aUyfNqZPm1Elz6qQ5ddKcOmlOnTSnTppTF82pi+bURXPqojl10Zy6aE5dNKcumlMXzakL5tSxwJw6FphTxwJz6lhgTh0LzKljgTl1LDCnjgXm1LHAnDoWmlMPmlMPmlMPmlMPmlMPmlMPmlMPmlMPmlPTGiyC1mARtAaLoDVYBK3BIoTm1EJzaqE5tdCcWmhOLTSnFppTK82plebUSnNqWoNFKM2plebUSnNqpTm10pya1ugQtEaHoDU6hD1U/6uvjwZ+b+6h/qetX8Z9qPbX7XGt17gP1fy6Pe5D9b5uj/tQra/b4z5Uu/72uA/Vrb85rj9Us/72uA/Vq789bq9U5bS7611A+l0F0e6uaTR6OO3u2ml31067u560u+tJu7uetOegk+bUk+bUk+bUk+bUNFo5aLRy0GjloNHKQaOVg0YrB41WDhqtHDRaOWi0ctBo5aDRykGjlYNGKweNVg4arRw0WjlotHLQaOWg0cpBo5WDRisHjVYOGq0cNFo5aLRy0GjloNHKQaOVg0YrB41WDhqtHDRaOWm0ctJo5aTRykmjlXOBOXXSaOWk0cpJo5WTRisnjVZOGq2cNFo5abRy0mjlpNHKSaOVk0YrJ41WThqtnDRaOWm0ctJo5aTRykmjlZNGKyeNVk4arZw0WjlptHLSaOWk0cpJo5WTRisnjVZOGq2cNFo5abRy0mjlpNHKSaOVk0YrJ41WTtr755P2/vmkvX8+jebURnNqozm10ZzaaE7tNKd2mlM7zalpjGLSGMWkMYpJYxSTxigmjVFMGqOYNEYxaYxi0hjFpDGKSWMUk8YoJo1RTBqjmDRGMWmMYtIYxaQxikljFJPGKCaNUUwao5g0RjFpjGLSGMWkMYpJYxSTxigmjVFMGqOYNEYxaYxi0hjFpDGKSWMUk8YoJo1RTBqjmDRGMWmMYtIYxaQxikljFJPGKCaNUUwao1g0RrFojGLRGMWiMYq1wJy6aIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFIvGKBaNUSwao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGqNYNEaxaIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFIvGKBaNUSwao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGqNYNEaxaIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFIvGKBaNUSwao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGqNYNEaxaIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFIvGKBaNUSwao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGKMoC4xRXAWxnHoVxHLqVRDLqVdBLKdeBbGcehXEcupVEMupV0Esp14F0ZwaxiiugmhODWMUV0E0p4YxiqsgmlPDGMVVEM2pYYziKojm1DBGcRVEc2oYo7gKojk1jFFcBdGcGsYoroJoTg1jFFdBNKeGMYqrIJpTwxjFVRDNqWGM4iqI5tQwRnEVRHNqGKO4CqI5NYxRXAXRnBrGKK6CaE4NYxRXQTSnhjGKqyCaU8MYxVUQzalhjOIqiObUMEZxFURzahijuAqiOfXxjGJdd/0Lrn8r6KONI/y6dS6vm4/8aOezlsu0s8abnf8eNjoNm52GrUbDHs+E/uSwo9Ow0mlY7TSsdRrWOw3bKUFNdoJK13FNu265Maz8ehf9RfivV8X9afuXgdkp6g4Ds5PU/gMHO03dYWB2orrDwOxUdYeBac9hYFz7Koj2HOZ4rj3idePS94KCJihpggom6HiufUvQoAkSmiClCTKaoKOdWuR6ByTy5mr88cXbRa+7dqnl/cX4cA5+9wHi7APk2QegXWmKdqUp2pXmcC7/i985e42jPhd7/507nOPffQA7+wB7XPnmjOsAQzYGyHm5EZWsubFrydDL1rW8rs1Q+WBr9byspM7xZuthH2xdGhclpbnDHfEuFQfPtXxZy3iu5W5rmc+13G0t67mWO63l2KXO47mWL2s5zh1ExnLyLDuWk2fZsdjZB4A/xdkeAP4UZ3sA2F/AD1pTy6A1tQxaU8ugNbUMWlPLoDW1DFpTy6A1tQxaU8ugNbUMWlPLoDW1DFpTy6A1tQxaU8ugNbUMWlPLoDW1DFpTy6A1tQxaU8ugNbUMWlPLoDW1DFpTy6A1tQxaU8ugNbUMWlPLoDW1DFpTy6A1tQx7qL/L9xgXDMdD/0zhvIz7UH+Vvz3uQ/1N/va4bNZx93Gt17hs3nH3cWlXd1q7z6C1+wxau8+gtfsMWrvPoLX7DFq7z6C1+wxau89wmlM7zamd5tROc+pJc+pJc+pJc+pJc+pJc+pJc+pJc+pJc+pJc+pJc+qgOXXQnDpoTk1rahi0poZBa2oYQXPqoDl10Jw6aE6dNKdOmlMnzamT5tRJc+qkOXXSnDppTp00p06aUxfNqYvm1EVz6qI5ddGcumhOXTSnLppTF82pC+bUssCcWhaYU8sCc2pZYE4tC8ypZYE5tSwwpxYa1yo0rlVoXKvQuFahca1C41qFxrUKjWsVGtcqNK5VaFyr0LhWoXGtQuNahca1Co1rFRrXKjSuVWhcq9C4VqFxrULjWoXGtQqNaxUa1yo0rlVoXKvQuFahca1C41qFxrUKjWsVGtcqRnNqozm10ZzaaE5tNKc2mlPTGEWhMYpCYxSFxigKjVEUGqMoNEZRaIyi0BhFoTGKQmMUhcYoCo1RFBqjKDRGUWiMotAYRaExikJjFIXGKAqNURQaoyg0RlFojKLQGEWhMYpCYxSFxigKjVEUGqMoNEZRaIyi0BhFoTGKQmMUhcYoCo1RFBqjKDRGUWiMotAYRaExikJjFIXGKAqNUZRid9lWhF+3zuV184/7MGdd38Q1a7zZ+e9h2U22Ow/L7rHdeVjrNCy7w3bnYWenYY++ostr3/D6c9PGsOv1Y/7eON3GxqiRddlYXl9yqEN/j5pnHfVFfp1Zvh5O4O4sf5xbvpxbvp5bvp1bvp9b/jy3/NNeoV/kn/qqq8u5r7rj3Ffdce6r7jj3VXec+6p7OAW+s/xzX3X3IcxDr/LLb8vPjMusWXPZuFccrtddz0Vet15vqF/073HZzSVeH4XK1lMAf30KEHHdOJcPNl4T8eUhwBrPljc3u/Jbfp5bfp1a/i5o/Ffky6J52fWSelv+V9/59Ku98/IM6Vct5Adn+y7o/akGlm4Da7eBDT1wDbte2kvFPxjA2QN88Tn268+KM+VNlPk97Ow0bHQaNjsNW42GVXZK+vKwU6/Dpr8blp2Qdh6WnY52HpadjHYe1joN+2AJ6vawD5agbg/7YAnq9rAPlqBuD/tgCermsNYpQVmnBGWdEpR1SlC71POcZthOCco6JSjrlKCsU4KyTgnKOyUo75SgvFOC8k4JapfarNMM2ylBeacE5Z0SlHdKUN4pQc1OCWp2SlCzU4KanRLULnV2pxm2U4KanRLU7JSgZqcENTslqOiUoKJTgopOCSo6JahdaiZPM2ynBBWdElR0SlDRKUFFpwSVnRJUdkpQ2SlBZacEtUv962mG7ZSgslOCyk4JKjslqOyUoKpTgqpOCao6JajqlKB2qSA+zbCdElR1SlDVKUFVpwRVjRKULY0SlC2NEpQtjRKULY0SlC3WadhGCcqWRgnKlkYJypZGCcqWTglqdEpQo1OCGp0S1OiUoHYp2T7NsJ0S1OiUoEanBDU6JajRKUHBe8d3HrZTgoL3je88bKcERe8Z33fYTgnq0TrJbw/bKUE9Wif57WE7JahOneTWqZPcOnWSW6dOcuvUSW6dOsmtUye5deokt06d5Napk9w6dZJbp05y69RJbp06ya1TJ7l16iS3Tp3k9mCd5LVc355W4/2wj5WgNoY9PEGpve76l+Kbw7pdX3Q3fC72p2H/GOD4nvG9BxjsAaa9GWDWBwPI2QfQsw9gZx/A0QNMH9ddz+13IN9+O6cd38X9k8NGp2Gz07Ds5LDvsJOdMr487M20P9mJZOdh2ell52HZSWfnYa3TsA+WoG4P+2AJ6vawD5agbg/7YAnq9rAPlqBuDhudElR0SlDRKUFFpwR1fBf3Tw7bKUFFpwQVnRJUdEpQ0SlBZacElZ0SVHZKUNkpQR3fxf2Tw3ZKUNkpQWWnBJWdElR2SlDVKUFVpwRVnRJUdUpQx3dx/+SwnRJUdUpQ1SlBVacEVY0SlC+NEpQvjRKUL40SlC+NEpQv1mnYRgnKl0YJypdGCcqXRgnKl04JanRKUKNTghqdEtTolKCO7+L+yWE7JajRKUGNTglqdEpQo1OCkk4JSjolKOmUoKRTgjq+i/snh+2UoKRTgpJOCUo6JSjplKC0U4LSTglKOyUo7ZSgju/i/slhOyUo7ZSgtFOC0k4JSjslKOuUoKxTgrJOCco6Jajju7h/cthOCco6JSjrlKCsU4KCd3HvOyy8t3vnYTslKHgf+FeHvdmf7/Du8J2HNfSbEXJ91nvd9fawsm50mXb97xx/2v5lYPYbTe4wMPutJncYmP1mkzsMzH67yR0GZr8jbv+BJ/s9cXcYmP2uuDsMzH5f3B0GZr8z7g4DW7eBj05ao/yy61+v1Ho78IugSRMUNEF7JIkQuxwjrDYERbxuXK/f0ajfggomaJfO610FDZogoQlSmiCjCXKaoEkTFDRBCbt0xNFOLXJ9sCXyJq+sK/TBnn19yHbZtUst7+NKLmcfYJx9ADn7AHr2AQzmKkm7h0jaPUTS7iGSdmU6vA91S9AunaVzXgXF2HoSkPNyby9Zc2PXknH5LXA1iTevdv0197utdTWN31vrHG+2HvbB1qVxUVKaOzxk2KUS9bmWL2spz7XcbS31uZa7raU913K3tfTnWu62lvO5lrutZTzXcre1zOda7raW9VzLndZyHt40vHEjNg9vA94UBH8CZkOuD5DmYh/8E8OfgG0PYGcfwM8+wDz7AHH2AfLsA8B/i9ocYMB/i9oeAP5b1PYAAosGh7ezbgoymiDYb0VzwH4rmgP2W9Ech/+9Wb6e+Kn11iZeBBVMkCw0QYMmSGiClCbIaIKcJmjSBAVNEOxX/SmwX/Wn0pxaaU6tNKdWmlMrzamVlqmVlqmVlqmV5tRKc2qj/Q5hNKc2mlMbzamN5tRGy9RGy9RGy9RGe/phtKcfTsvUTvvF2GnPqZ3m1E5zaqc5tdOc2mlO7TSndppTT5pTT1qmnrRMPWm/KB7ekLEpiPb0g9ZgMWkNFnPSnn5MmlMHzamD5tRBc+qgZerjGyy2BNEyddAyddAyddAyddCeUyftOXXSnDppTp00p06aUyfNqWmNDpPW6DBpjQ6T1ugwi+bURXtOXTSnLppTF82pi+bURcvURcvURcvUBXv6EQvs6UcssEwdC+wXxVhgz6ljgTl1LDCnjgXm1LHAnDoWmFPHQnPqQXPqQXPqAcvUMWCZOmiMYtAYxaAxikFjFGPAnn7EgD39CBqjGDRGMWiMYtAYxaAxikFjFIPGKAaNUQyhZWqhZWqFPacOhT2nDhqjGDRGMWiMYijNqZXm1DRGMWiMYtAYxaAximE0pzbac2oaoxg0RjFojGLQGMWgMYpBYxSDxigGjVEMpz39cFqmdtovirswirsKojk1jVEMGqMYNEYxaIxi0BjFoDGKQWMUY9Iy9S6M4q6CdnHq61sERpTfFqSL+u+NdfHXlwjqkN+KJk5R4BQlTlHRFO0DKu6qaOAUCU6R4hQZThHtr0CC9lcgQXtiTXvfdtBoxaDRipG0J9ZJe2KdtOcgtPdPB+3900GjFYNGKwaNVgwarRg0WjFotGIUzamL5tRFc+qiOXXRnLpoTl00py6YUyftjZlJe2Nm0mjFpNGKucCcOheYU+cCc+pcYE6dC8ypc6E59aA59aA5Ne2Nikl7o2LSaMWk0YpJoxWTRismjVZMGq2YQnNqoTm10JxaaE4tNKcWmlMLzamF5tS0Nyom7Y2KSaMVk0YrptKcWmlOrTSnpr1RMWlvVEwarZg0WjFptGLSaMWk0YpJoxXTaE5tNKc2mlMbzamN5tRGc2qjObXTnJr2RsWkvVExabRi0mjFdJpTO82pnebUTnNqpzn1pDn1pDn1pDk17Y2KSXujYtLeqJi0Nyom7Y2KSXujYk6aUwfNqYPm1EFz6qA5ddCcmsYoJo1RTBqjmDRGMWmMYtIYxaQxikljFJPGKCaNUUwao5g0RjFpjGLSGMWkMYpJYxSTxigmjVFMGqOYNEYxaYxi0hjFpDGKSWMUk8YoFo1RLBqjWDRGsWiMYi0wpy4ao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGqNYNEaxaIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFIvGKBaNUSwao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGqNYNEaxaIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFIvGKBaNUSwao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGqNYNEaxaIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFIvGKBaNUSwao1g0RrFojGLRGMWiMYpFYxSLxigWjVEsGqNYNEaxaIxi0RjFojGKRWMUi8YoFo1RLBqjWDRGsWiMYtEYxaIxikVjFAvGKK7HZTn1elyWU6/HZTn1elyWU6/HZTn1elyWU6/HZTn1elyWU6/HZTn1elyaU8MYxVUQzalhjOIqiObUMEZxFURzahijuAqiOTWMUVwF0ZwaxiiugmhODWMUV0E0p4YxiqsgmlPDGMVVEM2pYYziKojm1DBGcRVEc2oYo7gKojk1jFFcBdGcGsYoroJoTg1jFFdBNKeGMYqrIJpTwxjFVRDNqWGM4iqI5tQwRnEVRHNqGKO4CqI5NYxRXAXRnBrGKK6CaE4NYxRXQTSnhjGKqyCaU8MYxVUQzalhjOIqiObUMEZxFURzahijuAqiOTWMUVwF0ZwaxiiugmhODWMUV0E0p4YxiqsgmlPDGMVVEM2pYYziKojm1DBGcRVEc2oYo7gKojk1jFFcBdGcGsYoroJoTg1jFFdBNKeGMYqrIJpTwxjFVRDNqWGM4iqI5tQwRnEVRHNqGKO4CqI5NYxRXAXBnHrQGMVBYxQHjVEcNEZxLDCnHjRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUB41RHDRGcdAYxUFjFAeNURw0RnHQGMVBYxQHjVEcNEZx0BjFQWMUhcYoCo1RFBqjKDRGURaYUwuNURQaoyg0RlFojKLQGEWhMYpCYxSFxigKjVEUGqMoNEZRaIyi0BhFoTGKQmMUhcYoCo1RFBqjKDRGUWiMotAYRaExikJjFIXGKAqNURQaoyg0RlFojKLQGEWhMYpCYxSFxigKjVEUGqMoNEZRaIyi0BhFoTGKQmMUhcYoCo1RFBqjKDRGUWiMotAYRaExikJjFIXGKAqNURQaoyg0RlFojKLQGEWhMYpCYxSFxigKjVEUGqMoNEZRaIyi0BhFoTGKQmMUhcYoCo1RFBqjKDRGUWiMotAYRaExikJjFIXGKAqNURQaoyg0RlFojKLQGEWhMYpCYxSFxigKjVEUGqMoNEZRaIyi0BhFoTGKQmMUhcYoCo1RFBqjKDRGUWiMotAYRaExikJjFJXGKCqNUVQao6g0RlEXmFMrjVFUGqOoNEZRaYyi0hhFpTGKSmMUlcYoKo1RVBqjqDRGUWmMotIYRaUxikpjFJXGKCqNUVQao6g0RlFpjKLSGEWlMYpKYxSVxigqjVFUGqOoNEZRaYyi0hhFpTGKSmMUlcYoKo1RVBqjqDRGUWmMotIYRaUxikpjFJXGKCqNUVQao6g0RlFpjKLSGEWlMYp6OKMoi+Zl10vqW0EfqY/wq/xc/Lr5yI92PmuR35vPGq9bx+9hpdOw2mlY6zSsdxp2dho2Og2bnYatRsMezvf+6LDsBJWu47prt9wYVtaNLtOu/53jT9u/DMxOUXcYmJ2k7jCwdRuYnajuMDA7Vd1h4D2SVYhdVIXVxo13DnldnTcb129BSRNUMEG7sOdfEhTxunHpe0GDJkhogpQmyGiCnCZo0gQFTVDSBB3t1CLXOyCRN1fjVdAHe3bR665danl/Mc7l7AOMsw8gZx+AdqXZhZ3fVRDtSpOT/Z2z1zjqc7EPvnNx9gHy7APsceWb83rbGmPrtjXn5UZUsubGriVDL1vX8ro249fd8but1wfgl5VcHyK+2XrYB1vXevvxe+ta/yH/7999R7xLDcFzLV/WcjzXcre1lOda7raW+lzL3dbSnmu521r6yYNInT3L1tmzbJ09yxb8Kc7WALbAn+JsDzBYv3jYIjRBShNkNEFOEzRpgmC/vNoC++XVFtgvrzYWmiCaUw+aUw+aUw+aUw+aUw+aUw+aUw+aUw+aUwvNqYXm1EJzaqE5tdCcWmhOLTSnFppTC82phebUSnNqpTm10pxaaU6tNKdWmlMrzamV5tRKc2qlObXRnNpoTm00pzaaUxvNqY3m1EZzaqM5tdGc2mhO7TSndppTO82pnebUTnNqpzm105zaaU7tNKd2mlNPmlNPmlNPmlNPmlNPmlNPmlNPmlPTqHujUfdGo+4taE4dNKcOmlMHzamD5tRBc+qgOXXQnDpoTh00p06aUyfNqZPm1Elz6qQ5ddKcOmlOnTSnTppTJ82pi+bURXPqojl10Zy6aE5dNKcumlMXzamL5tQFc2pfYE7tNEbRaYyi78MoXuH5EeW3Bemil/poXfy1m0qH/FZkOEWOUzRxigKnKHGKYO/Tcdp735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p735323nenvffdae99d9p7391pTu00p3aaUzvNqZ3m1E5zaqc5tdOc2mlOPWlOPWlOPWlOPWlOPWlOPWlOPWlOPWlOPWlOPWlOHTSnDppTB82pg+bUQXPqoDl10Jw6aE4dNKcOmlMnzamT5tRJc+qkOXXSnDppTp00p06aUyfNqZPm1EVz6qI5ddGcumhOXTSnLppTF82pi+bURXPqgjn1XGBOPReYU88F5tRzgTn1XGBOPReYU88F5tRzgTn1XGBO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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","enqueue_public_function_call_internal","call_private_function_internal","debug_log_oracle_wrapper","notify_set_min_revertible_side_effect_counter_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"constructor","is_unconstrained":false,"custom_attributes":["private","initializer"],"abi":{"error_types":{},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"signing_pub_key_x","type":{"kind":"field"},"visibility":"private"},{"name":"signing_pub_key_y","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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2xnylO0Mecp2hjxlM8MHT9nOkKdsZ8hTtjPkKdsZDgw3M+Qp2xnylO0Mecp2hjxlO0Oespnhk6dsZ8hTtjPkKdsZHtVTbqe3X6cet+X0C5YBS4XlqDaxguWogrCC5ag7/+16fcdy/xXLUdf4FSxH3cw/xbKcjrpsr2A56v68guWoK/Gnd6LlZMstsQxYKiy23BLLYbfczy+5ttwSiy23xGLLrbCcbbklFltuieWwW+7nWA675X6OZcBSYTnslvs5FltuicWWW2Kx5ZZYbLkVluWwW+6nxcJy2C33cyy63BKLLrfEMlxyq0uuLbfEYsstsdhySyy23BKLLbfCctHlllh0uSUWXW6JRZdbYhmwVFhsuSUWW26JxZZbYjnslvtpsXA57Jb7KZahyy2x6HJLLLbc6pLb+1TW12EZsFRYbLklFltuicWWW2LR5ZZYdLkVlsMeRbqCRZdbYrHlllhsuSWWAUuFxZZbYvEbC1WxcNjzNFew6HJLLLrcCsthD7L8/JJ72LMpV7DYckssttwSy4ClwmLLLbHockssutwSiy63xKLLrbAc9hjEFSy23BKLLbfEYsstsQzFQlEsHPaUwBUsutwSiy63xGLLLS+5ttwKy2EP0VvBYsstsdhySyy23BLLgKXCosstsehySyy63BKLLbfEYsutsBz2CLYVLLbcEotfEquKBWef1VgGLBUWXW6JxZZbXnJtuSUWW26JxZZbYLk4+6zGYsstsehySyy63BLLgKXCosstsdhySyy23BKLLbfEYsutsBz37LPPioXLcc8++xyLLrfEosstsQyX3OqSa8stsdhySyy23BKLLbfEYsutsBz37LPPsehySyy63BKLLrfEMmCpsNhySyy23BKLLbfE4pfEqmLhuGeffYrluGeffY5Fl1tiseVWl1xnn9VYBiwVFltuicWWW2Kx5ZZYdLklFl1uheW4Z599jkWXW2Kx5ZZYbLkllgFLhcWWW2LxS2JVsXDcs88+x6LLLbHocisszj4rL7nOPqux2HJLLLbcEsuApcJiyy2x6HJLLLrcEosut8Siy62wOPusxmLLLbHYckssttwSy1AsFMXCcc8++xyLLrfEosstsdhyy0uuLbfC4uyzGostt8Riyy2x2HJLLAOWCosut8Siyy2x6HJLLLbcEostt8Li7LMaiy23xOKXxKpi4bhnn32OZcBSYdHlllhsueUl15ZbYrHlllhsuRUWZ5/VWGy5JRZdbolFl1tiGbBUWHS5JRZbbonFlltiseWWWGy5BZZx3LPPPisWxnHPPvsciy63xKLLLbEMl9zqkmvLLbHYckssttwSiy23xGLLrbAc9+yzz7HockssutwSiy63xDJgqbDYckssttwSiy23xOKXxKpi4bhnn32K5bhnn32ORZdbYrHlVpdcZ5/VWAYsFRZbbonFlltiseWWWHS5JRZdboXluGeffY5Fl1tiseWWWGy5JZYBS4XFllti8UtiVbFw3LPPPseiyy2x6HIrLM4+Ky+5zj6rsdhySyy23BLLgKXCYsstsehySyy63BKLLrfEosutsDj7rMZiyy2x2HJLLLbcEstQLBTFwnHPPvsciy63xKLLLbHYcstLri23wuLssxqLLbfEYsstsdhySywDlgqLLrfEosstsehySyy23BKLLbfC4uyzGostt8Til8SqYuG4Z599jmXAUmHR5ZZYbLnlJdeWW2Kx5ZZYbLkVFmef1VhsuSUWXW6JRZdbYhmwVFh0uSUWW26JxZZbYrHlllhsuRWW45599mmxcNyzzz7HosstsehySyzDJbe65NpySyy23BKLLbfEYsstsdhyCyzX45599jkWXW6JRZdbYtHlllgGLBUWW26JxZZbYrHlllj8klhRLFyPe/bZp1iOe/bZ51h0uSUWW251yXX2WY1lwFJhseWWWGy5JRZbbolFl1ti0eVWWI579tnnWHS5JRZbbonFlltiGbBUWGy5JRa/JFYVC8c9++xzLLrcEosut8Li7LPykuvssxqLLbfEYsstsQxYKiy23BKLLrfEosstsehySyy63AqLs89qLLbcEostt8Riyy2xDMVCUSwc9+yzz7HockssutwSiy23vOTacisszj6rsdhySyy23BKLLbfEMmCpsOhySyy63BKLLrfEYsstsdhyKyzOPqux2HJLLH5JrCoWjnv22edYBiwVFl1uicWWW15ybbklFltuicWWW2Fx9lmNxZZbYtHlllh0uSWWAUuFRZdbYrHlllhsuSUWW26JxZZbYTnu2WefFgvHPfvscyy63BKLLrfEMlxyq0uuLbfEYsstsdhySyy23BKLLbfCctyzzz7HosstsehySyy63BLLgKXCYsstsdhySyy23BKLXxKrioXjnn32GZbbcc8++xyL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","brillig_names":["get_contract_instance_internal","get_public_keys_and_partial_address","decompose_hint","notify_created_note_oracle_wrapper","get_key_validation_request","random","lt_32_hint","lte_16_hint","build_msg_block","attach_len_to_msg_block","build_msg_block","emit_encrypted_note_log_oracle_wrapper","directive_integer_quotient","directive_invert"]},{"name":"verify_private_authwit","is_unconstrained":false,"custom_attributes":["private","noinitcheck","view"],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"inner_hash","type":{"kind":"field"},"visibility":"private"}],"return_type":{"abi_type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}},{"name":"is_infinite","type":{"kind":"boolean"}}],"kind":"struct","path":"std::embedded_curve_ops::EmbeddedCurvePoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"note_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash"}}},{"name":"nullifiers","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier"}}},{"name":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_requests","type":{"kind":"array","length":16,"type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}}},{"name":"public_teardown_call_request","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"args_hash","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::public_call_request::PublicCallRequest"}},{"name":"l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"fields":[{"name":"recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"content","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message"}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"num_txs","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"slot_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"teardown_gas_limits","type":{"fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas"}},{"name":"max_fees_per_gas","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"databus"}},"bytecode":"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","debug_symbols":"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","brillig_names":["get_note_internal","decompose_hint","get_auth_witness","pack_returns_oracle_wrapper","directive_invert","directive_integer_quotient"]},{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{"3469988399892582431":{"error_kind":"fmtstring","item_types":[],"length":20}},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"compute_nullifier","type":{"kind":"boolean"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":3,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"}},"bytecode":"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","debug_symbols":"7Z3dbhw3EoXfRde+4G+RzKssFoGTOIEAww5iZ4GF4XffkazpmdVQKqmmOHNKqZvAjrvo409kHZ6eafa3m98+/PL3Hz/ffvr985ebn/717ebj51/ff739/Gn3u2/f39388tftx4+3f/x8/L9vwt1/Sr2//suf7z/d/fbL1/d/fb35KZX87ubDp9/uftV39b/ffvxw81PJ9fu/390UenVJTa8reXdybUsPl7a2XVnH/dh54dhl4dh14di0cOy2cOy+cOyxbmwKC8eOC8deuC5p4bqkheuSFq5LWrguaeG6pIXrkhauy7ZwXbaF67ItXJdt4bpsC9dlW7gu28J12Rauy7ZwXbaF67IvXJd94brsC9dlX7gu+8J12Reuy75wXfaF67IvXJd94bocC9flWLgux8J1ORauy7FwXY6F63IsXJdj4bocC9flWLguYwgrB48rB08rB88rBy8rB68rB6eVg7eVg/eVg69coXHlCo0rV2hcuULjyhUaV67QuHKFxpUrNK5coXHlCo0rV2hauULTyhWaVq7QtHKFppUrNK1coWnlCk0rV2hauULL2T9QCn08XEwxx+3qnT1Prs59xIer84h5uzqVH3IqlhzCktOw5HQsOQNKTg1YciKWnIQlJ2PJwerKFasrV6yuXLG6csXqyhWrKxNWV6YLryyKtL84HUZO/UHNhacO5e3iUk/VDCQ1LUCpiVBqEpSaDKWmQKlR6Dd0pCYxagrt+01p4Whk+qGGoNQ0KDUdSs1AUtMDlJoIpSZBqclQagqUmvN7cTw4Q4rxPDUEpaZBqelQagaSmvO/YqSqJkKpSVBqMpSaAqUGqhcPqF48oHrxgOrFA6kXp4DUi1NA6sUpIPXiFJB6cQpIvTgFpF6cAlIvTgGpF6eA1ItTgOrFEaoXR6heHKF6cYTqxRGqF0eoXhyhenGE6cWTjx0btYeLcz/52DFFmMb9eukwXf7V0hOMJbxeOox/vF46jNm8XjqMM71eOoyNvV46jOe9XjqMQb5eul03TXbdNNl102zXTbNdN8123TTbddNs102zXTfNdt0023XTbNdNs103LXbdtNh102LXTYtdN1V45vFq0u26abHrpsWumxa7blrsumm166bVrptWu25a7bqpwrOqV5Nu102rXTetdt202nXTatdNya6bkl03JbtuSnbd9PyT8K8n3a6bkl03Jbtu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","brillig_names":["compute_note_hash_and_optionally_a_nullifier"]}],"outputs":{"globals":{"notes":[{"fields":[{"kind":"integer","sign":false,"value":"00000000000000000000000000000000000000000000000000000000a74a8dc0"},{"kind":"string","value":"PublicKeyNote"},{"fields":[{"name":"x","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"y","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}},{"name":"npk_m_hash","value":{"fields":[{"name":"index","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000002"}},{"name":"nullable","value":{"kind":"boolean","value":false}}],"kind":"struct"}}],"kind":"struct"}],"kind":"tuple"}],"storage":[{"fields":[{"name":"contract_name","value":{"kind":"string","value":"SchnorrAccount"}},{"name":"fields","value":{"fields":[{"name":"signing_public_key","value":{"fields":[{"name":"slot","value":{"kind":"integer","sign":false,"value":"0000000000000000000000000000000000000000000000000000000000000001"}}],"kind":"struct"}}],"kind":"struct"}}],"kind":"struct"}]},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}},{"name":"fee_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":2,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}},{"name":"is_fee_payer","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::fee::FeePayload"}},{"name":"cancellable","type":{"kind":"boolean"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_parameters"}}],"kind":"struct","path":"SchnorrAccount::entrypoint_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"inner_hash","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_parameters"}},{"name":"return_type","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::verify_private_authwit_abi"},{"fields":[{"name":"parameters","type":{"fields":[{"name":"signing_pub_key_x","type":{"kind":"field"}},{"name":"signing_pub_key_y","type":{"kind":"field"}}],"kind":"struct","path":"SchnorrAccount::constructor_parameters"}}],"kind":"struct","path":"SchnorrAccount::constructor_abi"}]}},"file_map":{"100":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_nullifier_membership_witness.nr","source":"use dep::protocol_types::{\n abis::nullifier_leaf_preimage::{NullifierLeafPreimage, NULLIFIER_LEAF_PREIMAGE_LENGTH},\n constants::NULLIFIER_TREE_HEIGHT, utils::arr_copy_slice,\n};\n\n// INDEX_LENGTH + NULLIFIER_LEAF_PREIMAGE_LENGTH + NULLIFIER_TREE_HEIGHT\nglobal NULLIFIER_MEMBERSHIP_WITNESS: u32 = 24;\n\npub struct NullifierMembershipWitness {\n index: Field,\n leaf_preimage: NullifierLeafPreimage,\n path: [Field; NULLIFIER_TREE_HEIGHT],\n}\n\nimpl NullifierMembershipWitness {\n pub fn deserialize(fields: [Field; NULLIFIER_MEMBERSHIP_WITNESS]) -> Self {\n let leaf_preimage_fields = arr_copy_slice(fields, [0; NULLIFIER_LEAF_PREIMAGE_LENGTH], 1);\n Self {\n index: fields[0],\n leaf_preimage: NullifierLeafPreimage::deserialize(leaf_preimage_fields),\n path: arr_copy_slice(\n fields,\n [0; NULLIFIER_TREE_HEIGHT],\n 1 + NULLIFIER_LEAF_PREIMAGE_LENGTH,\n ),\n }\n }\n}\n\n#[oracle(getLowNullifierMembershipWitness)]\nunconstrained fn get_low_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field,\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_low_nullifier_membership_witness(\n block_number: u32,\n nullifier: Field,\n) -> NullifierMembershipWitness {\n let fields = get_low_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n\n#[oracle(getNullifierMembershipWitness)]\nunconstrained fn get_nullifier_membership_witness_oracle(\n _block_number: u32,\n _nullifier: Field,\n) -> [Field; NULLIFIER_MEMBERSHIP_WITNESS] {}\n\n// Nullifier here refers to the nullifier we are looking to get non-inclusion proof for (by proving that a lower\n// nullifier's next_value is bigger than the nullifier)\npub unconstrained fn get_nullifier_membership_witness(\n block_number: u32,\n nullifier: Field,\n) -> NullifierMembershipWitness {\n let fields = get_nullifier_membership_witness_oracle(block_number, nullifier);\n NullifierMembershipWitness::deserialize(fields)\n}\n"},"101":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr","source":"/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"},"103":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr","source":"use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{address::AztecAddress, utils::arr_copy_slice};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S],\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S],\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields,\n )\n}\n\npub unconstrained fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N], // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S]\nwhere\n Note: NoteInterface<N>,\n{\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields,\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n"},"105":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"},"106":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"},"107":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr","source":"/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe { pack_returns_oracle_wrapper(returns) };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"},"108":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/execution.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n"},"109":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr","source":"use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NullifiableNote, NoteInterface}},\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_unique_note_hash, compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n }, utils::arr_copy_slice,\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash =\n compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface<N> + NullifiableNote,\n{\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"},"114":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr","source":"use dep::protocol_types::constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, GET_NOTES_ORACLE_RETURN_LENGTH,\n};\nuse crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, Select, Sort, SortOrder, NoteStatus, PropertySelector},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>,\n) {\n for i in 0..selects.len {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>,\n) {\n for i in 0..sorts.len {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface<N>,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>,\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE>\nwhere\n Note: NoteInterface<N>,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"},"116":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr","source":"use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_read_request, compute_note_hash_for_nullify_internal},\n note_emission::NoteEmission,\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission<Note>\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"},"120":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr","source":"/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n note: Note,\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"},"132":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note, note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote}, note_viewer_options::NoteViewerOptions,\n note_emission::NoteEmission,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context> Storage<T> for PrivateImmutable<T, Context> {}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(self, note: &mut Note) -> NoteEmission<Note>\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"},"147":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr","source":"use dep::protocol_types::point::Point;\n\n// I am storing the modulus divided by 2 plus 1 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use dep::protocol_types::point::Point;\n use crate::utils::point::point_to_bytes;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"},"161":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__FUNCTION_ARGS,\n }, point::Point, traits::Hash,\n hash::{sha256_to_field, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice},\n};\nuse crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n poseidon2_hash_with_separator(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER,\n )\n}\n\npub struct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"164":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr","source":"use dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, IvpkM, ToPoint}, scalar::Scalar, point::Point,\n};\n\nuse crate::keys::point_to_symmetric_key::point_to_symmetric_key;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48]\n where\n T: ToPoint,\n {\n let full_key = point_to_symmetric_key(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131,\n 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171,\n 176, 218, 48, 209, 73, 89, 200, 209,\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"},"165":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr","source":"use crate::{\n context::PrivateContext, note::{note_emission::NoteEmission, note_interface::NoteInterface},\n keys::getters::get_ovsk_app, encrypted_logs::payload::compute_encrypted_log,\n};\nuse dep::protocol_types::{\n address::AztecAddress, public_keys::{PublicKeys, OvpkM, IvpkM}, hash::sha256_to_field,\n abis::note_hash::NoteHash,\n};\n\nfn compute_raw_note_log<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 416 + N * 32], Field)\nwhere\n Note: NoteInterface<N>,\n{\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists = context.note_hashes.storage.any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n let encrypted_log: [u8; 416 + N * 32] =\n compute_encrypted_log(contract_address, ovsk_app, ovpk, ivpk, recipient, plaintext);\n let log_hash = sha256_to_field(encrypted_log);\n\n (note_hash_counter, encrypted_log, log_hash)\n}\n\nunconstrained fn compute_raw_note_log_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> (u32, [u8; 416 + N * 32], Field)\nwhere\n Note: NoteInterface<N>,\n{\n let ovsk_app = get_ovsk_app(ovpk.hash());\n compute_raw_note_log(context, note, ovsk_app, ovpk, ivpk, recipient)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n let ovsk_app: Field = context.request_ovsk_app(ovpk.hash());\n\n let (note_hash_counter, encrypted_log, log_hash) =\n compute_raw_note_log(*context, e.note, ovsk_app, ovpk, ivpk, recipient);\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, OvpkM, IvpkM, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n // Having the log hash be unconstrained here is fine because the way this works is we send the log hash\n // to the kernel, and it gets included as part of its public inputs. Then we send the tx to the sequencer,\n // which includes the kernel proof and the log preimages. The sequencer computes the hashes of the logs\n // and checks that they are the ones in the public inputs of the kernel, and drops the tx otherwise (proposing\n // the block on L1 would later fail if it didn't because of txs effects hash mismatch).\n // So if we don't constrain the log hash, then a malicious sender can compute the correct log, submit a bad\n // log hash to the kernel, and then submit the bad log preimage to the sequencer. All checks will pass, but\n // the submitted log will not be the one that was computed by the app.\n // In the unconstrained case, we don't care about the log at all because we don't do anything with it,\n // and because it's unconstrained: it could be anything. So if a sender chooses to broadcast the tx with a log\n // that is different from the one that was used in the circuit, then they'll be able to, but they were already\n // able to change the log before anyway, so the end result is the same. It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n let (note_hash_counter, encrypted_log, log_hash) =\n unsafe { compute_raw_note_log_unconstrained(*context, e.note, ovpk, ivpk, recipient) };\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n }\n}\n\n/// Encrypts a partial log and emits it. Takes recipient keys on the input and encrypts both the outgoing and incoming\n/// logs for the recipient. This is necessary because in the partial notes flow the outgoing always has to be the same\n/// as the incoming to not leak any information (typically the `from` party finalizing the partial note in public does\n/// not know who the recipient is).\npub fn encrypt_and_emit_partial_log<let M: u32>(\n context: &mut PrivateContext,\n log_plaintext: [u8; M],\n recipient_keys: PublicKeys,\n recipient: AztecAddress,\n) {\n let ovsk_app: Field = context.request_ovsk_app(recipient_keys.ovpk_m.hash());\n\n let encrypted_log: [u8; 352 + M] = compute_encrypted_log(\n context.this_address(),\n ovsk_app,\n recipient_keys.ovpk_m,\n recipient_keys.ivpk_m,\n recipient,\n log_plaintext,\n );\n let log_hash = sha256_to_field(encrypted_log);\n\n // Unfortunately we need to push a dummy note hash to the context here because a note log requires having\n // a counter that corresponds to a note hash in the same call.\n let note_hash_counter = context.side_effect_counter;\n context.push_note_hash(5);\n\n context.emit_raw_note_log(note_hash_counter, encrypted_log, log_hash);\n}\n"},"166":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr","source":"use dep::protocol_types::{\n address::AztecAddress, scalar::Scalar, point::Point, public_keys::{OvpkM, IvpkM},\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, hash::poseidon2_hash_with_separator,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n hash::from_field_unsafe as fr_to_fq_unsafe, field::bn254::decompose,\n};\n\nuse crate::{\n oracle::random::random, utils::point::point_to_bytes,\n encrypted_logs::header::EncryptedLogHeader,\n keys::point_to_symmetric_key::point_to_symmetric_key,\n};\n\npub fn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n ivpk: IvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ivpk);\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n let outgoing_body_ciphertext: [u8; 144] =\n compute_outgoing_body_ciphertext(recipient, ivpk, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes: [u8; M] = [0; M];\n // @todo We ignore the tags for now\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[64 + i] = eph_pk_bytes[i];\n }\n for i in 0..48 {\n encrypted_bytes[96 + i] = incoming_header_ciphertext[i];\n encrypted_bytes[144 + i] = outgoing_header_ciphertext[i];\n }\n for i in 0..144 {\n encrypted_bytes[192 + i] = outgoing_body_ciphertext[i];\n }\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - 336;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[336 + i] = incoming_body_ciphertext[i];\n }\n\n // Current unoptimized size of the encrypted log\n // incoming_tag (32 bytes)\n // outgoing_tag (32 bytes)\n // eph_pk (32 bytes)\n // incoming_header (48 bytes)\n // outgoing_header (48 bytes)\n // outgoing_body (144 bytes)\n // incoming_body_fixed (64 bytes)\n // incoming_body_variable (P + 16 bytes padding)\n encrypted_bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n ivpk: IvpkM,\n) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, ivpk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's ivpk --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n recipient_ivpk: IvpkM,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point,\n) -> [u8; 144] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n let mut buffer = [0 as u8; 128];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_ivpk = point_to_bytes(recipient_ivpk.to_point());\n\n for i in 0..32 {\n buffer[i] = serialized_eph_sk_high[i];\n buffer[i + 32] = serialized_eph_sk_low[i];\n buffer[i + 64] = address_bytes[i];\n }\n for i in 0..32 {\n buffer[i + 96] = serialized_recipient_ivpk[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field,\n )\n .to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_encrypted_log, compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext,\n };\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use dep::protocol_types::{\n address::AztecAddress, public_keys::{OvpkM, IvpkM}, point::Point, scalar::Scalar,\n };\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `tagged_log.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n let ovsk_app = 0x03a6513d6def49f41d20373d2cec894c23e7492794b08fc50c0e8a1bd2512612;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x1961448682803198631f299340e4206bb12809d4bebbf012b30f59af73ba1a15,\n y: 0x133674060c3925142aceb4f1dcd9f9137d0217d37ff8729ee5ceaa6e2790353d,\n is_infinite: false,\n },\n };\n let ivpk_m = IvpkM {\n inner: Point {\n x: 0x260cd3904f6df16e974c29944fdc839e40fb5cf293f03df2eb370851d3a527bc,\n y: 0x0eef2964fe6640e84c82b5d2915892409b38e9e25d39f68dd79edb725c55387f,\n is_infinite: false,\n },\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk);\n\n let recipient = AztecAddress::from_field(\n 0x10ee41ee4b62703b16f61e03cb0d88c4b306a9eb4a6ceeb2aff13428541689a2,\n );\n\n let log: [u8; 448] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk_m,\n ivpk_m,\n recipient,\n plaintext,\n );\n\n // The following value was generated by `tagged_log.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let encrypted_log_from_typescript = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 141, 70, 12, 14, 67, 77, 132, 110, 193, 234, 40, 110, 64, 144, 235,\n 86, 55, 111, 242, 123, 221, 193, 170, 202, 225, 216, 86, 84, 159, 112, 31, 167, 126, 79,\n 51, 186, 47, 71, 253, 172, 99, 112, 241, 59, 197, 241, 107, 186, 232, 87, 187, 230, 171,\n 62, 228, 234, 42, 51, 145, 146, 238, 242, 42, 71, 206, 13, 244, 66, 111, 195, 20, 203,\n 98, 148, 204, 242, 145, 183, 156, 29, 141, 54, 44, 220, 194, 35, 229, 16, 32, 204, 211,\n 49, 142, 112, 82, 202, 116, 241, 254, 146, 42, 217, 20, 189, 70, 228, 182, 171, 205,\n 104, 27, 99, 171, 28, 91, 244, 21, 30, 130, 240, 5, 72, 174, 124, 97, 197, 157, 248,\n 193, 23, 193, 76, 46, 141, 144, 70, 211, 45, 67, 167, 218, 129, 140, 104, 190, 41, 110,\n 249, 209, 68, 106, 135, 164, 80, 235, 63, 101, 80, 32, 13, 38, 99, 145, 91, 11, 173,\n 151, 231, 247, 65, 153, 117, 229, 167, 64, 239, 182, 126, 235, 83, 4, 169, 8, 8, 160, 4,\n 235, 252, 21, 96, 84, 161, 69, 145, 145, 215, 254, 161, 117, 246, 198, 65, 89, 179, 194,\n 90, 19, 121, 12, 202, 114, 80, 195, 14, 60, 128, 105, 142, 100, 86, 90, 108, 157, 219,\n 22, 172, 20, 121, 195, 25, 159, 236, 2, 70, 75, 42, 37, 34, 2, 17, 149, 20, 176, 32, 18,\n 204, 56, 117, 121, 34, 15, 3, 88, 123, 64, 68, 74, 233, 63, 59, 131, 222, 194, 192, 167,\n 110, 217, 10, 128, 73, 129, 172, 61, 43, 12, 98, 165, 203, 191, 154, 161, 150, 4, 239,\n 95, 48, 60, 159, 33, 222, 142, 102, 73, 193, 236, 145, 197, 160, 216, 254, 113, 243, 25,\n 244, 251, 192, 222, 35, 7, 114, 101, 35, 152, 151, 112, 24, 32, 94, 138, 71, 160, 91,\n 68, 131, 217, 117, 140, 19, 147, 37, 197, 192, 21, 43, 172, 239, 239, 205, 15, 110, 76,\n 26, 211, 42, 117, 4, 15, 135, 145, 247, 37, 73, 84, 164, 149, 250, 35, 0, 205, 105, 178,\n 143, 104, 98, 100, 250, 193, 154, 136, 175, 177, 109, 225, 207, 252, 147, 250, 250, 189,\n 117, 147, 101, 230, 132,\n ];\n assert_eq(encrypted_log_from_typescript, log);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let ivpk = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `ivpk` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, ivpk);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n };\n let recipient_ivsk = Scalar {\n lo: 0x000000000000000000000000000000004828f8f95676ebb481df163f87fd4022,\n hi: 0x000000000000000000000000000000000f4d97c25d578f9348251a71ca17ae31,\n };\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient_ivpk = IvpkM { inner: derive_public_key(recipient_ivsk) };\n\n let recipient = AztecAddress::from_field(0xdeadbeef);\n\n let ciphertext = compute_outgoing_body_ciphertext(\n recipient,\n recipient_ivpk,\n sender_ovsk_app,\n eph_sk,\n eph_pk,\n );\n\n // The following value was generated by `encrypted_log_outgoing_body.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 127, 182, 227, 75, 192, 197, 54, 47, 168, 134, 233, 148, 251, 46, 86, 12, 73, 50, 238,\n 50, 31, 174, 27, 202, 110, 77, 161, 197, 244, 124, 17, 100, 143, 150, 232, 14, 156, 248,\n 43, 177, 16, 82, 244, 103, 88, 74, 84, 200, 15, 65, 187, 14, 163, 60, 91, 22, 104, 31,\n 211, 190, 124, 121, 79, 92, 239, 65, 185, 106, 51, 178, 168, 137, 84, 43, 79, 158, 151,\n 152, 83, 42, 170, 13, 106, 209, 254, 74, 39, 145, 73, 215, 17, 234, 196, 89, 30, 58,\n 120, 127, 88, 69, 121, 61, 18, 206, 89, 118, 243, 238, 177, 71, 73, 47, 147, 4, 155, 25,\n 173, 248, 206, 52, 17, 180, 122, 186, 106, 191, 252, 102, 197, 91, 16, 39, 94, 91, 224,\n 30, 168, 177, 26, 144, 5, 124, 128, 6,\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"},"177":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/point_to_symmetric_key.nr","source":"use dep::protocol_types::{\n constants::GENERATOR_INDEX__SYMMETRIC_KEY, scalar::Scalar, point::Point, utils::arr_copy_slice,\n};\nuse crate::utils::point::point_to_bytes;\nuse std::{hash::sha256, embedded_curve_ops::multi_scalar_mul};\n\n// TODO(#5726): This function is called deriveAESSecret in TS. I don't like point_to_symmetric_key name much since\n// point is not the only input of the function. Unify naming with TS once we have a better name.\npub fn point_to_symmetric_key(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret: Point = multi_scalar_mul([point], [secret]);\n let shared_secret = point_to_bytes(shared_secret);\n let mut shared_secret_bytes_with_separator = [0 as u8; 33];\n shared_secret_bytes_with_separator =\n arr_copy_slice(shared_secret, shared_secret_bytes_with_separator, 0);\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_point_to_symmetric_key_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let key = point_to_symmetric_key(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158,\n 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159,\n ];\n assert_eq(key, key_from_typescript);\n}\n"},"178":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr","source":"use dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\nuse crate::{\n oracle::{\n keys::get_public_keys_and_partial_address,\n key_validation_request::get_key_validation_request,\n }, keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n let (hinted_canonical_public_keys, partial_address) =\n unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(hinted_canonical_public_keys.hash(), partial_address),\n \"Invalid public keys hint for address\",\n );\n\n hinted_canonical_public_keys\n}\n"},"181":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr","source":"use dep::protocol_types::{\n address::AztecAddress, hash::poseidon2_hash_with_separator,\n constants::GENERATOR_INDEX__CONSTRUCTOR, abis::function_selector::FunctionSelector,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext}, oracle::get_contract_instance::get_contract_instance,\n oracle::get_contract_instance::get_contract_instance_avm,\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let instance = get_contract_instance_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"},"184":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/unconstrained_context.nr","source":"use dep::protocol_types::{address::AztecAddress, traits::Deserialize};\nuse crate::oracle::{\n execution::{get_chain_id, get_version, get_contract_address, get_block_number},\n storage::storage_read,\n};\n\npub struct UnconstrainedContext {\n block_number: u32,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UnconstrainedContext {\n unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create an UnconstrainedContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let contract_address = get_contract_address();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, contract_address, version, chain_id }\n }\n\n fn block_number(self) -> u32 {\n self.block_number\n }\n\n fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n fn version(self) -> Field {\n self.version\n }\n\n fn chain_id(self) -> Field {\n self.chain_id\n }\n\n unconstrained fn raw_storage_read<let N: u32>(self: Self, storage_slot: Field) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n unconstrained fn storage_read<T, let N: u32>(self, storage_slot: Field) -> T\n where\n T: Deserialize<N>,\n {\n T::deserialize(self.raw_storage_read(storage_slot))\n }\n}\n"},"186":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_request::PublicCallRequest, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash},\n }, address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL, PUBLIC_DISPATCH_SELECTOR,\n }, header::Header, messaging::l2_to_l1_message::L2ToL1Message, traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_requests: BoundedVec<PublicCallRequest, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_call_request: PublicCallRequest,\n l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_requests: self.public_call_requests.storage,\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<let M: u32>(\n &mut self,\n randomness: Field,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<let M: u32>(\n &mut self,\n note_hash_counter: u32,\n log: [u8; M],\n log_hash: Field,\n ) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let (end_side_effect_counter, returns_hash) = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context,\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n let call_request = PublicCallRequest { call_context, args_hash, counter };\n self.public_call_requests.push(call_request);\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n let call_context = CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n };\n\n self.public_teardown_call_request = PublicCallRequest { call_context, args_hash, counter };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"},"204":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use crate::utils::field::field_from_bytes;\nuse crate::meta::{derive_deserialize, derive_serialize};\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for U128 {\n fn empty() -> Self {\n U128::from_integer(0)\n }\n}\n\npub fn is_empty<T>(item: T) -> bool\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, let N: u32>(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<let N: u32> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n fn from_field(value: Field) -> Self {\n value as bool\n }\n}\nimpl FromField for u1 {\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\n#[derive_via(derive_serialize)]\npub trait Serialize<let N: u32> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<let N: u32> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// docs:start:deserialize\n#[derive_via(derive_deserialize)]\npub trait Deserialize<let N: u32> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl<let N: u32> Deserialize<N> for str<N> {\n fn deserialize(fields: [Field; N]) -> Self {\n str<N>::from(fields.map(|value| value as u8))\n }\n}\n"},"234":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{traits::{Empty, Serialize, Deserialize}, point::Point};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pk_m: Point,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"},"24":{"path":"std/embedded_curve_ops.nr","source":"use crate::ops::arith::{Add, Sub, Neg};\nuse crate::cmp::Eq;\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n let point_array = multi_scalar_mul_array_return(points, scalars);\n EmbeddedCurvePoint { x: point_array[0], y: point_array[1], is_infinite: point_array[2] as bool }\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return<let N: u32>(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [Field; 3] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n let g1 = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n multi_scalar_mul([g1], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// This is a hack because returning an `EmbeddedCurvePoint` from a foreign function in brillig returns a [BrilligVariable::SingleAddr; 2] rather than BrilligVariable::BrilligArray\n// as is defined in the brillig bytecode format. This is a workaround which allows us to fix this without modifying the serialization format.\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n let x_coordinates_match = point1.x == point2.x;\n let y_coordinates_match = point1.y == point2.y;\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: x_coordinates_match,\n };\n // point1_1 is guaranteed to have a different abscissa than point2\n let mut result = embedded_curve_add_unsafe(point1_1, point2);\n result.is_infinite = x_coordinates_match;\n\n // dbl if x_match, y_match\n let double = embedded_curve_add_unsafe(point1, point1);\n result = if double_predicate { double } else { result };\n\n // infinity if x_match, !y_match\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n let mut result_is_infinity = infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [Field; 3] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n embedded_curve_add_unsafe(point1, point2)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n let point_array = embedded_curve_add_array_return(point1, point2);\n let x = point_array[0];\n let y = point_array[1];\n\n EmbeddedCurvePoint { x, y, is_infinite: false }\n}\n"},"25":{"path":"std/field/bn254.nr","source":"use crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nfn compute_lt(x: Field, y: Field, num_bytes: u32) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i];\n let y_byte = y_bytes[num_bytes - 1 - i];\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nfn compute_lte(x: Field, y: Field, num_bytes: u32) -> bool {\n if x == y {\n true\n } else {\n compute_lt(x, y, num_bytes)\n }\n}\n\nunconstrained fn lt_32_hint(x: Field, y: Field) -> bool {\n compute_lt(x, y, 32)\n}\n\nunconstrained fn lte_16_hint(x: Field, y: Field) -> bool {\n compute_lte(x, y, 16)\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n unsafe {\n let borrow = lte_16_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(compute_lt(b, a, 32));\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n compute_lt(b, a, 32)\n } else if a == b {\n false\n } else {\n // Take a hint of the comparison and verify it\n unsafe {\n if lt_32_hint(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{\n decompose, compute_lt, assert_gt, gt, TWO_POW_128, compute_lte, PLO, PHI,\n };\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n fn check_compute_lt() {\n assert(compute_lt(0, 1, 16));\n assert(compute_lt(0, 0x100, 16));\n assert(compute_lt(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lt(0, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_compute_lte() {\n assert(compute_lte(0, 1, 16));\n assert(compute_lte(0, 0x100, 16));\n assert(compute_lte(0x100, TWO_POW_128 - 1, 16));\n assert(!compute_lte(0, TWO_POW_128, 16));\n\n assert(compute_lte(0, 0, 16));\n assert(compute_lte(0x100, 0x100, 16));\n assert(compute_lte(TWO_POW_128 - 1, TWO_POW_128 - 1, 16));\n assert(compute_lte(TWO_POW_128, TWO_POW_128, 16));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"},"259":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_leaf_preimage.nr","source":"global NULLIFIER_LEAF_PREIMAGE_LENGTH: u32 = 3;\n\nuse crate::{\n abis::{read_request::ScopedReadRequest, side_effect::Readable}, hash::compute_siloed_nullifier,\n merkle_tree::leaf_preimage::{LeafPreimage, IndexedTreeLeafPreimage}, traits::{Empty, Hash},\n};\n\npub struct NullifierLeafPreimage {\n nullifier: Field,\n next_nullifier: Field,\n next_index: u32,\n}\n\nimpl Empty for NullifierLeafPreimage {\n fn empty() -> Self {\n Self { nullifier: 0, next_nullifier: 0, next_index: 0 }\n }\n}\n\nimpl Hash for NullifierLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash(self.serialize())\n }\n }\n}\n\nimpl LeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for NullifierLeafPreimage {\n fn get_key(self) -> Field {\n self.nullifier\n }\n\n fn get_next_key(self) -> Field {\n self.next_nullifier\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl Readable<ScopedReadRequest> for NullifierLeafPreimage {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n let siloed_value =\n compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(\n self.nullifier,\n siloed_value,\n \"Value of the nullifier leaf does not match read request\",\n );\n }\n}\n\nimpl NullifierLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.nullifier == 0) & (self.next_nullifier == 0) & (self.next_index == 0)\n }\n\n pub fn serialize(self) -> [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH] {\n [self.nullifier, self.next_nullifier, self.next_index as Field]\n }\n\n pub fn deserialize(fields: [Field; NULLIFIER_LEAF_PREIMAGE_LENGTH]) -> Self {\n Self { nullifier: fields[0], next_nullifier: fields[1], next_index: fields[2] as u32 }\n }\n}\n\nimpl Eq for NullifierLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.nullifier == other.nullifier)\n & (self.next_nullifier == other.next_nullifier)\n & (self.next_index == other.next_index)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NullifierLeafPreimage::empty();\n let serialized = item.serialize();\n let deserialized = NullifierLeafPreimage::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"26":{"path":"std/field/mod.nr","source":"pub mod bn254;\nuse bn254::lt as bn254_lt;\nuse crate::runtime::is_unconstrained;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n assert(BIT_SIZE < modulus_num_bits() as u32);\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_le_bits\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n // docs:end:to_be_bits\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\nmod tests {\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_bytes();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_bytes();\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_be_radix(256);\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bits), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bits: [u8; 8] = field.to_le_radix(256);\n assert_eq(bits, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bits), field);\n }\n // docs:end:to_le_radix_example\n}\n"},"284":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate {\n lhs\n } else {\n rhs\n }\n}\n\npub fn arr_copy_slice<T, let N: u32, let M: u32>(\n src: [T; N],\n mut dst: [T; M],\n offset: u32,\n) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"29":{"path":"std/hash/mod.nr","source":"pub mod poseidon;\npub mod mimc;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::uint128::U128;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator<let N: u32>(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0]\n}\n\n#[field(bn254)]\npub fn derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H>\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n"},"3":{"path":"std/array/mod.nr","source":"use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n}\n"},"305":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self, mut result: [Field; K]) -> [Field; 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 // TODO(#4394)\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"308":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr","source":"use crate::{\n address::{salted_initialization_hash::SaltedInitializationHash, aztec_address::AztecAddress},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator, traits::{ToField, Serialize, Deserialize},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"309":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr","source":"use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"},"312":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, public_keys_hash::PublicKeysHash,\n salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils,\n};\n\n// Aztec address\npub struct AztecAddress {\n inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(poseidon2_hash_with_separator(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n ))\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n functino_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys_hash: PublicKeysHash,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n functino_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys_hash, partial_address)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys_hash() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"},"313":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr","source":"/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"},"317":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr","source":"pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{traits::{Deserialize, Empty, Hash, Serialize}, hash::poseidon2_hash};\n\nglobal POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"},"325":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash}, note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n }, address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX,\n }, merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n recursion::verification_key::VerificationKey, traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n // We assume contract address has already been masked\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n accumulate_sha256(\n [log_hash.contract_address.to_field(), log_hash.log_hash.value],\n )\n }\n}\n\npub fn mask_encrypted_log_hash(scoped_log: ScopedEncryptedLogHash) -> AztecAddress {\n if scoped_log.contract_address.is_zero() {\n AztecAddress::from_field(0)\n } else if (scoped_log.log_hash.randomness == 0) {\n scoped_log.contract_address\n } else {\n AztecAddress::from_field(poseidon2_hash_with_separator(\n [scoped_log.contract_address.to_field(), scoped_log.log_hash.randomness],\n 0,\n ))\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk<let N: u32>(\n _vk: VerificationKey<N>,\n) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly.\npub fn compute_tx_logs_hash(logs: [LogHash; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn compute_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"},"326":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr","source":"use crate::{\n address::{\n aztec_address::AztecAddress, partial_address::PartialAddress,\n public_keys_hash::PublicKeysHash,\n }, public_keys::PublicKeys, contract_class_id::ContractClassId,\n constants::CONTRACT_INSTANCE_LENGTH, traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n salt: Field,\n deployer: AztecAddress,\n contract_class_id: ContractClassId,\n initialization_hash: Field,\n public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys.hash(),\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"},"327":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr","source":"use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n GENERATOR_INDEX__PUBLIC_KEYS_HASH, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_IVPK_M_X,\n DEFAULT_IVPK_M_Y, DEFAULT_OVPK_M_X, DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y,\n }, hash::poseidon2_hash_with_separator, point::POINT_LENGTH,\n traits::{Deserialize, Serialize, Hash},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse dep::std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n npk_m: NpkM,\n ivpk_m: IvpkM,\n ovpk_m: OvpkM,\n tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"},"34":{"path":"std/hash/poseidon2.nr","source":"use crate::hash::Hasher;\nuse crate::default::Default;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"},"35":{"path":"std/hash/sha256.nr","source":"use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE = 16;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeroes.\ntype MSG_BLOCK = [u8; BLOCK_SIZE];\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; BLOCK_SIZE];\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ]; // Intermediate hash, starting with the canonical initial value\n let mut msg_byte_ptr = 0; // Pointer into msg_block\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block[msg_byte_ptr] = 1 << 7;\n let last_block = msg_block;\n msg_byte_ptr = msg_byte_ptr + 1;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_u8_to_u32(msg_block), h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !crate::runtime::is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Convert 64-byte array to array of 16 u32s\nfn msg_u8_to_u32(msg: MSG_BLOCK) -> INT_BLOCK {\n let mut msg32: INT_BLOCK = [0; INT_BLOCK_SIZE];\n\n for i in 0..INT_BLOCK_SIZE {\n let mut msg_field: Field = 0;\n for j in 0..4 {\n msg_field = msg_field * 256 + msg[64 - 4 * (i + 1) + j] as Field;\n }\n msg32[15 - i] = msg_field as u32;\n }\n\n msg32\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeroes.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; BLOCK_SIZE];\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n for k in 0..block_input {\n msg_block[k] = msg[msg_start + k];\n }\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr: u32 = 0; // Message byte pointer\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n\n for k in msg_start..msg_end {\n if k < message_size {\n assert_eq(msg_block[msg_byte_ptr], msg[k]);\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeroes by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n for i in 0..BLOCK_SIZE {\n if i >= msg_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 (i.e. until msg_byte_ptr = 56).\n for i in msg_byte_ptr..MSG_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..8 {\n msg_block[MSG_SIZE_PTR + i] = len_bytes[i];\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n for i in 0..MSG_SIZE_PTR {\n let predicate = (i < msg_byte_ptr) as u8;\n let expected_byte = predicate * last_block[i];\n assert_eq(msg_block[i], expected_byte);\n }\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let len = 8 * message_size;\n let mut reconstructed_len: Field = 0;\n for i in MSG_SIZE_PTR..BLOCK_SIZE {\n reconstructed_len = 256 * reconstructed_len + msg_block[i] as Field;\n }\n assert_eq(reconstructed_len, len as Field);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_u8_to_u32(msg_block), state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[7 - j] as Field).to_le_bytes();\n for k in 0..4 {\n out_h[31 - 4 * j - k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n}\n"},"435":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/main.nr","source":"mod public_key_note;\n\n// Account contract that uses Schnorr signatures for authentication.\n// The signing key is stored in an immutable private note and should be different from the encryption/nullifying key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract SchnorrAccount {\n use dep::std;\n\n use dep::aztec::prelude::{AztecAddress, PrivateContext, PrivateImmutable};\n use dep::aztec::encrypted_logs::encrypted_note_emission::encode_and_encrypt_note;\n use dep::authwit::{\n entrypoint::{app::AppPayload, fee::FeePayload}, account::AccountActions,\n auth_witness::get_auth_witness,\n auth::{compute_authwit_nullifier, compute_authwit_message_hash},\n };\n use dep::aztec::{hash::compute_siloed_nullifier, keys::getters::get_public_keys};\n use dep::aztec::oracle::get_nullifier_membership_witness::get_low_nullifier_membership_witness;\n use dep::aztec::macros::{\n storage::storage, functions::{private, initializer, view, noinitcheck},\n };\n\n use crate::public_key_note::PublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n signing_public_key: PrivateImmutable<PublicKeyNote, Context>,\n }\n\n // Constructs the contract\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: Field, signing_pub_key_y: Field) {\n let this = context.this_address();\n let this_keys = get_public_keys(this);\n // Not emitting outgoing for msg_sender here to not have to register keys for the contract through which we\n // deploy this (typically MultiCallEntrypoint). I think it's ok here as I feel the outgoing here is not that\n // important.\n let mut pub_key_note =\n PublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this_keys.npk_m.hash());\n storage.signing_public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(\n &mut context,\n this_keys.ovpk_m,\n this_keys.ivpk_m,\n this,\n ));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts file\n #[private]\n #[noinitcheck]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // docs:start:is_valid_impl\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.signing_public_key.get_note();\n // Load auth witness\n let witness: [Field; 64] = unsafe { get_auth_witness(outer_hash) };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify signature of the payload bytes\n std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n outer_hash.to_be_bytes::<32>(),\n )\n // docs:end:is_valid_impl\n }\n\n /**\n * @notice Helper function to check validity of private authwitnesses\n * @param consumer The address of the consumer of the message\n * @param message_hash The message hash of the message to check the validity\n * @return True if the message_hash can be consumed, false otherwise\n */\n unconstrained fn lookup_validity(consumer: AztecAddress, inner_hash: Field) -> pub bool {\n let public_key = storage.signing_public_key.view_note();\n\n let message_hash = compute_authwit_message_hash(\n consumer,\n context.chain_id(),\n context.version(),\n inner_hash,\n );\n\n let witness: [Field; 64] = get_auth_witness(message_hash);\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n let valid_in_private = std::schnorr::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n message_hash.to_be_bytes::<32>(),\n );\n\n // Compute the nullifier and check if it is spent\n // This will BLINDLY TRUST the oracle, but the oracle is us, and\n // it is not as part of execution of the contract, so we are good.\n let nullifier = compute_authwit_nullifier(context.this_address(), inner_hash);\n let siloed_nullifier = compute_siloed_nullifier(consumer, nullifier);\n let lower_wit =\n get_low_nullifier_membership_witness(context.block_number(), siloed_nullifier);\n let is_spent = lower_wit.leaf_preimage.nullifier == siloed_nullifier;\n\n !is_spent & valid_in_private\n }\n}\n"},"436":{"path":"/usr/src/noir-projects/noir-contracts/contracts/schnorr_account_contract/src/public_key_note.nr","source":"use dep::aztec::prelude::{NoteHeader, NullifiableNote, PrivateContext};\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::get_nsk_app,\n protocol_types::{\n constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator,\n }, macros::notes::note,\n};\n\n// Stores a public key composed of two fields\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note]\npub struct PublicKeyNote {\n x: Field,\n y: Field,\n // We store the npk_m_hash only to get the secret key to compute the nullifier\n npk_m_hash: Field,\n}\n\nimpl NullifiableNote for PublicKeyNote {\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let secret = context.request_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let secret = get_nsk_app(self.npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n}\n\nimpl PublicKeyNote {\n pub fn new(x: Field, y: Field, npk_m_hash: Field) -> Self {\n PublicKeyNote { x, y, npk_m_hash, header: NoteHeader::empty() }\n }\n}\n"},"58":{"path":"std/option.nr","source":"use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T>\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T>\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T>\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"},"59":{"path":"std/panic.nr","source":"pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"},"7":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\n/// A `BoundedVec<T, MaxLen>` is a growable storage similar to a `Vec<T>` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec<T, N>` should generally be preferred over `Vec<T>` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec<Field, 10> = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec<Field, 10> = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec<Field, 10> {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec<Field, 3> = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three<let N: u32>(v: BoundedVec<u32, N>) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo<let N: u32>(v: BoundedVec<u32, N>) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec<u32, 5> = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 4> = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 5> = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array<let Len: u32>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec<Field, 3> = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec<Field, 5> = BoundedVec::new();\n /// let mut v2: BoundedVec<Field, 7> = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec<let Len: u32>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array<let Len: u32>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<Field, 2> = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec<u32, 3> = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> Eq for BoundedVec<T, MaxLen>\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, let MaxLen: u32, let Len: u32> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec<Field, 5> = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n}\n"},"73":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr","source":"use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{\n GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER,\n GENERATOR_INDEX__AUTHWIT_NULLIFIER, CANONICAL_AUTH_REGISTRY_ADDRESS,\n }, hash::poseidon2_hash_with_separator,\n};\nuse dep::aztec::{context::{PrivateContext, PublicContext, gas::GasOpts}, hash::hash_args_array};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([\n context.msg_sender().to_field(),\n context.selector().to_field(),\n context.args_hash,\n ]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that have authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context\n .static_call_private_function(\n on_behalf_of,\n comptime { FunctionSelector::from_signature(\"verify_private_authwit(Field)\") },\n [inner_hash],\n )\n .unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allow same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` have authorized the current call in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n) {\n let inner_hash = compute_inner_authwit_hash([\n (*context).msg_sender().to_field(),\n (*context).selector().to_field(),\n (*context).get_args_hash(),\n ]);\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` have authorized a speicifc `inner_hash` in the authentication registry\n *\n * Computing the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then making a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n */\npub fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n let result: Field = context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"consume((Field),Field)\") },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default(),\n )\n .deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N],\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash =\n compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computs the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that have authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [consumer.to_field(), chain_id, version, inner_hash],\n GENERATOR_INDEX__AUTHWIT_OUTER,\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub fn set_authorized(context: &mut PublicContext, message_hash: Field, authorize: bool) {\n context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_authorized(Field,bool)\") },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default(),\n )\n .assert_empty();\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub fn set_reject_all(context: &mut PublicContext, reject: bool) {\n context\n .call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_reject_all(bool)\") },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default(),\n )\n .assert_empty();\n}\n"},"75":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr","source":"#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/account.nr","source":"use dep::aztec::{\n context::PrivateContext,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n hash::poseidon2_hash_with_separator,\n};\n\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\nuse crate::auth::{IS_VALID_SELECTOR, compute_authwit_message_hash};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"},"79":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\nuse crate::entrypoint::function_call::FunctionCall;\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"},"80":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"93":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr","source":"use dep::protocol_types::abis::validation_requests::{\n KeyValidationRequest, key_validation_request::KEY_VALIDATION_REQUEST_LENGTH,\n};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"},"96":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, PartialAddress}, public_keys::{PublicKeys, NpkM, IvpkM, OvpkM, TpkM},\n point::Point,\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM {\n inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool },\n },\n ovpk_m: OvpkM {\n inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool },\n },\n tpk_m: TpkM {\n inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool },\n },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"},"98":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr","source":"use dep::protocol_types::address::AztecAddress;\n\n/// Informs the simulator that an encrypted note log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_note_log<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_note_log_oracle_wrapper(note_hash_counter, encrypted_note, counter)\n }\n}\n\n/// Informs the simulator that an encrypted event log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_encrypted_event_log<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_encrypted_event_log_oracle_wrapper(\n contract_address,\n randomness,\n encrypted_event,\n counter,\n )\n }\n}\n\n/// Informs the simulator that an unencrypted log has been emitted, helping it keep track of side-effects and easing\n/// debugging.\npub fn emit_unencrypted_log_private<T>(contract_address: AztecAddress, message: T, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n emit_unencrypted_log_private_oracle_wrapper(contract_address, message, counter)\n }\n}\n\nunconstrained fn emit_encrypted_note_log_oracle_wrapper<let M: u32>(\n note_hash_counter: u32,\n encrypted_note: [u8; M],\n counter: u32,\n) {\n emit_encrypted_note_log_oracle(note_hash_counter, encrypted_note, counter)\n}\n\nunconstrained fn emit_encrypted_event_log_oracle_wrapper<let M: u32>(\n contract_address: AztecAddress,\n randomness: Field,\n encrypted_event: [u8; M],\n counter: u32,\n) {\n emit_encrypted_event_log_oracle(contract_address, randomness, encrypted_event, counter)\n}\n\nunconstrained fn emit_unencrypted_log_private_oracle_wrapper<T>(\n contract_address: AztecAddress,\n message: T,\n counter: u32,\n) {\n let _ = emit_unencrypted_log_private_oracle(contract_address, message, counter);\n}\n\n/// Temporary substitute for `emit_unencrypted_log_private` that is used for handling contract class registration. This\n/// variant returns the log hash, which would be too large to compute inside a circuit.\npub unconstrained fn emit_contract_class_unencrypted_log_private<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {\n emit_contract_class_unencrypted_log_private_oracle(contract_address, message, counter)\n}\n\n// = 480 + 32 * N bytes\n#[oracle(emitEncryptedNoteLog)]\nunconstrained fn emit_encrypted_note_log_oracle<let M: u32>(\n _note_hash_counter: u32,\n _encrypted_note: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitEncryptedEventLog)]\nunconstrained fn emit_encrypted_event_log_oracle<let M: u32>(\n _contract_address: AztecAddress,\n _randomness: Field,\n _encrypted_event: [u8; M],\n _counter: u32,\n) {}\n\n#[oracle(emitUnencryptedLog)]\nunconstrained fn emit_unencrypted_log_private_oracle<T>(\n _contract_address: AztecAddress,\n _message: T,\n _counter: u32,\n) -> Field {}\n\n#[oracle(emitContractClassUnencryptedLog)]\nunconstrained fn emit_contract_class_unencrypted_log_private_oracle<let N: u32>(\n contract_address: AztecAddress,\n message: [Field; N],\n counter: u32,\n) -> Field {}\n"},"99":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr","source":"use dep::protocol_types::{\n address::AztecAddress, contract_instance::ContractInstance, constants::CONTRACT_INSTANCE_LENGTH,\n utils::reader::Reader,\n};\n\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// Returns a ContractInstance plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstance)]\nunconstrained fn get_contract_instance_oracle_avm(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {}\n\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\npub unconstrained fn get_contract_instance_internal_avm(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH + 1] {\n get_contract_instance_oracle_avm(address)\n}\n\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\npub fn get_contract_instance_avm(address: AztecAddress) -> Option<ContractInstance> {\n let mut reader = Reader::new(get_contract_instance_internal_avm(address));\n let found = reader.read();\n if found == 0 {\n Option::none()\n } else {\n Option::some(reader.read_struct(ContractInstance::deserialize))\n }\n}\n"}}}